diff --git a/apps/files/src/components/CustomElementRender.vue b/apps/files/src/components/CustomElementRender.vue index b5bcb8daf2c1f..62e33b06acf0b 100644 --- a/apps/files/src/components/CustomElementRender.vue +++ b/apps/files/src/components/CustomElementRender.vue @@ -23,7 +23,7 @@ - diff --git a/apps/files/src/components/FileEntry.vue b/apps/files/src/components/FileEntry.vue index 3257e161046c9..53928b961c2f9 100644 --- a/apps/files/src/components/FileEntry.vue +++ b/apps/files/src/components/FileEntry.vue @@ -91,8 +91,12 @@ - - + + action?.inline?.(this.source, this.currentView)) }, + // Enabled action that are displayed inline with a custom render function + enabledRenderActions() { + if (!this.active) { + return [] + } + return this.enabledActions.filter(action => typeof action.renderInline === 'function') + }, + // Default actions enabledDefaultActions() { - return this.enabledActions.filter(action => !!action.default) + return this.enabledActions.filter(action => !!action?.default) }, // Actions shown in the menu @@ -407,7 +420,7 @@ export default Vue.extend({ // Showing inline first for the NcActions inline prop ...this.enabledInlineActions, // Then the rest - ...this.enabledActions.filter(action => action.default !== DefaultType.HIDDEN), + ...this.enabledActions.filter(action => action.default !== DefaultType.HIDDEN && typeof action.renderInline !== 'function'), ].filter((value, index, self) => { // Then we filter duplicates to prevent inline actions to be shown twice return index === self.findIndex(action => action.id === value.id) diff --git a/apps/files/src/services/FileAction.ts b/apps/files/src/services/FileAction.ts index 4798128671c36..a4f7e3ddf17a2 100644 --- a/apps/files/src/services/FileAction.ts +++ b/apps/files/src/services/FileAction.ts @@ -74,7 +74,7 @@ interface FileActionData { * If defined, the returned html element will be * appended before the actions menu. */ - renderInline?: (file: Node, view: Navigation) => HTMLElement, + renderInline?: (file: Node, view: Navigation) => Promise, } export class FileAction { diff --git a/apps/files/src/views/FilesList.vue b/apps/files/src/views/FilesList.vue index b14e32879397f..99d7767ebc70d 100644 --- a/apps/files/src/views/FilesList.vue +++ b/apps/files/src/views/FilesList.vue @@ -183,19 +183,24 @@ export default Vue.extend({ return this.isAscSorting ? results : results.reverse() } + const identifiers = [ + // Sort favorites first if enabled + ...this.userConfig.sort_favorites_first ? [v => v.attributes?.favorite !== 1] : [], + // Sort folders first if sorting by name + ...this.sortingMode === 'basename' ? [v => v.type !== 'folder'] : [], + // Use sorting mode if NOT basename (to be able to use displayName too) + ...this.sortingMode !== 'basename' ? [v => v[this.sortingMode]] : [], + // Use displayName if available, fallback to name + v => v.attributes?.displayName || v.basename, + // Finally, use basename if all previous sorting methods failed + v => v.basename, + ] + const orders = new Array(identifiers.length).fill(this.isAscSorting ? 'asc' : 'desc') + return orderBy( [...(this.currentFolder?._children || []).map(this.getNode).filter(file => file)], - [ - // Sort favorites first if enabled - ...this.userConfig.sort_favorites_first ? [v => v.attributes?.favorite !== 1] : [], - // Sort folders first if sorting by name - ...this.sortingMode === 'basename' ? [v => v.type !== 'folder'] : [], - // Use sorting mode - v => v[this.sortingMode], - // Finally, fallback to name - v => v.basename, - ], - this.isAscSorting ? ['asc', 'asc', 'asc'] : ['desc', 'desc', 'desc'], + identifiers, + orders, ) }, diff --git a/apps/files_external/appinfo/routes.php b/apps/files_external/appinfo/routes.php index df0a9922dd7d6..996c6aba0dcc4 100644 --- a/apps/files_external/appinfo/routes.php +++ b/apps/files_external/appinfo/routes.php @@ -62,5 +62,10 @@ 'url' => '/api/v1/mounts', 'verb' => 'GET', ], + [ + 'name' => 'Api#askNativeAuth', + 'url' => '/api/v1/auth', + 'verb' => 'GET', + ], ], ]; diff --git a/apps/files_external/composer/composer/autoload_classmap.php b/apps/files_external/composer/composer/autoload_classmap.php index cf6f72c0fe2b8..b10fc32e10059 100644 --- a/apps/files_external/composer/composer/autoload_classmap.php +++ b/apps/files_external/composer/composer/autoload_classmap.php @@ -96,6 +96,7 @@ 'OCA\\Files_External\\Lib\\Storage\\Swift' => $baseDir . '/../lib/Lib/Storage/Swift.php', 'OCA\\Files_External\\Lib\\VisibilityTrait' => $baseDir . '/../lib/Lib/VisibilityTrait.php', 'OCA\\Files_External\\Listener\\GroupDeletedListener' => $baseDir . '/../lib/Listener/GroupDeletedListener.php', + 'OCA\\Files_External\\Listener\\LoadAdditionalListener' => $baseDir . '/../lib/Listener/LoadAdditionalListener.php', 'OCA\\Files_External\\Listener\\StorePasswordListener' => $baseDir . '/../lib/Listener/StorePasswordListener.php', 'OCA\\Files_External\\Listener\\UserDeletedListener' => $baseDir . '/../lib/Listener/UserDeletedListener.php', 'OCA\\Files_External\\Migration\\DummyUserSession' => $baseDir . '/../lib/Migration/DummyUserSession.php', diff --git a/apps/files_external/composer/composer/autoload_static.php b/apps/files_external/composer/composer/autoload_static.php index 4ba4f602c6bbc..c5406fe3cf861 100644 --- a/apps/files_external/composer/composer/autoload_static.php +++ b/apps/files_external/composer/composer/autoload_static.php @@ -111,6 +111,7 @@ class ComposerStaticInitFiles_External 'OCA\\Files_External\\Lib\\Storage\\Swift' => __DIR__ . '/..' . '/../lib/Lib/Storage/Swift.php', 'OCA\\Files_External\\Lib\\VisibilityTrait' => __DIR__ . '/..' . '/../lib/Lib/VisibilityTrait.php', 'OCA\\Files_External\\Listener\\GroupDeletedListener' => __DIR__ . '/..' . '/../lib/Listener/GroupDeletedListener.php', + 'OCA\\Files_External\\Listener\\LoadAdditionalListener' => __DIR__ . '/..' . '/../lib/Listener/LoadAdditionalListener.php', 'OCA\\Files_External\\Listener\\StorePasswordListener' => __DIR__ . '/..' . '/../lib/Listener/StorePasswordListener.php', 'OCA\\Files_External\\Listener\\UserDeletedListener' => __DIR__ . '/..' . '/../lib/Listener/UserDeletedListener.php', 'OCA\\Files_External\\Migration\\DummyUserSession' => __DIR__ . '/..' . '/../lib/Migration/DummyUserSession.php', diff --git a/apps/files_external/composer/composer/installed.php b/apps/files_external/composer/composer/installed.php index 1a66c7f2416b6..38b67ed04eb74 100644 --- a/apps/files_external/composer/composer/installed.php +++ b/apps/files_external/composer/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b', + 'reference' => '706c141fffce928d344fe2f039da549fad065393', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b', + 'reference' => '706c141fffce928d344fe2f039da549fad065393', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), diff --git a/apps/files_external/css/external.css b/apps/files_external/css/external.css deleted file mode 100644 index ea26e879a0f1b..0000000000000 --- a/apps/files_external/css/external.css +++ /dev/null @@ -1,4 +0,0 @@ -.files-filestable tbody tr.externalErroredRow { - /* TODO: As soon as firefox supports it: color-mix(in srgb, var(--color-error) 15%, var(--color-main-background)) */ - background-color: rgba(255, 0, 0, 0.13); -} diff --git a/apps/files_external/js/app.js b/apps/files_external/js/app.js deleted file mode 100644 index 4f91e2e78b0e5..0000000000000 --- a/apps/files_external/js/app.js +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2014 Vincent Petry - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -if (!OCA.Files_External) { - /** - * @namespace - */ - OCA.Files_External = {}; -} -/** - * @namespace - */ -OCA.Files_External.App = { - - fileList: null, - - initList: function($el) { - if (this.fileList) { - return this.fileList; - } - - this.fileList = new OCA.Files_External.FileList( - $el, - { - fileActions: this._createFileActions() - } - ); - - this._extendFileList(this.fileList); - this.fileList.appName = t('files_external', 'External storage'); - return this.fileList; - }, - - removeList: function() { - if (this.fileList) { - this.fileList.$fileList.empty(); - } - }, - - _createFileActions: function() { - // inherit file actions from the files app - var fileActions = new OCA.Files.FileActions(); - fileActions.registerDefaultActions(); - - // when the user clicks on a folder, redirect to the corresponding - // folder in the files app instead of opening it directly - fileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename, context) { - OCA.Files.App.setActiveView('files', {silent: true}); - OCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true); - }); - fileActions.setDefault('dir', 'Open'); - return fileActions; - }, - - _extendFileList: function(fileList) { - // remove size column from summary - fileList.fileSummary.$el.find('.filesize').remove(); - } -}; - -window.addEventListener('DOMContentLoaded', function() { - $('#app-content-extstoragemounts').on('show', function(e) { - OCA.Files_External.App.initList($(e.target)); - }); - $('#app-content-extstoragemounts').on('hide', function() { - OCA.Files_External.App.removeList(); - }); - - /* Status Manager */ - if ($('#filesApp').val()) { - - $('#app-content-files') - .add('#app-content-extstoragemounts') - .on('changeDirectory', function(e){ - if (e.dir === '/') { - var mount_point = e.previousDir.split('/', 2)[1]; - // Every time that we return to / root folder from a mountpoint, mount_point status is rechecked - OCA.Files_External.StatusManager.getMountPointList(function() { - OCA.Files_External.StatusManager.recheckConnectivityForMount([mount_point], true); - }); - } - }) - .on('fileActionsReady', function(e){ - if ($.isArray(e.$files)) { - if (OCA.Files_External.StatusManager.mountStatus === null || - OCA.Files_External.StatusManager.mountPointList === null || - _.size(OCA.Files_External.StatusManager.mountStatus) !== _.size(OCA.Files_External.StatusManager.mountPointList)) { - // Will be the very first check when the files view will be loaded - OCA.Files_External.StatusManager.launchFullConnectivityCheckOneByOne(); - } else { - // When we change between general files view and external files view - OCA.Files_External.StatusManager.getMountPointList(function(){ - var fileNames = []; - $.each(e.$files, function(key, value){ - fileNames.push(value.attr('data-file')); - }); - // Recheck if launched but work from cache - OCA.Files_External.StatusManager.recheckConnectivityForMount(fileNames, false); - }); - } - } - }); - } - /* End Status Manager */ -}); diff --git a/apps/files_external/js/mountsfilelist.js b/apps/files_external/js/mountsfilelist.js deleted file mode 100644 index 3b88ec070db25..0000000000000 --- a/apps/files_external/js/mountsfilelist.js +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 2014 Vincent Petry - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ -(function() { - - /** - * @class OCA.Files_External.FileList - * @augments OCA.Files.FileList - * - * @classdesc External storage file list. - * - * Displays a list of mount points visible - * for the current user. - * - * @param $el container element with existing markup for the .files-controls - * and a table - * @param [options] map of options, see other parameters - **/ - var FileList = function($el, options) { - this.initialize($el, options); - }; - - FileList.prototype = _.extend({}, OCA.Files.FileList.prototype, - /** @lends OCA.Files_External.FileList.prototype */ { - appName: 'External storage', - - _allowSelection: false, - - /** - * @private - */ - initialize: function($el, options) { - OCA.Files.FileList.prototype.initialize.apply(this, arguments); - if (this.initialized) { - return; - } - }, - - /** - * @param {OCA.Files_External.MountPointInfo} fileData - */ - _createRow: function(fileData) { - // TODO: hook earlier and render the whole row here - var $tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments); - var $scopeColumn = $(''); - var $backendColumn = $(''); - var scopeText = t('files_external', 'Personal'); - if (fileData.scope === 'system') { - scopeText = t('files_external', 'System'); - } - $tr.find('.filesize,.date').remove(); - $scopeColumn.find('span').text(scopeText); - $backendColumn.text(fileData.backend); - $tr.find('td.filename').after($scopeColumn).after($backendColumn); - return $tr; - }, - - updateEmptyContent: function() { - var dir = this.getCurrentDirectory(); - if (dir === '/') { - // root has special permissions - this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); - } - else { - OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments); - } - }, - - getDirectoryPermissions: function() { - return OC.PERMISSION_READ | OC.PERMISSION_DELETE; - }, - - updateStorageStatistics: function() { - // no op because it doesn't have - // storage info like free space / used space - }, - - reload: function() { - this.showMask(); - if (this._reloadCall?.abort) { - this._reloadCall.abort(); - } - - // there is only root - this._setCurrentDir('/', false); - - this._reloadCall = $.ajax({ - url: OC.linkToOCS('apps/files_external/api/v1') + 'mounts', - data: { - format: 'json' - }, - type: 'GET', - beforeSend: function(xhr) { - xhr.setRequestHeader('OCS-APIREQUEST', 'true'); - } - }); - var callBack = this.reloadCallback.bind(this); - return this._reloadCall.then(callBack, callBack); - }, - - reloadCallback: function(result) { - delete this._reloadCall; - this.hideMask(); - - if (result.ocs && result.ocs.data) { - this.setFiles(this._makeFiles(result.ocs.data)); - return true; - } - return false; - }, - - /** - * Converts the OCS API response data to a file info - * list - * @param OCS API mounts array - * @return array of file info maps - */ - _makeFiles: function(data) { - var files = _.map(data, function(fileData) { - fileData.icon = OC.imagePath('core', 'filetypes/folder-external'); - fileData.mountType = 'external'; - return fileData; - }); - - files.sort(this._sortComparator); - - return files; - } - }); - - /** - * Mount point info attributes. - * - * @typedef {Object} OCA.Files_External.MountPointInfo - * - * @property {String} name mount point name - * @property {String} scope mount point scope "personal" or "system" - * @property {String} backend external storage backend name - */ - - OCA.Files_External.FileList = FileList; -})(); diff --git a/apps/files_external/js/oauth1.js b/apps/files_external/js/oauth1.js deleted file mode 100644 index 0fee36077c63f..0000000000000 --- a/apps/files_external/js/oauth1.js +++ /dev/null @@ -1,82 +0,0 @@ -window.addEventListener('DOMContentLoaded', function() { - - function displayGranted($tr) { - $tr.find('.configuration input.auth-param').attr('disabled', 'disabled').addClass('disabled-success'); - } - - OCA.Files_External.Settings.mountConfig.whenSelectAuthMechanism(function($tr, authMechanism, scheme, onCompletion) { - if (authMechanism === 'oauth1::oauth1') { - var config = $tr.find('.configuration'); - config.append($(document.createElement('input')) - .addClass('button auth-param') - .attr('type', 'button') - .attr('value', t('files_external', 'Grant access')) - .attr('name', 'oauth1_grant') - ); - - onCompletion.then(function() { - var configured = $tr.find('[data-parameter="configured"]'); - if ($(configured).val() == 'true') { - displayGranted($tr); - } else { - var app_key = $tr.find('.configuration [data-parameter="app_key"]').val(); - var app_secret = $tr.find('.configuration [data-parameter="app_secret"]').val(); - if (app_key != '' && app_secret != '') { - var pos = window.location.search.indexOf('oauth_token') + 12; - var token = $tr.find('.configuration [data-parameter="token"]'); - if (pos != -1 && window.location.search.substr(pos, $(token).val().length) == $(token).val()) { - var token_secret = $tr.find('.configuration [data-parameter="token_secret"]'); - var statusSpan = $tr.find('.status span'); - statusSpan.removeClass(); - statusSpan.addClass('waiting'); - $.post(OC.filePath('files_external', 'ajax', 'oauth1.php'), { step: 2, app_key: app_key, app_secret: app_secret, request_token: $(token).val(), request_token_secret: $(token_secret).val() }, function(result) { - if (result && result.status == 'success') { - $(token).val(result.access_token); - $(token_secret).val(result.access_token_secret); - $(configured).val('true'); - OCA.Files_External.Settings.mountConfig.saveStorageConfig($tr, function(status) { - if (status) { - displayGranted($tr); - } - }); - } else { - OC.dialogs.alert(result.data.message, t('files_external', 'Error configuring OAuth1')); - } - }); - } - } - } - }); - } - }); - - $('#externalStorage').on('click', '[name="oauth1_grant"]', function(event) { - event.preventDefault(); - var tr = $(this).parent().parent(); - var app_key = $(this).parent().find('[data-parameter="app_key"]').val(); - var app_secret = $(this).parent().find('[data-parameter="app_secret"]').val(); - if (app_key != '' && app_secret != '') { - var configured = $(this).parent().find('[data-parameter="configured"]'); - var token = $(this).parent().find('[data-parameter="token"]'); - var token_secret = $(this).parent().find('[data-parameter="token_secret"]'); - $.post(OC.filePath('files_external', 'ajax', 'oauth1.php'), { step: 1, app_key: app_key, app_secret: app_secret, callback: location.protocol + '//' + location.host + location.pathname }, function(result) { - if (result && result.status == 'success') { - $(configured).val('false'); - $(token).val(result.data.request_token); - $(token_secret).val(result.data.request_token_secret); - OCA.Files_External.Settings.mountConfig.saveStorageConfig(tr, function() { - window.location = result.data.url; - }); - } else { - OC.dialogs.alert(result.data.message, t('files_external', 'Error configuring OAuth1')); - } - }); - } else { - OC.dialogs.alert( - t('files_external', 'Please provide a valid app key and secret.'), - t('files_external', 'Error configuring OAuth1') - ); - } - }); - -}); diff --git a/apps/files_external/js/oauth2.js b/apps/files_external/js/oauth2.js deleted file mode 100644 index 086a95f038fa1..0000000000000 --- a/apps/files_external/js/oauth2.js +++ /dev/null @@ -1,96 +0,0 @@ -window.addEventListener('DOMContentLoaded', function() { - - function displayGranted($tr) { - $tr.find('.configuration input.auth-param').attr('disabled', 'disabled').addClass('disabled-success'); - } - - OCA.Files_External.Settings.mountConfig.whenSelectAuthMechanism(function($tr, authMechanism, scheme, onCompletion) { - if (authMechanism === 'oauth2::oauth2') { - var config = $tr.find('.configuration'); - config.append($(document.createElement('input')) - .addClass('button auth-param') - .attr('type', 'button') - .attr('value', t('files_external', 'Grant access')) - .attr('name', 'oauth2_grant') - ); - - onCompletion.then(function() { - var configured = $tr.find('[data-parameter="configured"]'); - if ($(configured).val() == 'true') { - displayGranted($tr); - } else { - var client_id = $tr.find('.configuration [data-parameter="client_id"]').val(); - var client_secret = $tr.find('.configuration [data-parameter="client_secret"]') - .val(); - if (client_id != '' && client_secret != '') { - var params = {}; - window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { - params[key] = value; - }); - if (params['code'] !== undefined) { - var token = $tr.find('.configuration [data-parameter="token"]'); - var statusSpan = $tr.find('.status span'); - statusSpan.removeClass(); - statusSpan.addClass('waiting'); - $.post(OC.filePath('files_external', 'ajax', 'oauth2.php'), - { - step: 2, - client_id: client_id, - client_secret: client_secret, - redirect: location.protocol + '//' + location.host + location.pathname, - code: params['code'], - }, function(result) { - if (result && result.status == 'success') { - $(token).val(result.data.token); - $(configured).val('true'); - OCA.Files_External.Settings.mountConfig.saveStorageConfig($tr, function(status) { - if (status) { - displayGranted($tr); - } - }); - } else { - OC.dialogs.alert(result.data.message, - t('files_external', 'Error configuring OAuth2') - ); - } - } - ); - } - } - } - }); - } - }); - - $('#externalStorage').on('click', '[name="oauth2_grant"]', function(event) { - event.preventDefault(); - var tr = $(this).parent().parent(); - var configured = $(this).parent().find('[data-parameter="configured"]'); - var client_id = $(this).parent().find('[data-parameter="client_id"]').val(); - var client_secret = $(this).parent().find('[data-parameter="client_secret"]').val(); - if (client_id != '' && client_secret != '') { - var token = $(this).parent().find('[data-parameter="token"]'); - $.post(OC.filePath('files_external', 'ajax', 'oauth2.php'), - { - step: 1, - client_id: client_id, - client_secret: client_secret, - redirect: location.protocol + '//' + location.host + location.pathname, - }, function(result) { - if (result && result.status == 'success') { - $(configured).val('false'); - $(token).val('false'); - OCA.Files_External.Settings.mountConfig.saveStorageConfig(tr, function(status) { - window.location = result.data.url; - }); - } else { - OC.dialogs.alert(result.data.message, - t('files_external', 'Error configuring OAuth2') - ); - } - } - ); - } - }); - -}); diff --git a/apps/files_external/js/public_key.js b/apps/files_external/js/public_key.js deleted file mode 100644 index 7fa47f09f1b69..0000000000000 --- a/apps/files_external/js/public_key.js +++ /dev/null @@ -1,64 +0,0 @@ -window.addEventListener('DOMContentLoaded', function() { - - OCA.Files_External.Settings.mountConfig.whenSelectAuthMechanism(function($tr, authMechanism, scheme, onCompletion) { - if (scheme === 'publickey' && authMechanism === 'publickey::rsa') { - var config = $tr.find('.configuration'); - if ($(config).find('[name="public_key_generate"]').length === 0) { - setupTableRow($tr, config); - onCompletion.then(function() { - // If there's no private key, build one - if (0 === $(config).find('[data-parameter="private_key"]').val().length) { - generateKeys($tr); - } - }); - } - } - }); - - $('#externalStorage').on('click', '[name="public_key_generate"]', function(event) { - event.preventDefault(); - var tr = $(this).parent().parent(); - generateKeys(tr); - }); - - function setupTableRow(tr, config) { - var selectList = document.createElement('select'); - selectList.id = 'keyLength'; - - var options = [1024, 2048, 4096]; - for (var i = 0; i < options.length; i++) { - var option = document.createElement('option'); - option.value = options[i]; - option.text = options[i]; - selectList.appendChild(option); - } - - $(config).append(selectList); - - $(config).append($(document.createElement('input')) - .addClass('button auth-param') - .attr('type', 'button') - .attr('value', t('files_external', 'Generate keys')) - .attr('name', 'public_key_generate') - ); - } - - function generateKeys(tr) { - var config = $(tr).find('.configuration'); - var keyLength = config.find('#keyLength').val(); - - $.post(OC.filePath('files_external', 'ajax', 'public_key.php'), { - keyLength: keyLength - }, function(result) { - if (result && result.status === 'success') { - $(config).find('[data-parameter="public_key"]').val(result.data.public_key).keyup(); - $(config).find('[data-parameter="private_key"]').val(result.data.private_key); - OCA.Files_External.Settings.mountConfig.saveStorageConfig(tr, function() { - // Nothing to do - }); - } else { - OC.dialogs.alert(result.data.message, t('files_external', 'Error generating key pair') ); - } - }); - } -}); diff --git a/apps/files_external/js/rollingqueue.js b/apps/files_external/js/rollingqueue.js deleted file mode 100644 index df3797ada89b1..0000000000000 --- a/apps/files_external/js/rollingqueue.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * ownCloud - * - * @author Juan Pablo Villafañez Ramos - * @author Jesus Macias Portela - * @copyright (C) 2014 ownCloud, Inc. - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -(function(){ -/** - * Launch several functions at thee same time. The number of functions - * running at the same time is controlled by the queueWindow param - * - * The function list come in the following format: - * - * var flist = [ - * { - * funcName: function () { - * var d = $.Deferred(); - * setTimeout(function(){d.resolve();}, 1000); - * return d; - * } - * }, - * { - * funcName: $.get, - * funcArgs: [ - * OC.filePath('files_external', 'ajax', 'connectivityCheck.php'), - * {}, - * function () { - * console.log('titoooo'); - * } - * ] - * }, - * { - * funcName: $.get, - * funcArgs: [ - * OC.filePath('files_external', 'ajax', 'connectivityCheck.php') - * ], - * done: function () { - * console.log('yuupi'); - * }, - * always: function () { - * console.log('always done'); - * } - * } - *]; - * - * functions MUST implement the deferred interface - * - * @param functionList list of functions that the queue will run - * (check example above for the expected format) - * @param queueWindow specify the number of functions that will - * be executed at the same time - */ -var RollingQueue = function (functionList, queueWindow, callback) { - this.queueWindow = queueWindow || 1; - this.functionList = functionList; - this.callback = callback; - this.counter = 0; - this.runQueue = function() { - this.callbackCalled = false; - this.deferredsList = []; - if (!$.isArray(this.functionList)) { - throw "functionList must be an array"; - } - - for (var i = 0; i < this.queueWindow; i++) { - this.launchNext(); - } - }; - - this.hasNext = function() { - return (this.counter in this.functionList); - }; - - this.launchNext = function() { - var currentCounter = this.counter++; - if (currentCounter in this.functionList) { - var funcData = this.functionList[currentCounter]; - if ($.isFunction(funcData.funcName)) { - var defObj = funcData.funcName.apply(funcData.funcName, funcData.funcArgs); - this.deferredsList.push(defObj); - if ($.isFunction(funcData.done)) { - defObj.done(funcData.done); - } - - if ($.isFunction(funcData.fail)) { - defObj.fail(funcData.fail); - } - - if ($.isFunction(funcData.always)) { - defObj.always(funcData.always); - } - - if (this.hasNext()) { - var self = this; - defObj.always(function(){ - _.defer($.proxy(function(){ - self.launchNext(); - }, self)); - }); - } else { - if (!this.callbackCalled) { - this.callbackCalled = true; - if ($.isFunction(this.callback)) { - $.when.apply($, this.deferredsList) - .always($.proxy(function(){ - this.callback(); - }, this) - ); - } - } - } - return defObj; - } - } - return false; - }; -}; - -if (!OCA.Files_External) { - OCA.Files_External = {}; -} - -if (!OCA.Files_External.StatusManager) { - OCA.Files_External.StatusManager = {}; -} - -OCA.Files_External.StatusManager.RollingQueue = RollingQueue; - -})(); diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js deleted file mode 100644 index 5f94192ea3535..0000000000000 --- a/apps/files_external/js/statusmanager.js +++ /dev/null @@ -1,613 +0,0 @@ -/** - * ownCloud - * - * @author Juan Pablo Villafañez Ramos - * @author Jesus Macias Portela - * @copyright (C) 2014 ownCloud, Inc. - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -/** @global Handlebars */ - -if (!OCA.Files_External) { - OCA.Files_External = {}; -} - -if (!OCA.Files_External.StatusManager) { - OCA.Files_External.StatusManager = {}; -} - -OCA.Files_External.StatusManager = { - - mountStatus: null, - mountPointList: null, - - /** - * Function - * @param {callback} afterCallback - */ - - getMountStatus: function (afterCallback) { - var self = this; - if (typeof afterCallback !== 'function' || self.isGetMountStatusRunning) { - return; - } - - if (self.mountStatus) { - afterCallback(self.mountStatus); - } - }, - - /** - * Function Check mount point status from cache - * @param {string} mount_point - */ - - getMountPointListElement: function (mount_point) { - var element; - $.each(this.mountPointList, function (key, value) { - if (value.mount_point === mount_point) { - element = value; - return false; - } - }); - return element; - }, - - /** - * Function Check mount point status from cache - * @param {string} mount_point - * @param {string} mount_point - */ - - getMountStatusForMount: function (mountData, afterCallback) { - var self = this; - if (typeof afterCallback !== 'function' || self.isGetMountStatusRunning) { - return $.Deferred().resolve(); - } - - var defObj; - if (self.mountStatus[mountData.mount_point]) { - defObj = $.Deferred(); - afterCallback(mountData, self.mountStatus[mountData.mount_point]); - defObj.resolve(); // not really useful, but it'll keep the same behaviour - } else { - defObj = $.ajax({ - type: 'GET', - url: OC.getRootPath() + '/index.php/apps/files_external/' + ((mountData.type === 'personal') ? 'userstorages' : 'userglobalstorages') + '/' + mountData.id, - data: {'testOnly' : false}, - success: function (response) { - if (response && response.status === 0) { - self.mountStatus[mountData.mount_point] = response; - } else { - var statusCode = response.status ? response.status : 1; - var statusMessage = response.statusMessage ? response.statusMessage : t('files_external', 'Empty response from the server') - // failure response with error message - self.mountStatus[mountData.mount_point] = { - type: mountData.type, - status: statusCode, - id: mountData.id, - error: statusMessage, - userProvided: response.userProvided, - authMechanism: response.authMechanism, - canEdit: response.can_edit, - }; - } - afterCallback(mountData, self.mountStatus[mountData.mount_point]); - }, - error: function (jqxhr, state, error) { - var message; - if (mountData.location === 3) { - // In this case the error is because mount point use Login credentials and don't exist in the session - message = t('files_external', 'Couldn\'t access. Please log out and in again to activate this mount point'); - } else { - message = t('files_external', 'Couldn\'t get the information from the remote server: {code} {type}', { - code: jqxhr.status, - type: error - }); - } - self.mountStatus[mountData.mount_point] = { - type: mountData.type, - status: 1, - location: mountData.location, - error: message - }; - afterCallback(mountData, self.mountStatus[mountData.mount_point]); - } - }); - } - return defObj; - }, - - /** - * Function to get external mount point list from the files_external API - * @param {Function} afterCallback function to be executed - */ - - getMountPointList: function (afterCallback) { - var self = this; - if (typeof afterCallback !== 'function' || self.isGetMountPointListRunning) { - return; - } - - if (self.mountPointList) { - afterCallback(self.mountPointList); - } else { - self.isGetMountPointListRunning = true; - $.ajax({ - type: 'GET', - url: OC.linkToOCS('apps/files_external/api/v1') + 'mounts?format=json', - success: function (response) { - self.mountPointList = []; - _.each(response.ocs.data, function (mount) { - var element = {}; - element.mount_point = mount.name; - element.type = mount.scope; - element.location = ""; - element.id = mount.id; - element.backendText = mount.backend; - element.backend = mount.class; - - self.mountPointList.push(element); - }); - afterCallback(self.mountPointList); - }, - error: function (jqxhr, state, error) { - self.mountPointList = []; - OC.Notification.show(t('files_external', 'Couldn\'t get the list of external mount points: {type}', - {type: error}), {type: 'error'} - ); - }, - complete: function () { - self.isGetMountPointListRunning = false; - } - }); - } - }, - - /** - * Function to manage action when a mountpoint status = 1 (Errored). Show a dialog to be redirected to settings page. - * @param {string} name MountPoint Name - */ - - manageMountPointError: function (name) { - this.getMountStatus($.proxy(function (allMountStatus) { - if (allMountStatus.hasOwnProperty(name) && allMountStatus[name].status > 0 && allMountStatus[name].status < 7) { - var mountData = allMountStatus[name]; - if (mountData.type === "system") { - if (mountData.userProvided || mountData.authMechanism === 'password::global::user') { - // personal mount whit credentials problems - this.showCredentialsDialog(name, mountData); - } else if (mountData.canEdit) { - OC.dialogs.confirm(t('files_external', 'There was an error with message: ') + mountData.error + '. Do you want to review mount point config in admin settings page?', t('files_external', 'External mount error'), function (e) { - if (e === true) { - OC.redirect(OC.generateUrl('/settings/admin/externalstorages')); - } - }); - } else { - OC.dialogs.info(t('files_external', 'There was an error with message: ') + mountData.error + '. Please contact your system administrator.', t('files_external', 'External mount error'), () => {}); - } - } else { - OC.dialogs.confirm(t('files_external', 'There was an error with message: ') + mountData.error + '. Do you want to review mount point config in personal settings page?', t('files_external', 'External mount error'), function (e) { - if (e === true) { - OC.redirect(OC.generateUrl('/settings/personal#' + t('files_external', 'external-storage'))); - } - }); - } - } - }, this)); - }, - - /** - * Function to process a mount point in relation with their status, Called from Async Queue. - * @param {object} mountData - * @param {object} mountStatus - */ - - processMountStatusIndividual: function (mountData, mountStatus) { - - var mountPoint = mountData.mount_point; - if (mountStatus.status > 0) { - var trElement = FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(mountPoint)); - - var route = OCA.Files_External.StatusManager.Utils.getIconRoute(trElement) + '-error'; - - if (OCA.Files_External.StatusManager.Utils.isCorrectViewAndRootFolder()) { - OCA.Files_External.StatusManager.Utils.showIconError(mountPoint, $.proxy(OCA.Files_External.StatusManager.manageMountPointError, OCA.Files_External.StatusManager), route); - } - return false; - } else { - if (OCA.Files_External.StatusManager.Utils.isCorrectViewAndRootFolder()) { - OCA.Files_External.StatusManager.Utils.restoreFolder(mountPoint); - OCA.Files_External.StatusManager.Utils.toggleLink(mountPoint, true, true); - } - return true; - } - }, - - /** - * Function to process a mount point in relation with their status - * @param {object} mountData - * @param {object} mountStatus - */ - - processMountList: function (mountList) { - var elementList = null; - $.each(mountList, function (name, value) { - var trElement = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point)); - trElement.attr('data-external-backend', value.backend); - if (elementList) { - elementList = elementList.add(trElement); - } else { - elementList = trElement; - } - }); - - if (elementList instanceof $) { - if (OCA.Files_External.StatusManager.Utils.isCorrectViewAndRootFolder()) { - // Put their custom icon - OCA.Files_External.StatusManager.Utils.changeFolderIcon(elementList); - // Save default view - OCA.Files_External.StatusManager.Utils.storeDefaultFolderIconAndBgcolor(elementList); - OCA.Files_External.StatusManager.Utils.toggleLink(elementList.find('a.name'), false, false); - } - } - }, - - /** - * Function to process the whole mount point list in relation with their status (Async queue) - */ - - launchFullConnectivityCheckOneByOne: function () { - var self = this; - this.getMountPointList(function (list) { - // check if we have a list first - if (list === undefined && !self.emptyWarningShown) { - self.emptyWarningShown = true; - OC.Notification.show(t('files_external', 'Couldn\'t fetch list of Windows network drive mount points: Empty response from server'), - {type: 'error'} - ); - return; - } - if (list && list.length > 0) { - self.processMountList(list); - - if (!self.mountStatus) { - self.mountStatus = {}; - } - - var ajaxQueue = []; - $.each(list, function (key, value) { - var queueElement = { - funcName: $.proxy(self.getMountStatusForMount, self), - funcArgs: [value, - $.proxy(self.processMountStatusIndividual, self)] - }; - ajaxQueue.push(queueElement); - }); - - var rolQueue = new OCA.Files_External.StatusManager.RollingQueue(ajaxQueue, 4, function () { - if (!self.notificationHasShown) { - $.each(self.mountStatus, function (key, value) { - if (value.status === 1) { - self.notificationHasShown = true; - } - }); - } - }); - rolQueue.runQueue(); - } - }); - }, - - - /** - * Function to process a mount point list in relation with their status (Async queue) - * @param {object} mountListData - * @param {boolean} recheck delete cached info and force api call to check mount point status - */ - - launchPartialConnectivityCheck: function (mountListData, recheck) { - if (mountListData.length === 0) { - return; - } - - var self = this; - var ajaxQueue = []; - $.each(mountListData, function (key, value) { - if (recheck && value.mount_point in self.mountStatus) { - delete self.mountStatus[value.mount_point]; - } - var queueElement = { - funcName: $.proxy(self.getMountStatusForMount, self), - funcArgs: [value, - $.proxy(self.processMountStatusIndividual, self)] - }; - ajaxQueue.push(queueElement); - }); - new OCA.Files_External.StatusManager.RollingQueue(ajaxQueue, 4).runQueue(); - }, - - - /** - * Function to relaunch some mount point status check - * @param {string} mountListNames - * @param {boolean} recheck delete cached info and force api call to check mount point status - */ - - recheckConnectivityForMount: function (mountListNames, recheck) { - if (mountListNames.length === 0) { - return; - } - - var self = this; - var mountListData = []; - - if (!self.mountStatus) { - self.mountStatus = {}; - } - - $.each(mountListNames, function (key, value) { - var mountData = self.getMountPointListElement(value); - if (mountData) { - mountListData.push(mountData); - } - }); - - // for all mounts in the list, delete the cached status values - if (recheck) { - $.each(mountListData, function (key, value) { - if (value.mount_point in self.mountStatus) { - delete self.mountStatus[value.mount_point]; - } - }); - } - - self.processMountList(mountListData); - self.launchPartialConnectivityCheck(mountListData, recheck); - }, - - credentialsDialogTemplate: - '
' + - '
{{credentials_text}}
' + - '
' + - '' + - '' + - '
' + - '
', - - /** - * Function to display custom dialog to enter credentials - * @param {any} mountPoint - - * @param {any} mountData - - */ - showCredentialsDialog: function (mountPoint, mountData) { - var dialog = $(OCA.Files_External.Templates.credentialsDialog({ - credentials_text: t('files_external', 'Please enter the credentials for the {mount} mount', { - 'mount': mountPoint - }), - placeholder_username: t('files_external', 'Username'), - placeholder_password: t('files_external', 'Password') - })); - - $('body').append(dialog); - - var apply = function () { - var username = dialog.find('[name=username]').val(); - var password = dialog.find('[name=password]').val(); - var endpoint = OC.generateUrl('apps/files_external/userglobalstorages/{id}', { - id: mountData.id - }); - $('.oc-dialog-close').hide(); - $.ajax({ - type: 'PUT', - url: endpoint, - data: { - backendOptions: { - user: username, - password: password - } - }, - success: function (data) { - OC.Notification.show(t('files_external', 'Credentials saved'), {type: 'success'}); - dialog.ocdialog('close'); - /* Trigger status check again */ - OCA.Files_External.StatusManager.recheckConnectivityForMount([OC.basename(data.mountPoint)], true); - }, - error: function () { - $('.oc-dialog-close').show(); - OC.Notification.show(t('files_external', 'Credentials saving failed'), {type: 'error'}); - } - }); - return false; - }; - - var ocdialogParams = { - modal: true, - title: t('files_external', 'Credentials required'), - buttons: [{ - text: t('files_external', 'Save'), - click: apply, - closeOnEscape: true - }], - closeOnExcape: true - }; - - dialog.ocdialog(ocdialogParams) - .bind('ocdialogclose', function () { - dialog.ocdialog('destroy').remove(); - }); - - dialog.find('form').on('submit', apply); - dialog.find('form input:first').focus(); - dialog.find('form input').keyup(function (e) { - if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { - $(e.target).closest('form').submit(); - return false; - } else { - return true; - } - }); - } -}; - -OCA.Files_External.StatusManager.Utils = { - - showIconError: function (folder, clickAction, errorImageUrl) { - var imageUrl = "url(" + errorImageUrl + ")"; - var trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); - this.changeFolderIcon(folder, imageUrl); - this.toggleLink(folder, false, clickAction); - trFolder.addClass('externalErroredRow'); - }, - - /** - * @param folder string with the folder or jQuery element pointing to the tr element - */ - storeDefaultFolderIconAndBgcolor: function (folder) { - var trFolder; - if (folder instanceof $) { - trFolder = folder; - } else { - trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); //$('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); - } - trFolder.each(function () { - var thisElement = $(this); - if (thisElement.data('oldbgcolor') === undefined) { - thisElement.data('oldbgcolor', thisElement.css('background-color')); - } - }); - - var icon = trFolder.find('td.filename div.thumbnail'); - icon.each(function () { - var thisElement = $(this); - if (thisElement.data('oldImage') === undefined) { - thisElement.data('oldImage', thisElement.css('background-image')); - } - }); - }, - - /** - * @param folder string with the folder or jQuery element pointing to the tr element - */ - restoreFolder: function (folder) { - var trFolder; - if (folder instanceof $) { - trFolder = folder; - } else { - // can't use here FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); return incorrect instance of filelist - trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); - } - var tdChilds = trFolder.find("td.filename div.thumbnail"); - tdChilds.each(function () { - var thisElement = $(this); - thisElement.css('background-image', thisElement.data('oldImage')); - }); - }, - - /** - * @param folder string with the folder or jQuery element pointing to the first td element - * of the tr matching the folder name - */ - changeFolderIcon: function (filename) { - var file; - var route; - if (filename instanceof $) { - //trElementList - $.each(filename, function (index) { - route = OCA.Files_External.StatusManager.Utils.getIconRoute($(this)); - $(this).attr("data-icon", route); - $(this).find('td.filename div.thumbnail').css('background-image', "url(" + route + ")").css('display', 'none').css('display', 'inline'); - }); - } else { - file = $(".files-fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename div.thumbnail"); - var parentTr = file.parents('tr:first'); - route = OCA.Files_External.StatusManager.Utils.getIconRoute(parentTr); - parentTr.attr("data-icon", route); - file.css('background-image', "url(" + route + ")").css('display', 'none').css('display', 'inline'); - } - }, - - /** - * @param backend string with the name of the external storage backend - * of the tr matching the folder name - */ - getIconRoute: function (tr) { - if (OCA.Theming) { - var icon = OC.generateUrl('/apps/theming/img/core/filetypes/folder-external.svg?v=' + OCA.Theming.cacheBuster); - } else { - var icon = OC.imagePath('core', 'filetypes/folder-external'); - } - var backend = null; - - if (tr instanceof $) { - backend = tr.attr('data-external-backend'); - } - - switch (backend) { - case 'windows_network_drive': - icon = OC.imagePath('windows_network_drive', 'folder-windows'); - break; - } - - return icon; - }, - - toggleLink: function (filename, active, action) { - var link; - if (filename instanceof $) { - link = filename; - } else { - link = $(".files-fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename a.name"); - } - if (active) { - link.off('click.connectivity'); - OCA.Files.App.fileList.fileActions.display(link.parent(), true, OCA.Files.App.fileList); - } else { - link.find('.fileactions, .nametext .action').remove(); // from files/js/fileactions (display) - link.off('click.connectivity'); - link.on('click.connectivity', function (e) { - if (action && $.isFunction(action)) { - action(filename); - } - e.preventDefault(); - return false; - }); - } - }, - - isCorrectViewAndRootFolder: function () { - // correct views = files & extstoragemounts - if (OCA.Files.App.getActiveView() === 'files' || OCA.Files.App.getActiveView() === 'extstoragemounts') { - return OCA.Files.App.currentFileList.getCurrentDirectory() === '/'; - } - return false; - }, - - /* escape a selector expression for jQuery */ - jqSelEscape: function (expression) { - if (expression) { - return expression.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, '\\$&'); - } - return null; - }, - - /* Copied from http://stackoverflow.com/questions/2631001/javascript-test-for-existence-of-nested-object-key */ - checkNested: function (cobj /*, level1, level2, ... levelN*/) { - var args = Array.prototype.slice.call(arguments), - obj = args.shift(); - - for (var i = 0; i < args.length; i++) { - if (!obj || !obj.hasOwnProperty(args[i])) { - return false; - } - obj = obj[args[i]]; - } - return true; - } -}; diff --git a/apps/files_external/lib/AppInfo/Application.php b/apps/files_external/lib/AppInfo/Application.php index 6f8018746b34b..fc6a5d64e7caf 100644 --- a/apps/files_external/lib/AppInfo/Application.php +++ b/apps/files_external/lib/AppInfo/Application.php @@ -29,6 +29,7 @@ */ namespace OCA\Files_External\AppInfo; +use OCA\Files\Event\LoadAdditionalScriptsEvent; use OCA\Files_External\Config\ConfigAdapter; use OCA\Files_External\Config\UserPlaceholderHandler; use OCA\Files_External\Lib\Auth\AmazonS3\AccessKey; @@ -62,6 +63,7 @@ use OCA\Files_External\Lib\Config\IAuthMechanismProvider; use OCA\Files_External\Lib\Config\IBackendProvider; use OCA\Files_External\Listener\GroupDeletedListener; +use OCA\Files_External\Listener\LoadAdditionalListener; use OCA\Files_External\Listener\UserDeletedListener; use OCA\Files_External\Service\BackendService; use OCP\AppFramework\App; @@ -78,6 +80,7 @@ * @package OCA\Files_External\AppInfo */ class Application extends App implements IBackendProvider, IAuthMechanismProvider, IBootstrap { + public const APP_ID = 'files_external'; /** * Application constructor. @@ -85,28 +88,19 @@ class Application extends App implements IBackendProvider, IAuthMechanismProvide * @throws \OCP\AppFramework\QueryException */ public function __construct(array $urlParams = []) { - parent::__construct('files_external', $urlParams); + parent::__construct(self::APP_ID, $urlParams); } public function register(IRegistrationContext $context): void { $context->registerEventListener(UserDeletedEvent::class, UserDeletedListener::class); $context->registerEventListener(GroupDeletedEvent::class, GroupDeletedListener::class); + $context->registerEventListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class); } public function boot(IBootContext $context): void { $context->injectFn(function (IMountProviderCollection $mountProviderCollection, ConfigAdapter $configAdapter) { $mountProviderCollection->registerProvider($configAdapter); }); - \OCA\Files\App::getNavigationManager()->add(function () { - $l = \OC::$server->getL10N('files_external'); - return [ - 'id' => 'extstoragemounts', - 'appname' => 'files_external', - 'script' => 'list.php', - 'order' => 30, - 'name' => $l->t('External storage'), - ]; - }); $context->injectFn(function (BackendService $backendService, UserPlaceholderHandler $userConfigHandler) { $backendService->registerBackendProvider($this); $backendService->registerAuthMechanismProvider($this); diff --git a/apps/files_external/lib/Controller/ApiController.php b/apps/files_external/lib/Controller/ApiController.php index ed54837a9bdaf..1276dde91c64a 100644 --- a/apps/files_external/lib/Controller/ApiController.php +++ b/apps/files_external/lib/Controller/ApiController.php @@ -37,30 +37,22 @@ use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCSController; use OCP\IRequest; -use OCP\IUserSession; /** * @psalm-import-type FilesExternalMount from ResponseDefinitions */ class ApiController extends OCSController { - /** @var IUserSession */ - private $userSession; - /** @var UserGlobalStoragesService */ - private $userGlobalStoragesService; - /** @var UserStoragesService */ - private $userStoragesService; + private UserGlobalStoragesService $userGlobalStoragesService; + private UserStoragesService $userStoragesService; public function __construct( string $appName, IRequest $request, - IUserSession $userSession, UserGlobalStoragesService $userGlobalStorageService, UserStoragesService $userStorageService ) { parent::__construct($appName, $request); - - $this->userSession = $userSession; $this->userGlobalStoragesService = $userGlobalStorageService; $this->userStoragesService = $userStorageService; } @@ -89,14 +81,15 @@ private function formatMount(string $mountPoint, StorageConfig $mountConfig): ar } $entry = [ + 'id' => $mountConfig->getId(), + 'type' => 'dir', 'name' => basename($mountPoint), 'path' => $path, - 'type' => 'dir', - 'backend' => $mountConfig->getBackend()->getText(), - 'scope' => $isSystemMount ? 'system' : 'personal', 'permissions' => $permissions, - 'id' => $mountConfig->getId(), + 'scope' => $isSystemMount ? 'system' : 'personal', + 'backend' => $mountConfig->getBackend()->getText(), 'class' => $mountConfig->getBackend()->getIdentifier(), + 'config' => $mountConfig->jsonSerialize(true), ]; return $entry; } @@ -127,4 +120,31 @@ public function getUserMounts(): DataResponse { return new DataResponse($entries); } + + /** + * @NoAdminRequired + * + * Ask for credentials using a browser's native basic auth prompt + * Then returns it if provided + */ + public function askNativeAuth(): DataResponse { + if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) { + $response = new DataResponse([], Http::STATUS_UNAUTHORIZED); + $response->addHeader('WWW-Authenticate', 'Basic realm="Storage authentification needed"'); + return $response; + } + + $user = $_SERVER['PHP_AUTH_USER']; + $password = $_SERVER['PHP_AUTH_PW']; + + // Reset auth + unset($_SERVER['PHP_AUTH_USER']); + unset($_SERVER['PHP_AUTH_PW']); + + // Using 401 again to ensure we clear any cached Authorization + return new DataResponse([ + 'user' => $user, + 'password' => $password, + ], Http::STATUS_UNAUTHORIZED); + } } diff --git a/apps/files_external/lib/Controller/GlobalStoragesController.php b/apps/files_external/lib/Controller/GlobalStoragesController.php index ce45bf3307c13..cb785695647f4 100644 --- a/apps/files_external/lib/Controller/GlobalStoragesController.php +++ b/apps/files_external/lib/Controller/GlobalStoragesController.php @@ -134,7 +134,7 @@ public function create( $this->updateStorageStatus($newStorage); return new DataResponse( - $this->formatStorageForUI($newStorage), + $newStorage->jsonSerialize(true), Http::STATUS_CREATED ); } @@ -201,7 +201,7 @@ public function update( $this->updateStorageStatus($storage, $testOnly); return new DataResponse( - $this->formatStorageForUI($storage), + $storage->jsonSerialize(true), Http::STATUS_OK ); } diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php index 6b8e9574d6f03..ead6aa9663a95 100644 --- a/apps/files_external/lib/Controller/StoragesController.php +++ b/apps/files_external/lib/Controller/StoragesController.php @@ -276,7 +276,7 @@ protected function updateStorageStatus(StorageConfig &$storage, $testOnly = true * @return DataResponse */ public function index() { - $storages = $this->formatStoragesForUI($this->service->getStorages()); + $storages = array_map(static fn ($storage) => $storage->jsonSerialize(true), $this->service->getStorages()); return new DataResponse( $storages, @@ -284,29 +284,6 @@ public function index() { ); } - protected function formatStoragesForUI(array $storages): array { - return array_map(function ($storage) { - return $this->formatStorageForUI($storage); - }, $storages); - } - - protected function formatStorageForUI(StorageConfig $storage): StorageConfig { - /** @var DefinitionParameter[] $parameters */ - $parameters = array_merge($storage->getBackend()->getParameters(), $storage->getAuthMechanism()->getParameters()); - - $options = $storage->getBackendOptions(); - foreach ($options as $key => $value) { - foreach ($parameters as $parameter) { - if ($parameter->getName() === $key && $parameter->getType() === DefinitionParameter::VALUE_PASSWORD) { - $storage->setBackendOption($key, DefinitionParameter::UNMODIFIED_PLACEHOLDER); - break; - } - } - } - - return $storage; - } - /** * Get an external storage entry. * @@ -329,7 +306,7 @@ public function show($id, $testOnly = true) { ); } - $data = $this->formatStorageForUI($storage)->jsonSerialize(); + $data = $storage->jsonSerialize(true); $isAdmin = $this->groupManager->isAdmin($this->userSession->getUser()->getUID()); $data['can_edit'] = $storage->getType() === StorageConfig::MOUNT_TYPE_PERSONAl || $isAdmin; diff --git a/apps/files_external/lib/Controller/UserGlobalStoragesController.php b/apps/files_external/lib/Controller/UserGlobalStoragesController.php index 91bc170137276..ba15afb2bdfb1 100644 --- a/apps/files_external/lib/Controller/UserGlobalStoragesController.php +++ b/apps/files_external/lib/Controller/UserGlobalStoragesController.php @@ -88,12 +88,13 @@ public function __construct( * @NoAdminRequired */ public function index() { - $storages = $this->formatStoragesForUI($this->service->getUniqueStorages()); - - // remove configuration data, this must be kept private - foreach ($storages as $storage) { + /** @var UserGlobalStoragesService */ + $service = $this->service; + $storages = array_map(function ($storage) { + // remove configuration data, this must be kept private $this->sanitizeStorage($storage); - } + return $storage->jsonSerialize(true); + }, $service->getUniqueStorages()); return new DataResponse( $storages, @@ -135,7 +136,7 @@ public function show($id, $testOnly = true) { $this->sanitizeStorage($storage); - $data = $this->formatStorageForUI($storage)->jsonSerialize(); + $data = $storage->jsonSerialize(true); $isAdmin = $this->groupManager->isAdmin($this->userSession->getUser()->getUID()); $data['can_edit'] = $storage->getType() === StorageConfig::MOUNT_TYPE_PERSONAl || $isAdmin; @@ -189,7 +190,7 @@ public function update( $this->sanitizeStorage($storage); return new DataResponse( - $this->formatStorageForUI($storage), + $storage->jsonSerialize(true), Http::STATUS_OK ); } diff --git a/apps/files_external/lib/Controller/UserStoragesController.php b/apps/files_external/lib/Controller/UserStoragesController.php index a875f7c2dcb40..7c141afcb305e 100644 --- a/apps/files_external/lib/Controller/UserStoragesController.php +++ b/apps/files_external/lib/Controller/UserStoragesController.php @@ -159,7 +159,7 @@ public function create( $this->updateStorageStatus($newStorage); return new DataResponse( - $this->formatStorageForUI($newStorage), + $newStorage->jsonSerialize(true), Http::STATUS_CREATED ); } @@ -219,7 +219,7 @@ public function update( $this->updateStorageStatus($storage, $testOnly); return new DataResponse( - $this->formatStorageForUI($storage), + $storage->jsonSerialize(true), Http::STATUS_OK ); } diff --git a/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php b/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php index 228366db20438..a1add7c870f6a 100644 --- a/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php +++ b/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php @@ -58,6 +58,10 @@ public function manipulateStorageConfig(StorageConfig &$storage, IUser $user = n throw new InsufficientDataForMeaningfulAnswerException('No session credentials saved'); } + if ($user === null) { + throw new StorageAuthException('Session unavailable'); + } + if ($credentials->getUID() !== $user->getUID()) { throw new StorageAuthException('Session credentials for storage owner not available'); } diff --git a/apps/files_external/lib/Lib/StorageConfig.php b/apps/files_external/lib/Lib/StorageConfig.php index be61d2982c0b9..8cb59f7089282 100644 --- a/apps/files_external/lib/Lib/StorageConfig.php +++ b/apps/files_external/lib/Lib/StorageConfig.php @@ -397,11 +397,17 @@ public function setType($type) { /** * Serialize config to JSON */ - public function jsonSerialize(): array { + public function jsonSerialize(bool $obfuscate = false): array { $result = []; if (!is_null($this->id)) { $result['id'] = $this->id; } + + // obfuscate sensitive data if requested + if ($obfuscate) { + $this->formatStorageForUI(); + } + $result['mountPoint'] = $this->mountPoint; $result['backend'] = $this->backend->getIdentifier(); $result['authMechanism'] = $this->authMechanism->getIdentifier(); @@ -428,4 +434,19 @@ public function jsonSerialize(): array { $result['type'] = ($this->getType() === self::MOUNT_TYPE_PERSONAl) ? 'personal': 'system'; return $result; } + + protected function formatStorageForUI(): void { + /** @var DefinitionParameter[] $parameters */ + $parameters = array_merge($this->getBackend()->getParameters(), $this->getAuthMechanism()->getParameters()); + + $options = $this->getBackendOptions(); + foreach ($options as $key => $value) { + foreach ($parameters as $parameter) { + if ($parameter->getName() === $key && $parameter->getType() === DefinitionParameter::VALUE_PASSWORD) { + $this->setBackendOption($key, DefinitionParameter::UNMODIFIED_PLACEHOLDER); + break; + } + } + } + } } diff --git a/apps/files_external/lib/Listener/LoadAdditionalListener.php b/apps/files_external/lib/Listener/LoadAdditionalListener.php new file mode 100644 index 0000000000000..e5cb5e96d0a5d --- /dev/null +++ b/apps/files_external/lib/Listener/LoadAdditionalListener.php @@ -0,0 +1,55 @@ + + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +namespace OCA\Files_External\Listener; + +use OCA\Files_External\AppInfo\Application; +use OCA\Files\Event\LoadAdditionalScriptsEvent; +use OCP\AppFramework\Services\IInitialState; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\IConfig; +use OCP\Util; + +/** + * @template-implements IEventListener + */ +class LoadAdditionalListener implements IEventListener { + + public function __construct( + private IConfig $config, + private IInitialState $initialState, + ) {} + + public function handle(Event $event): void { + if (!($event instanceof LoadAdditionalScriptsEvent)) { + return; + } + + $allowUserMounting = $this->config->getAppValue('files_external', 'allow_user_mounting', 'no') === 'yes'; + $this->initialState->provideInitialState('allowUserMounting', $allowUserMounting); + Util::addScript(Application::APP_ID, 'main', 'files'); + } +} diff --git a/apps/files_external/lib/ResponseDefinitions.php b/apps/files_external/lib/ResponseDefinitions.php index d26d05a36f471..bae29085361f1 100644 --- a/apps/files_external/lib/ResponseDefinitions.php +++ b/apps/files_external/lib/ResponseDefinitions.php @@ -35,6 +35,7 @@ * permissions: int, * id: int, * class: string, + * config: array, * } */ class ResponseDefinitions { diff --git a/apps/files_external/list.php b/apps/files_external/list.php deleted file mode 100644 index f38e9da1bc3ce..0000000000000 --- a/apps/files_external/list.php +++ /dev/null @@ -1,46 +0,0 @@ - - * @author Jesús Macias - * @author John Molakvoæ - * @author Julius Härtl - * @author Vincent Petry - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see - * - */ - -$config = \OC::$server->getConfig(); -$userSession = \OC::$server->getUserSession(); - -$showgridview = $config->getUserValue($userSession->getUser()->getUID(), 'files', 'show_grid', true); - -$tmpl = new OCP\Template('files_external', 'list', ''); - -// gridview not available for ie -$tmpl->assign('showgridview', $showgridview); - -/* Load Status Manager */ -\OCP\Util::addStyle('files_external', 'external'); -\OCP\Util::addScript('files_external', 'statusmanager'); -\OCP\Util::addScript('files_external', 'templates'); -\OCP\Util::addScript('files_external', 'rollingqueue'); - -OCP\Util::addScript('files_external', 'app'); -OCP\Util::addScript('files_external', 'mountsfilelist'); - -$tmpl->printPage(); diff --git a/apps/files_external/src/actions/enterCredentialsAction.spec.ts b/apps/files_external/src/actions/enterCredentialsAction.spec.ts new file mode 100644 index 0000000000000..db796b773c838 --- /dev/null +++ b/apps/files_external/src/actions/enterCredentialsAction.spec.ts @@ -0,0 +1,145 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +import { action } from './enterCredentialsAction' +import { expect } from '@jest/globals' +import { File, Folder, Permission } from '@nextcloud/files' +import { DefaultType, FileAction } from '../../../files/src/services/FileAction' +import type { Navigation } from '../../../files/src/services/Navigation' +import type { StorageConfig } from '../services/externalStorage' +import { STORAGE_STATUS } from '../utils/credentialsUtils' + +const view = { + id: 'files', + name: 'Files', +} as Navigation + +const externalStorageView = { + id: 'extstoragemounts', + name: 'External storage', +} as Navigation + +describe('Enter credentials action conditions tests', () => { + test('Default values', () => { + const storage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + attributes: { + config: { + status: STORAGE_STATUS.SUCCESS, + } as StorageConfig, + }, + }) + + expect(action).toBeInstanceOf(FileAction) + expect(action.id).toBe('credentials-external-storage') + expect(action.displayName([storage], externalStorageView)).toBe('Enter missing credentials') + expect(action.iconSvgInline([storage], externalStorageView)).toBe('SvgMock') + expect(action.default).toBe(DefaultType.DEFAULT) + expect(action.order).toBe(-1000) + expect(action.inline!(storage, externalStorageView)).toBe(true) + }) +}) + +describe('Enter credentials action enabled tests', () => { + const storage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + attributes: { + scope: 'system', + backend: 'SFTP', + config: { + status: STORAGE_STATUS.SUCCESS, + } as StorageConfig, + }, + }) + + const userProvidedStorage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + attributes: { + scope: 'system', + backend: 'SFTP', + config: { + status: STORAGE_STATUS.INCOMPLETE_CONF, + userProvided: true, + } as StorageConfig, + }, + }) + + const globalAuthUserStorage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + attributes: { + scope: 'system', + backend: 'SFTP', + config: { + status: STORAGE_STATUS.INCOMPLETE_CONF, + authMechanism: 'password::global::user', + } as StorageConfig, + }, + }) + + const notAStorage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + }) + + test('Disabled with on success storage', () => { + expect(action.enabled).toBeDefined() + expect(action.enabled!([storage], externalStorageView)).toBe(false) + }) + + test('Disabled for multiple nodes', () => { + expect(action.enabled).toBeDefined() + expect(action.enabled!([storage, storage], view)).toBe(false) + }) + + test('Enabled for missing user auth storage', () => { + expect(action.enabled).toBeDefined() + expect(action.enabled!([userProvidedStorage], view)).toBe(true) + }) + + test('Enabled for missing global user auth storage', () => { + expect(action.enabled).toBeDefined() + expect(action.enabled!([globalAuthUserStorage], view)).toBe(true) + }) + + test('Disabled for normal nodes', () => { + expect(action.enabled).toBeDefined() + expect(action.enabled!([notAStorage], view)).toBe(false) + }) +}) diff --git a/apps/files_external/src/actions/enterCredentialsAction.ts b/apps/files_external/src/actions/enterCredentialsAction.ts new file mode 100644 index 0000000000000..460909dfa84d2 --- /dev/null +++ b/apps/files_external/src/actions/enterCredentialsAction.ts @@ -0,0 +1,110 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +// eslint-disable-next-line n/no-extraneous-import +import type { AxiosResponse } from 'axios' +import type { Node } from '@nextcloud/files' +import type { StorageConfig } from '../services/externalStorage' + +import { generateOcsUrl, generateUrl } from '@nextcloud/router' +import { showError, showSuccess } from '@nextcloud/dialogs' +import { translate as t } from '@nextcloud/l10n' +import axios from '@nextcloud/axios' +import LoginSvg from '@mdi/svg/svg/login.svg?raw' +import Vue from 'vue' + +import { registerFileAction, FileAction, DefaultType } from '../../../files/src/services/FileAction' +import { STORAGE_STATUS, isMissingAuthConfig } from '../utils/credentialsUtils' +import { isNodeExternalStorage } from '../utils/externalStorageUtils' + +type OCSAuthResponse = { + ocs: { + meta: { + status: string + statuscode: number + message: string + }, + data: { + user?: string, + password?: string, + } + } +} + +export const action = new FileAction({ + id: 'credentials-external-storage', + displayName: () => t('files', 'Enter missing credentials'), + iconSvgInline: () => LoginSvg, + + enabled: (nodes: Node[]) => { + // Only works on single node + if (nodes.length !== 1) { + return false + } + + const node = nodes[0] + if (!isNodeExternalStorage(node)) { + return false + } + + const config = (node.attributes?.config || {}) as StorageConfig + if (isMissingAuthConfig(config)) { + return true + } + + return false + }, + + async exec(node: Node) { + // always resolve auth request, we'll process the data afterwards + const response = await axios.get(generateOcsUrl('/apps/files_external/api/v1/auth'), { + validateStatus: () => true, + }) + + const data = (response?.data || {}) as OCSAuthResponse + if (data.ocs.data.user && data.ocs.data.password) { + const configResponse = await axios.put(generateUrl('apps/files_external/userglobalstorages/{id}', node.attributes), { + backendOptions: data.ocs.data, + }) as AxiosResponse + + const config = configResponse.data + if (config.status !== STORAGE_STATUS.SUCCESS) { + showError(t('files_external', 'Unable to update this external storage config. {statusMessage}', { + statusMessage: config?.statusMessage || '', + })) + return null + } + + // Success update config attribute + showSuccess(t('files_external', 'New configuration successfully saved')) + Vue.set(node.attributes, 'config', config) + } + + return null + }, + + // Before openFolderAction + order: -1000, + default: DefaultType.DEFAULT, + inline: () => true, +}) + +registerFileAction(action) diff --git a/apps/files_external/src/actions/inlineStorageCheckAction.ts b/apps/files_external/src/actions/inlineStorageCheckAction.ts new file mode 100644 index 0000000000000..bd509f8fde1a0 --- /dev/null +++ b/apps/files_external/src/actions/inlineStorageCheckAction.ts @@ -0,0 +1,96 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +// eslint-disable-next-line n/no-extraneous-import +import type { AxiosError } from 'axios' +import type { Node } from '@nextcloud/files' + +import { showWarning } from '@nextcloud/dialogs' +import { translate as t } from '@nextcloud/l10n' +import AlertSvg from '@mdi/svg/svg/alert-circle.svg?raw' +import Vue from 'vue' + +import '../css/fileEntryStatus.scss' +import { getStatus, type StorageConfig } from '../services/externalStorage' +import { isMissingAuthConfig, STORAGE_STATUS } from '../utils/credentialsUtils' +import { isNodeExternalStorage } from '../utils/externalStorageUtils' +import { registerFileAction, FileAction } from '../../../files/src/services/FileAction' + +export const action = new FileAction({ + id: 'check-external-storage', + displayName: () => '', + iconSvgInline: () => '', + + enabled: (nodes: Node[]) => { + return nodes.every(node => isNodeExternalStorage(node) === true) + }, + exec: async () => null, + + /** + * Use this function to check the storage availability + * We then update the node attributes directly. + */ + async renderInline(node: Node) { + let config = null as any as StorageConfig + try { + const response = await getStatus(node.attributes.id, node.attributes.scope === 'system') + config = response.data + Vue.set(node.attributes, 'config', config) + + if (config.status !== STORAGE_STATUS.SUCCESS) { + throw new Error(config?.statusMessage || t('files_external', 'There was an error with this external storage.')) + } + + return null + } catch (error) { + // If axios failed or if something else prevented + // us from getting the config + if ((error as AxiosError).response && !config) { + showWarning(t('files_external', 'We were unable to check the external storage {basename}', { + basename: node.basename, + })) + return null + } + + // Checking if we really have an error + const isWarning = isMissingAuthConfig(config) + const overlay = document.createElement('span') + overlay.classList.add(`files-list__row-status--${isWarning ? 'warning' : 'error'}`) + + const span = document.createElement('span') + span.className = 'files-list__row-status' + + // Only show an icon for errors, warning like missing credentials + // have a dedicated inline action button + if (!isWarning) { + span.innerHTML = AlertSvg + span.title = (error as Error).message + } + + span.prepend(overlay) + return span + } + }, + + order: 10, +}) + +registerFileAction(action) diff --git a/apps/files_external/src/actions/openInFilesAction.spec.ts b/apps/files_external/src/actions/openInFilesAction.spec.ts new file mode 100644 index 0000000000000..803bee8e096c2 --- /dev/null +++ b/apps/files_external/src/actions/openInFilesAction.spec.ts @@ -0,0 +1,140 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +import { action } from './openInFilesAction' +import { expect } from '@jest/globals' +import { File, Folder, Permission } from '@nextcloud/files' +import { DefaultType, FileAction } from '../../../files/src/services/FileAction' +import type { Navigation } from '../../../files/src/services/Navigation' +import type { StorageConfig } from '../services/externalStorage' +import { STORAGE_STATUS } from '../utils/credentialsUtils' + +const view = { + id: 'files', + name: 'Files', +} as Navigation + +const externalStorageView = { + id: 'extstoragemounts', + name: 'External storage', +} as Navigation + +describe('Open in files action conditions tests', () => { + test('Default values', () => { + const storage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + attributes: { + config: { + status: STORAGE_STATUS.SUCCESS, + } as StorageConfig, + }, + }) + + expect(action).toBeInstanceOf(FileAction) + expect(action.id).toBe('open-in-files-external-storage') + expect(action.displayName([storage], externalStorageView)).toBe('Open in files') + expect(action.iconSvgInline([storage], externalStorageView)).toBe('') + expect(action.default).toBe(DefaultType.HIDDEN) + expect(action.order).toBe(-1000) + expect(action.inline).toBeUndefined() + }) + + test('Default values', () => { + const failingStorage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + attributes: { + config: { + status: STORAGE_STATUS.ERROR, + } as StorageConfig, + }, + }) + expect(action.displayName([failingStorage], externalStorageView)).toBe('Examine this faulty external storage configuration') + }) +}) + +describe('Open in files action enabled tests', () => { + test('Enabled with on valid view', () => { + expect(action.enabled).toBeDefined() + expect(action.enabled!([], externalStorageView)).toBe(true) + }) + + test('Disabled on wrong view', () => { + expect(action.enabled).toBeDefined() + expect(action.enabled!([], view)).toBe(false) + }) +}) + +describe('Open in files action execute tests', () => { + test('Open in files', async () => { + const goToRouteMock = jest.fn() + window.OCP = { Files: { Router: { goToRoute: goToRouteMock } } } + + const storage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/Bar', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + attributes: { + config: { + status: STORAGE_STATUS.SUCCESS, + } as StorageConfig, + }, + }) + + const exec = await action.exec(storage, externalStorageView, '/') + // Silent action + expect(exec).toBe(null) + expect(goToRouteMock).toBeCalledTimes(1) + expect(goToRouteMock).toBeCalledWith(null, { view: 'files' }, { dir: '/Foo/Bar' }) + }) + + test('Open in files broken storage', async () => { + const confirmMock = jest.fn() + window.OC = { dialogs: { confirm: confirmMock } } + + const storage = new Folder({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/Bar', + owner: 'admin', + root: '/files/admin', + permissions: Permission.ALL, + attributes: { + config: { + status: STORAGE_STATUS.ERROR, + } as StorageConfig, + }, + }) + + const exec = await action.exec(storage, externalStorageView, '/') + // Silent action + expect(exec).toBe(null) + expect(confirmMock).toBeCalledTimes(1) + }) +}) diff --git a/apps/files_external/src/actions/openInFilesAction.ts b/apps/files_external/src/actions/openInFilesAction.ts new file mode 100644 index 0000000000000..2c9579041ea54 --- /dev/null +++ b/apps/files_external/src/actions/openInFilesAction.ts @@ -0,0 +1,75 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +import type { Node } from '@nextcloud/files' +import type { StorageConfig } from '../services/externalStorage' + +import { generateUrl } from '@nextcloud/router' +import { translate as t } from '@nextcloud/l10n' + +import { registerFileAction, FileAction, DefaultType } from '../../../files/src/services/FileAction' +import { STORAGE_STATUS } from '../utils/credentialsUtils' + +export const action = new FileAction({ + id: 'open-in-files-external-storage', + displayName: (nodes: Node[]) => { + const config = nodes?.[0]?.attributes?.config as StorageConfig || { status: STORAGE_STATUS.INDETERMINATE } + if (config.status !== STORAGE_STATUS.SUCCESS) { + return t('files_external', 'Examine this faulty external storage configuration') + } + return t('files', 'Open in files') + }, + iconSvgInline: () => '', + + enabled: (nodes: Node[], view) => view.id === 'extstoragemounts', + + async exec(node: Node) { + const config = node.attributes.config as StorageConfig + if (config?.status !== STORAGE_STATUS.SUCCESS) { + window.OC.dialogs.confirm( + t('files_external', 'There was an error with this external storage. Do you want to review this mount point config in the settings page?'), + t('files_external', 'External mount error'), + (redirect) => { + if (redirect === true) { + const scope = node.attributes.scope === 'personal' ? 'user' : 'admin' + window.location.href = generateUrl(`/settings/${scope}/externalstorages`) + } + }, + ) + return null + } + + // Do not use fileid as we don't have that information + // from the external storage api + window.OCP.Files.Router.goToRoute( + null, // use default route + { view: 'files' }, + { dir: node.path }, + ) + return null + }, + + // Before openFolderAction + order: -1000, + default: DefaultType.HIDDEN, +}) + +registerFileAction(action) diff --git a/apps/files_external/src/css/fileEntryStatus.scss b/apps/files_external/src/css/fileEntryStatus.scss new file mode 100644 index 0000000000000..1e36cccdb6f56 --- /dev/null +++ b/apps/files_external/src/css/fileEntryStatus.scss @@ -0,0 +1,36 @@ +.files-list__row-status { + display: flex; + width: 44px; + justify-content: center; + align-items: center; + height: 100%; + + svg { + width: 24px; + height: 24px; + + path { + fill: currentColor; + } + } + + &--error, + &--warning { + position: absolute; + display: block; + top: 0; + left: 0; + right: 0; + bottom: 0; + opacity: .1; + z-index: -1; + } + + &--error { + background: var(--color-error); + } + + &--warning { + background: var(--color-warning); + } +} \ No newline at end of file diff --git a/apps/files_external/src/main.ts b/apps/files_external/src/main.ts new file mode 100644 index 0000000000000..e72cb8673d082 --- /dev/null +++ b/apps/files_external/src/main.ts @@ -0,0 +1,77 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +import type NavigationService from '../../files/src/services/Navigation' +import type { Navigation } from '../../files/src/services/Navigation' + +import { translate as t } from '@nextcloud/l10n' +import { loadState } from '@nextcloud/initial-state' +import FolderNetworkSvg from '@mdi/svg/svg/folder-network.svg?raw' + +import './actions/enterCredentialsAction' +import './actions/inlineStorageCheckAction' +import './actions/openInFilesAction' +import { getContents } from './services/externalStorage' + +const allowUserMounting = loadState('files_external', 'allowUserMounting', false) + +const Navigation = window.OCP.Files.Navigation as NavigationService +Navigation.register({ + id: 'extstoragemounts', + name: t('files_external', 'External storage'), + caption: t('files_external', 'List of external storage.'), + + emptyCaption: allowUserMounting + ? t('files_external', 'There is no external storage configured. You can configure them in your Personal settings.') + : t('files_external', 'There is no external storage configured and you don\'t have the permission to configure them.'), + emptyTitle: t('files_external', 'No external storage'), + + icon: FolderNetworkSvg, + order: 30, + + columns: [ + { + id: 'storage-type', + title: t('files_external', 'Storage type'), + render(node) { + const backend = node.attributes?.backend || t('files_external', 'Unknown') + const span = document.createElement('span') + span.textContent = backend + return span + }, + }, + { + id: 'scope', + title: t('files_external', 'Scope'), + render(node) { + const span = document.createElement('span') + let scope = t('files_external', 'Personal') + if (node.attributes?.scope === 'system') { + scope = t('files_external', 'System') + } + span.textContent = scope + return span + }, + }, + ], + + getContents, +} as Navigation) diff --git a/apps/files_external/src/services/externalStorage.ts b/apps/files_external/src/services/externalStorage.ts new file mode 100644 index 0000000000000..5683dbea53aa7 --- /dev/null +++ b/apps/files_external/src/services/externalStorage.ts @@ -0,0 +1,104 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +// eslint-disable-next-line n/no-extraneous-import +import type { AxiosResponse } from 'axios' +import type { ContentsWithRoot } from '../../../files/src/services/Navigation' +import type { OCSResponse } from '../../../files_sharing/src/services/SharingService' + +import { Folder, Permission } from '@nextcloud/files' +import { generateOcsUrl, generateRemoteUrl, generateUrl } from '@nextcloud/router' +import { getCurrentUser } from '@nextcloud/auth' +import axios from '@nextcloud/axios' + +import { STORAGE_STATUS } from '../utils/credentialsUtils' + +export const rootPath = `/files/${getCurrentUser()?.uid}` + +export type StorageConfig = { + applicableUsers?: string[] + applicableGroups?: string[] + authMechanism: string + backend: string + backendOptions: Record + can_edit: boolean + id: number + mountOptions?: Record + mountPoint: string + priority: number + status: number + statusMessage: string + type: 'system' | 'user' + userProvided: boolean +} + +/** + * https://github.com/nextcloud/server/blob/ac2bc2384efe3c15ff987b87a7432bc60d545c67/apps/files_external/lib/Controller/ApiController.php#L71-L97 + */ +export type MountEntry = { + name: string + path: string, + type: 'dir', + backend: 'SFTP', + scope: 'system' | 'personal', + permissions: number, + id: number, + class: string + config: StorageConfig +} + +const entryToFolder = (ocsEntry: MountEntry): Folder => { + const path = (ocsEntry.path + '/' + ocsEntry.name).replace(/^\//gm, '') + return new Folder({ + id: ocsEntry.id, + source: generateRemoteUrl('dav' + rootPath + '/' + path), + root: rootPath, + owner: getCurrentUser()?.uid || null, + permissions: ocsEntry.config.status !== STORAGE_STATUS.SUCCESS + ? Permission.NONE + : ocsEntry?.permissions || Permission.READ, + attributes: { + displayName: path, + ...ocsEntry, + }, + }) +} + +export const getContents = async (): Promise => { + const response = await axios.get(generateOcsUrl('apps/files_external/api/v1/mounts')) as AxiosResponse> + const contents = response.data.ocs.data.map(entryToFolder) + + return { + folder: new Folder({ + id: 0, + source: generateRemoteUrl('dav' + rootPath), + root: rootPath, + owner: getCurrentUser()?.uid || null, + permissions: Permission.READ, + }), + contents, + } +} + +export const getStatus = function(id: number, global = true) { + const type = global ? 'userglobalstorages' : 'userstorages' + return axios.get(generateUrl(`apps/files_external/${type}/${id}?testOnly=false`)) as Promise> +} diff --git a/apps/files_external/src/utils/credentialsUtils.ts b/apps/files_external/src/utils/credentialsUtils.ts new file mode 100644 index 0000000000000..e92acf3c4ffab --- /dev/null +++ b/apps/files_external/src/utils/credentialsUtils.ts @@ -0,0 +1,42 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +import type { StorageConfig } from '../services/externalStorage' + +// @see https://github.com/nextcloud/server/blob/ac2bc2384efe3c15ff987b87a7432bc60d545c67/lib/public/Files/StorageNotAvailableException.php#L41 +export enum STORAGE_STATUS { + SUCCESS = 0, + ERROR = 1, + INDETERMINATE = 2, + INCOMPLETE_CONF = 3, + UNAUTHORIZED = 4, + TIMEOUT = 5, + NETWORK_ERROR = 6, +} + +export const isMissingAuthConfig = function(config: StorageConfig) { + // If we don't know the status, assume it is ok + if (!config.status || config.status === STORAGE_STATUS.SUCCESS) { + return false + } + + return config.userProvided || config.authMechanism === 'password::global::user' +} diff --git a/apps/files_external/src/utils/externalStorageUtils.ts b/apps/files_external/src/utils/externalStorageUtils.ts new file mode 100644 index 0000000000000..ffc4f9efb026a --- /dev/null +++ b/apps/files_external/src/utils/externalStorageUtils.ts @@ -0,0 +1,39 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +import { FileType, Node } from '@nextcloud/files' +import type { MountEntry } from '../services/externalStorage' + +export const isNodeExternalStorage = function(node: Node) { + // Not a folder, not a storage + if (node.type === FileType.File) { + return false + } + + // No backend or scope, not a storage + const attributes = node.attributes as MountEntry + if (!attributes.scope || !attributes.backend) { + return false + } + + // Specific markers that we're sure are ext storage only + return attributes.scope === 'personal' || attributes.scope === 'system' +} diff --git a/apps/files_external/templates/list.php b/apps/files_external/templates/list.php deleted file mode 100644 index 8f68157652ba1..0000000000000 --- a/apps/files_external/templates/list.php +++ /dev/null @@ -1,31 +0,0 @@ - -
-
-
- - - - - - - - - - - - - - - -
diff --git a/apps/files_external/tests/Controller/StoragesControllerTest.php b/apps/files_external/tests/Controller/StoragesControllerTest.php index 5b3eb6d79833a..fdaf6e2261fdb 100644 --- a/apps/files_external/tests/Controller/StoragesControllerTest.php +++ b/apps/files_external/tests/Controller/StoragesControllerTest.php @@ -129,7 +129,7 @@ public function testAddStorage() { $data = $response->getData(); $this->assertEquals(Http::STATUS_CREATED, $response->getStatus()); - $this->assertEquals($storageConfig, $data); + $this->assertEquals($storageConfig->jsonSerialize(), $data); } public function testAddLocalStorageWhenDisabled() { @@ -201,7 +201,7 @@ public function testUpdateStorage() { $data = $response->getData(); $this->assertEquals(Http::STATUS_OK, $response->getStatus()); - $this->assertEquals($storageConfig, $data); + $this->assertEquals($storageConfig->jsonSerialize(), $data); } public function mountPointNamesProvider() { diff --git a/apps/files_sharing/src/actions/openInFilesAction.ts b/apps/files_sharing/src/actions/openInFilesAction.ts index f992d11b1357f..bd9791e85a563 100644 --- a/apps/files_sharing/src/actions/openInFilesAction.ts +++ b/apps/files_sharing/src/actions/openInFilesAction.ts @@ -48,9 +48,9 @@ export const action = new FileAction({ return null }, - default: DefaultType.HIDDEN, // Before openFolderAction order: -1000, + default: DefaultType.HIDDEN, }) registerFileAction(action) diff --git a/apps/files_sharing/src/services/SharingService.spec.ts b/apps/files_sharing/src/services/SharingService.spec.ts index a3269ac71805e..a1de907721a91 100644 --- a/apps/files_sharing/src/services/SharingService.spec.ts +++ b/apps/files_sharing/src/services/SharingService.spec.ts @@ -45,7 +45,7 @@ describe('SharingService methods definitions', () => { }, data: [], }, - } as OCSResponse, + } as OCSResponse, } }) }) diff --git a/apps/files_sharing/src/services/SharingService.ts b/apps/files_sharing/src/services/SharingService.ts index 8d11c223b5d68..dc167475094f5 100644 --- a/apps/files_sharing/src/services/SharingService.ts +++ b/apps/files_sharing/src/services/SharingService.ts @@ -31,14 +31,14 @@ import logger from './logger' export const rootPath = `/files/${getCurrentUser()?.uid}` -export type OCSResponse = { +export type OCSResponse = { ocs: { meta: { status: string statuscode: number message: string }, - data: [] + data: T[] } } @@ -87,7 +87,7 @@ const ocsEntryToNode = function(ocsEntry: any): Folder | File | null { } } -const getShares = function(shared_with_me = false): AxiosPromise { +const getShares = function(shared_with_me = false): AxiosPromise> { const url = generateOcsUrl('apps/files_sharing/api/v1/shares') return axios.get(url, { headers, @@ -98,15 +98,15 @@ const getShares = function(shared_with_me = false): AxiosPromise { }) } -const getSharedWithYou = function(): AxiosPromise { +const getSharedWithYou = function(): AxiosPromise> { return getShares(true) } -const getSharedWithOthers = function(): AxiosPromise { +const getSharedWithOthers = function(): AxiosPromise> { return getShares() } -const getRemoteShares = function(): AxiosPromise { +const getRemoteShares = function(): AxiosPromise> { const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares') return axios.get(url, { headers, @@ -116,7 +116,7 @@ const getRemoteShares = function(): AxiosPromise { }) } -const getPendingShares = function(): AxiosPromise { +const getPendingShares = function(): AxiosPromise> { const url = generateOcsUrl('apps/files_sharing/api/v1/shares/pending') return axios.get(url, { headers, @@ -126,7 +126,7 @@ const getPendingShares = function(): AxiosPromise { }) } -const getRemotePendingShares = function(): AxiosPromise { +const getRemotePendingShares = function(): AxiosPromise> { const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares/pending') return axios.get(url, { headers, @@ -136,7 +136,7 @@ const getRemotePendingShares = function(): AxiosPromise { }) } -const getDeletedShares = function(): AxiosPromise { +const getDeletedShares = function(): AxiosPromise> { const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares') return axios.get(url, { headers, @@ -147,7 +147,7 @@ const getDeletedShares = function(): AxiosPromise { } export const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes: number[] = []): Promise => { - const promises = [] as AxiosPromise[] + const promises = [] as AxiosPromise>[] if (sharedWithYou) { promises.push(getSharedWithYou(), getRemoteShares()) diff --git a/apps/files_sharing/src/views/shares.spec.ts b/apps/files_sharing/src/views/shares.spec.ts index ae67a960cc012..e5c7e6853c613 100644 --- a/apps/files_sharing/src/views/shares.spec.ts +++ b/apps/files_sharing/src/views/shares.spec.ts @@ -112,7 +112,7 @@ describe('Sharing views contents', () => { }, data: [], }, - } as OCSResponse, + } as OCSResponse, } }) diff --git a/apps/files_sharing/src/views/shares.ts b/apps/files_sharing/src/views/shares.ts index 7d6bf46d3cea2..08e55d2678a69 100644 --- a/apps/files_sharing/src/views/shares.ts +++ b/apps/files_sharing/src/views/shares.ts @@ -28,7 +28,7 @@ import AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw' import AccountSvg from '@mdi/svg/svg/account.svg?raw' import DeleteSvg from '@mdi/svg/svg/delete.svg?raw' import LinkSvg from '@mdi/svg/svg/link.svg?raw' -import ShareVariantSvg from '@mdi/svg/svg/share-variant.svg?raw' +import AccouontPlusSvg from '@mdi/svg/svg/account-plus.svg?raw' import { getContents } from '../services/SharingService' @@ -49,7 +49,7 @@ export default () => { emptyTitle: t('files_sharing', 'No shares'), emptyCaption: t('files_sharing', 'Files and folders you shared or have been shared with you will show up here'), - icon: ShareVariantSvg, + icon: AccouontPlusSvg, order: 20, columns: [], diff --git a/dist/core-common.js b/dist/core-common.js index f5b1710afe223..933acff456a5e 100644 --- a/dist/core-common.js +++ b/dist/core-common.js @@ -1,3 +1,3 @@ /*! For license information please see core-common.js.LICENSE.txt */ -(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[7874],{11362:(e,t,n)=>{"use strict";function a(e){return e.split("-")[1]}function r(e){return"y"===e?"height":"width"}function i(e){return e.split("-")[0]}function o(e){return["top","bottom"].includes(i(e))?"x":"y"}function s(e,t,n){let{reference:s,floating:l}=e;const u=s.x+s.width/2-l.width/2,c=s.y+s.height/2-l.height/2,d=o(t),p=r(d),h=s[p]/2-l[p]/2,m="x"===d;let f;switch(i(t)){case"top":f={x:u,y:s.y-l.height};break;case"bottom":f={x:u,y:s.y+s.height};break;case"right":f={x:s.x+s.width,y:c};break;case"left":f={x:s.x-l.width,y:c};break;default:f={x:s.x,y:s.y}}switch(a(t)){case"start":f[d]-=h*(n&&m?-1:1);break;case"end":f[d]+=h*(n&&m?-1:1)}return f}function l(e,t){return"function"==typeof e?e(t):e}function u(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function c(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function d(e,t){var n;void 0===t&&(t={});const{x:a,y:r,platform:i,rects:o,elements:s,strategy:d}=e,{boundary:p="clippingAncestors",rootBoundary:h="viewport",elementContext:m="floating",altBoundary:f=!1,padding:g=0}=l(t,e),v=u(g),_=s[f?"floating"===m?"reference":"floating":m],A=c(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(_)))||n?_:_.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:p,rootBoundary:h,strategy:d})),b="floating"===m?{...o.floating,x:a,y:r}:o.reference,y=await(null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),F=await(null==i.isElement?void 0:i.isElement(y))&&await(null==i.getScale?void 0:i.getScale(y))||{x:1,y:1},T=c(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:b,offsetParent:y,strategy:d}):b);return{top:(A.top-T.top+v.top)/F.y,bottom:(T.bottom-A.bottom+v.bottom)/F.y,left:(A.left-T.left+v.left)/F.x,right:(T.right-A.right+v.right)/F.x}}n.r(t),n.d(t,{arrow:()=>f,autoPlacement:()=>T,autoUpdate:()=>ge,computePosition:()=>ve,detectOverflow:()=>d,flip:()=>C,getOverflowAncestors:()=>ue,hide:()=>S,inline:()=>D,limitShift:()=>j,offset:()=>x,platform:()=>fe,shift:()=>O,size:()=>M});const p=Math.min,h=Math.max;function m(e,t,n){return h(e,p(t,n))}const f=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:i,placement:s,rects:c,platform:d,elements:h}=t,{element:f,padding:g=0}=l(e,t)||{};if(null==f)return{};const v=u(g),_={x:n,y:i},A=o(s),b=r(A),y=await d.getDimensions(f),F="y"===A,T=F?"top":"left",C=F?"bottom":"right",k=F?"clientHeight":"clientWidth",w=c.reference[b]+c.reference[A]-_[A]-c.floating[b],S=_[A]-c.reference[A],E=await(null==d.getOffsetParent?void 0:d.getOffsetParent(f));let D=E?E[k]:0;D&&await(null==d.isElement?void 0:d.isElement(E))||(D=h.floating[k]||c.floating[b]);const x=w/2-S/2,N=D/2-y[b]/2-1,O=p(v[T],N),j=p(v[C],N),M=O,R=D-y[b]-j,P=D/2-y[b]/2+x,B=m(M,P,R),L=null!=a(s)&&P!=B&&c.reference[b]/2-(Pe.concat(t,t+"-start",t+"-end")),[]),_={left:"right",right:"left",bottom:"top",top:"bottom"};function A(e){return e.replace(/left|right|bottom|top/g,(e=>_[e]))}function b(e,t,n){void 0===n&&(n=!1);const i=a(e),s=o(e),l=r(s);let u="x"===s?i===(n?"end":"start")?"right":"left":"start"===i?"bottom":"top";return t.reference[l]>t.floating[l]&&(u=A(u)),{main:u,cross:A(u)}}const y={start:"end",end:"start"};function F(e){return e.replace(/start|end/g,(e=>y[e]))}const T=function(e){return void 0===e&&(e={}),{name:"autoPlacement",options:e,async fn(t){var n,r,o;const{rects:s,middlewareData:u,placement:c,platform:p,elements:h}=t,{crossAxis:m=!1,alignment:f,allowedPlacements:g=v,autoAlignment:_=!0,...A}=l(e,t),y=void 0!==f||g===v?function(e,t,n){return(e?[...n.filter((t=>a(t)===e)),...n.filter((t=>a(t)!==e))]:n.filter((e=>i(e)===e))).filter((n=>!e||a(n)===e||!!t&&F(n)!==n))}(f||null,_,g):g,T=await d(t,A),C=(null==(n=u.autoPlacement)?void 0:n.index)||0,k=y[C];if(null==k)return{};const{main:w,cross:S}=b(k,s,await(null==p.isRTL?void 0:p.isRTL(h.floating)));if(c!==k)return{reset:{placement:y[0]}};const E=[T[i(k)],T[w],T[S]],D=[...(null==(r=u.autoPlacement)?void 0:r.overflows)||[],{placement:k,overflows:E}],x=y[C+1];if(x)return{data:{index:C+1,overflows:D},reset:{placement:x}};const N=D.map((e=>{const t=a(e.placement);return[e.placement,t&&m?e.overflows.slice(0,2).reduce(((e,t)=>e+t),0):e.overflows[0],e.overflows]})).sort(((e,t)=>e[1]-t[1])),O=(null==(o=N.filter((e=>e[2].slice(0,a(e[0])?2:3).every((e=>e<=0))))[0])?void 0:o[0])||N[0][0];return O!==c?{data:{index:C+1,overflows:D},reset:{placement:O}}:{}}}},C=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:s,initialPlacement:u,platform:c,elements:p}=t,{mainAxis:h=!0,crossAxis:m=!0,fallbackPlacements:f,fallbackStrategy:g="bestFit",fallbackAxisSideDirection:v="none",flipAlignment:_=!0,...y}=l(e,t),T=i(r),C=i(u)===u,k=await(null==c.isRTL?void 0:c.isRTL(p.floating)),w=f||(C||!_?[A(u)]:function(e){const t=A(e);return[F(e),t,F(t)]}(u));f||"none"===v||w.push(...function(e,t,n,r){const o=a(e);let s=function(e,t,n){const a=["left","right"],r=["right","left"],i=["top","bottom"],o=["bottom","top"];switch(e){case"top":case"bottom":return n?t?r:a:t?a:r;case"left":case"right":return t?i:o;default:return[]}}(i(e),"start"===n,r);return o&&(s=s.map((e=>e+"-"+o)),t&&(s=s.concat(s.map(F)))),s}(u,_,v,k));const S=[u,...w],E=await d(t,y),D=[];let x=(null==(n=o.flip)?void 0:n.overflows)||[];if(h&&D.push(E[T]),m){const{main:e,cross:t}=b(r,s,k);D.push(E[e],E[t])}if(x=[...x,{placement:r,overflows:D}],!D.every((e=>e<=0))){var N,O;const e=((null==(N=o.flip)?void 0:N.index)||0)+1,t=S[e];if(t)return{data:{index:e,overflows:x},reset:{placement:t}};let n=null==(O=x.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(g){case"bestFit":{var j;const e=null==(j=x.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:j[0];e&&(n=e);break}case"initialPlacement":n=u}if(r!==n)return{reset:{placement:n}}}return{}}}};function k(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function w(e){return g.some((t=>e[t]>=0))}const S=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:a="referenceHidden",...r}=l(e,t);switch(a){case"referenceHidden":{const e=k(await d(t,{...r,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:w(e)}}}case"escaped":{const e=k(await d(t,{...r,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:w(e)}}}default:return{}}}}};function E(e){const t=p(...e.map((e=>e.left))),n=p(...e.map((e=>e.top)));return{x:t,y:n,width:h(...e.map((e=>e.right)))-t,height:h(...e.map((e=>e.bottom)))-n}}const D=function(e){return void 0===e&&(e={}),{name:"inline",options:e,async fn(t){const{placement:n,elements:a,rects:r,platform:s,strategy:d}=t,{padding:m=2,x:f,y:g}=l(e,t),v=Array.from(await(null==s.getClientRects?void 0:s.getClientRects(a.reference))||[]),_=function(e){const t=e.slice().sort(((e,t)=>e.y-t.y)),n=[];let a=null;for(let e=0;ea.height/2?n.push([r]):n[n.length-1].push(r),a=r}return n.map((e=>c(E(e))))}(v),A=c(E(v)),b=u(m),y=await s.getElementRects({reference:{getBoundingClientRect:function(){if(2===_.length&&_[0].left>_[1].right&&null!=f&&null!=g)return _.find((e=>f>e.left-b.left&&fe.top-b.top&&g=2){if("x"===o(n)){const e=_[0],t=_[_.length-1],a="top"===i(n),r=e.top,o=t.bottom,s=a?e.left:t.left,l=a?e.right:t.right;return{top:r,bottom:o,left:s,right:l,width:l-s,height:o-r,x:s,y:r}}const e="left"===i(n),t=h(..._.map((e=>e.right))),a=p(..._.map((e=>e.left))),r=_.filter((n=>e?n.left===a:n.right===t)),s=r[0].top,l=r[r.length-1].bottom;return{top:s,bottom:l,left:a,right:t,width:t-a,height:l-s,x:a,y:s}}return A}},floating:a.floating,strategy:d});return r.reference.x!==y.reference.x||r.reference.y!==y.reference.y||r.reference.width!==y.reference.width||r.reference.height!==y.reference.height?{reset:{rects:y}}:{}}}},x=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,s=await async function(e,t){const{placement:n,platform:r,elements:s}=e,u=await(null==r.isRTL?void 0:r.isRTL(s.floating)),c=i(n),d=a(n),p="x"===o(n),h=["left","top"].includes(c)?-1:1,m=u&&p?-1:1,f=l(t,e);let{mainAxis:g,crossAxis:v,alignmentAxis:_}="number"==typeof f?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...f};return d&&"number"==typeof _&&(v="end"===d?-1*_:_),p?{x:v*m,y:g*h}:{x:g*h,y:v*m}}(t,e);return{x:n+s.x,y:r+s.y,data:s}}}};function N(e){return"x"===e?"y":"x"}const O=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:a,placement:r}=t,{mainAxis:s=!0,crossAxis:u=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...p}=l(e,t),h={x:n,y:a},f=await d(t,p),g=o(i(r)),v=N(g);let _=h[g],A=h[v];if(s){const e="y"===g?"bottom":"right";_=m(_+f["y"===g?"top":"left"],_,_-f[e])}if(u){const e="y"===v?"bottom":"right";A=m(A+f["y"===v?"top":"left"],A,A-f[e])}const b=c.fn({...t,[g]:_,[v]:A});return{...b,data:{x:b.x-n,y:b.y-a}}}}},j=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:a,placement:r,rects:s,middlewareData:u}=t,{offset:c=0,mainAxis:d=!0,crossAxis:p=!0}=l(e,t),h={x:n,y:a},m=o(r),f=N(m);let g=h[m],v=h[f];const _=l(c,t),A="number"==typeof _?{mainAxis:_,crossAxis:0}:{mainAxis:0,crossAxis:0,..._};if(d){const e="y"===m?"height":"width",t=s.reference[m]-s.floating[e]+A.mainAxis,n=s.reference[m]+s.reference[e]-A.mainAxis;gn&&(g=n)}if(p){var b,y;const e="y"===m?"width":"height",t=["top","left"].includes(i(r)),n=s.reference[f]-s.floating[e]+(t&&(null==(b=u.offset)?void 0:b[f])||0)+(t?0:A.crossAxis),a=s.reference[f]+s.reference[e]+(t?0:(null==(y=u.offset)?void 0:y[f])||0)-(t?A.crossAxis:0);va&&(v=a)}return{[m]:g,[f]:v}}}},M=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:s,elements:u}=t,{apply:c=(()=>{}),...m}=l(e,t),f=await d(t,m),g=i(n),v=a(n),_="x"===o(n),{width:A,height:b}=r.floating;let y,F;"top"===g||"bottom"===g?(y=g,F=v===(await(null==s.isRTL?void 0:s.isRTL(u.floating))?"start":"end")?"left":"right"):(F=g,y="end"===v?"top":"bottom");const T=b-f[y],C=A-f[F],k=!t.middlewareData.shift;let w=T,S=C;if(_){const e=A-f.left-f.right;S=v||k?p(C,e):e}else{const e=b-f.top-f.bottom;w=v||k?p(T,e):e}if(k&&!v){const e=h(f.left,0),t=h(f.right,0),n=h(f.top,0),a=h(f.bottom,0);_?S=A-2*(0!==e||0!==t?e+t:h(f.left,f.right)):w=b-2*(0!==n||0!==a?n+a:h(f.top,f.bottom))}await c({...t,availableWidth:S,availableHeight:w});const E=await s.getDimensions(u.floating);return A!==E.width||b!==E.height?{reset:{rects:!0}}:{}}}};function R(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function P(e){return R(e).getComputedStyle(e)}function B(e){return e instanceof R(e).Node}function L(e){return B(e)?(e.nodeName||"").toLowerCase():"#document"}function z(e){return e instanceof R(e).HTMLElement}function I(e){return e instanceof R(e).Element}function Y(e){return"undefined"!=typeof ShadowRoot&&(e instanceof R(e).ShadowRoot||e instanceof ShadowRoot)}function Z(e){const{overflow:t,overflowX:n,overflowY:a,display:r}=P(e);return/auto|scroll|overlay|hidden|clip/.test(t+a+n)&&!["inline","contents"].includes(r)}function U(e){return["table","td","th"].includes(L(e))}function G(e){const t=H(),n=P(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function H(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function $(e){return["html","body","#document"].includes(L(e))}const q=Math.min,V=Math.max,W=Math.round,K=Math.floor,Q=e=>({x:e,y:e});function J(e){const t=P(e);let n=parseFloat(t.width)||0,a=parseFloat(t.height)||0;const r=z(e),i=r?e.offsetWidth:n,o=r?e.offsetHeight:a,s=W(n)!==i||W(a)!==o;return s&&(n=i,a=o),{width:n,height:a,$:s}}function X(e){return I(e)?e:e.contextElement}function ee(e){const t=X(e);if(!z(t))return Q(1);const n=t.getBoundingClientRect(),{width:a,height:r,$:i}=J(t);let o=(i?W(n.width):n.width)/a,s=(i?W(n.height):n.height)/r;return o&&Number.isFinite(o)||(o=1),s&&Number.isFinite(s)||(s=1),{x:o,y:s}}const te=Q(0);function ne(e,t,n){var a,r;if(void 0===t&&(t=!0),!H())return te;const i=e?R(e):window;return!n||t&&n!==i?te:{x:(null==(a=i.visualViewport)?void 0:a.offsetLeft)||0,y:(null==(r=i.visualViewport)?void 0:r.offsetTop)||0}}function ae(e,t,n,a){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),i=X(e);let o=Q(1);t&&(a?I(a)&&(o=ee(a)):o=ee(e));const s=ne(i,n,a);let l=(r.left+s.x)/o.x,u=(r.top+s.y)/o.y,d=r.width/o.x,p=r.height/o.y;if(i){const e=R(i),t=a&&I(a)?R(a):a;let n=e.frameElement;for(;n&&a&&t!==e;){const e=ee(n),t=n.getBoundingClientRect(),a=getComputedStyle(n),r=t.left+(n.clientLeft+parseFloat(a.paddingLeft))*e.x,i=t.top+(n.clientTop+parseFloat(a.paddingTop))*e.y;l*=e.x,u*=e.y,d*=e.x,p*=e.y,l+=r,u+=i,n=R(n).frameElement}}return c({width:d,height:p,x:l,y:u})}function re(e){return((B(e)?e.ownerDocument:e.document)||window.document).documentElement}function ie(e){return I(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function oe(e){return ae(re(e)).left+ie(e).scrollLeft}function se(e){if("html"===L(e))return e;const t=e.assignedSlot||e.parentNode||Y(e)&&e.host||re(e);return Y(t)?t.host:t}function le(e){const t=se(e);return $(t)?e.ownerDocument?e.ownerDocument.body:e.body:z(t)&&Z(t)?t:le(t)}function ue(e,t){var n;void 0===t&&(t=[]);const a=le(e),r=a===(null==(n=e.ownerDocument)?void 0:n.body),i=R(a);return r?t.concat(i,i.visualViewport||[],Z(a)?a:[]):t.concat(a,ue(a))}function ce(e,t,n){let a;if("viewport"===t)a=function(e,t){const n=R(e),a=re(e),r=n.visualViewport;let i=a.clientWidth,o=a.clientHeight,s=0,l=0;if(r){i=r.width,o=r.height;const e=H();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:i,height:o,x:s,y:l}}(e,n);else if("document"===t)a=function(e){const t=re(e),n=ie(e),a=e.ownerDocument.body,r=V(t.scrollWidth,t.clientWidth,a.scrollWidth,a.clientWidth),i=V(t.scrollHeight,t.clientHeight,a.scrollHeight,a.clientHeight);let o=-n.scrollLeft+oe(e);const s=-n.scrollTop;return"rtl"===P(a).direction&&(o+=V(t.clientWidth,a.clientWidth)-r),{width:r,height:i,x:o,y:s}}(re(e));else if(I(t))a=function(e,t){const n=ae(e,!0,"fixed"===t),a=n.top+e.clientTop,r=n.left+e.clientLeft,i=z(e)?ee(e):Q(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:a*i.y}}(t,n);else{const n=ne(e);a={...t,x:t.x-n.x,y:t.y-n.y}}return c(a)}function de(e,t){const n=se(e);return!(n===t||!I(n)||$(n))&&("fixed"===P(n).position||de(n,t))}function pe(e,t){return z(e)&&"fixed"!==P(e).position?t?t(e):e.offsetParent:null}function he(e,t){const n=R(e);if(!z(e))return n;let a=pe(e,t);for(;a&&U(a)&&"static"===P(a).position;)a=pe(a,t);return a&&("html"===L(a)||"body"===L(a)&&"static"===P(a).position&&!G(a))?n:a||function(e){let t=se(e);for(;z(t)&&!$(t);){if(G(t))return t;t=se(t)}return null}(e)||n}function me(e,t,n){const a=z(t),r=re(t),i="fixed"===n,o=ae(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=Q(0);if(a||!a&&!i)if(("body"!==L(t)||Z(r))&&(s=ie(t)),z(t)){const e=ae(t,!0,i,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else r&&(l.x=oe(r));return{x:o.left+s.scrollLeft-l.x,y:o.top+s.scrollTop-l.y,width:o.width,height:o.height}}const fe={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:a,strategy:r}=e;const i=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let a=ue(e).filter((e=>I(e)&&"body"!==L(e))),r=null;const i="fixed"===P(e).position;let o=i?se(e):e;for(;I(o)&&!$(o);){const t=P(o),n=G(o);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||Z(o)&&!n&&de(e,o))?a=a.filter((e=>e!==o)):r=t,o=se(o)}return t.set(e,a),a}(t,this._c):[].concat(n),a],o=i[0],s=i.reduce(((e,n)=>{const a=ce(t,n,r);return e.top=V(a.top,e.top),e.right=q(a.right,e.right),e.bottom=q(a.bottom,e.bottom),e.left=V(a.left,e.left),e}),ce(t,o,r));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:a}=e;const r=z(n),i=re(n);if(n===i)return t;let o={scrollLeft:0,scrollTop:0},s=Q(1);const l=Q(0);if((r||!r&&"fixed"!==a)&&(("body"!==L(n)||Z(i))&&(o=ie(n)),z(n))){const e=ae(n);s=ee(n),l.x=e.x+n.clientLeft,l.y=e.y+n.clientTop}return{width:t.width*s.x,height:t.height*s.y,x:t.x*s.x-o.scrollLeft*s.x+l.x,y:t.y*s.y-o.scrollTop*s.y+l.y}},isElement:I,getDimensions:function(e){return J(e)},getOffsetParent:he,getDocumentElement:re,getScale:ee,async getElementRects(e){let{reference:t,floating:n,strategy:a}=e;const r=this.getOffsetParent||he,i=this.getDimensions;return{reference:me(t,await r(n),a),floating:{x:0,y:0,...await i(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===P(e).direction};function ge(e,t,n,a){void 0===a&&(a={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:o=!0,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=a,u=X(e),c=r||i?[...u?ue(u):[],...ue(t)]:[];c.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),i&&e.addEventListener("resize",n)}));const d=u&&s?function(e,t){let n,a=null;const r=re(e);function i(){clearTimeout(n),a&&a.disconnect(),a=null}return function o(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),i();const{left:u,top:c,width:d,height:p}=e.getBoundingClientRect();if(s||t(),!d||!p)return;const h=K(c),m=K(r.clientWidth-(u+d)),f=K(r.clientHeight-(c+p)),g=K(u);let v=!0;a=new IntersectionObserver((e=>{const t=e[0].intersectionRatio;if(t!==l){if(!v)return o();t?o(!1,t):n=setTimeout((()=>{o(!1,1e-7)}),100)}v=!1}),{rootMargin:-h+"px "+-m+"px "+-f+"px "+-g+"px",threshold:V(0,q(1,l))||1}),a.observe(e)}(!0),i}(u,n):null;let p,h=null;o&&(h=new ResizeObserver(n),u&&!l&&h.observe(u),h.observe(t));let m=l?ae(e):null;return l&&function t(){const a=ae(e);!m||a.x===m.x&&a.y===m.y&&a.width===m.width&&a.height===m.height||n(),m=a,p=requestAnimationFrame(t)}(),n(),()=>{c.forEach((e=>{r&&e.removeEventListener("scroll",n),i&&e.removeEventListener("resize",n)})),d&&d(),h&&h.disconnect(),h=null,l&&cancelAnimationFrame(p)}}const ve=(e,t,n)=>{const a=new Map,r={platform:fe,...n},i={...r.platform,_c:a};return(async(e,t,n)=>{const{placement:a="bottom",strategy:r="absolute",middleware:i=[],platform:o}=n,l=i.filter(Boolean),u=await(null==o.isRTL?void 0:o.isRTL(t));let c=await o.getElementRects({reference:e,floating:t,strategy:r}),{x:d,y:p}=s(c,a,u),h=a,m={},f=0;for(let n=0;n{"use strict";var a=n(50791),r=Object.prototype.hasOwnProperty,i={align:"text-align",valign:"vertical-align",height:"height",width:"width"};function o(e){var t;if("tr"===e.tagName||"td"===e.tagName||"th"===e.tagName)for(t in i)r.call(i,t)&&void 0!==e.properties[t]&&(s(e,i[t],e.properties[t]),delete e.properties[t])}function s(e,t,n){var a=(e.properties.style||"").trim();a&&!/;\s*/.test(a)&&(a+=";"),a&&(a+=" ");var r=a+t+": "+n+";";e.properties.style=r}e.exports=function(e){return a(e,"element",o),e}},93790:e=>{"use strict";function t(e){if("string"==typeof e)return function(e){return function(t){return Boolean(t&&t.type===e)}}(e);if(null==e)return r;if("object"==typeof e)return("length"in e?a:n)(e);if("function"==typeof e)return e;throw new Error("Expected function, string, or object as test")}function n(e){return function(t){var n;for(n in e)if(t[n]!==e[n])return!1;return!0}}function a(e){var n=function(e){for(var n=[],a=e.length,r=-1;++r{"use strict";e.exports=s;var a=n(93790),r=!0,i="skip",o=!1;function s(e,t,n,r){var s;"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),s=a(t),function e(a,u,c){var d,p=[];return(t&&!s(a,u,c[c.length-1]||null)||(p=l(n(a,c)))[0]!==o)&&a.children&&p[0]!==i?(d=l(function(t,n){for(var a,i=r?-1:1,s=(r?t.length:-1)+i;s>-1&&s{"use strict";e.exports=s;var a=n(11150),r=a.CONTINUE,i=a.SKIP,o=a.EXIT;function s(e,t,n,r){"function"==typeof t&&"function"!=typeof n&&(r=n,n=t,t=null),a(e,t,(function(e,t){var a=t[t.length-1],r=a?a.children.indexOf(e):null;return n(e,r,a)}),r)}s.CONTINUE=r,s.SKIP=i,s.EXIT=o},22200:(e,t,n)=>{"use strict";var a=n(25108),r=n(57888),i=void 0,o=[];r.subscribe("csrf-token-update",(function(e){i=e.token,o.forEach((function(t){try{t(e.token)}catch(e){a.error("error updating CSRF token observer",e)}}))}));var s=function(e,t){return e?e.getAttribute(t):null},l=void 0;t.getCurrentUser=function(){if(void 0!==l)return l;var e=null===document||void 0===document?void 0:document.getElementsByTagName("head")[0];if(!e)return null;var t=s(e,"data-user");return l=null===t?null:{uid:t,displayName:s(e,"data-user-displayname"),isAdmin:"undefined"!=typeof OC&&OC.isUserAdmin()}},t.getRequestToken=function(){if(void 0===i){var e=null===document||void 0===document?void 0:document.getElementsByTagName("head")[0];i=e?e.getAttribute("data-requesttoken"):null}return i},t.onRequestTokenUpdate=function(e){o.push(e)}},26937:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var a=n(9669),r=n.n(a),i=n(77958),o=n(79753),s=n(25108);const l=Symbol("csrf-retry"),u=Symbol("retryDelay"),c=r().create({headers:{requesttoken:(0,i.IH)()??""}}),d=Object.assign(c,{CancelToken:r().CancelToken,isCancel:r().isCancel});var p;d.interceptors.response.use((e=>e),(p=d,async e=>{const{config:t,response:n,request:a}=e,r=a?.responseURL,i=n?.status;if(412===i&&"CSRF check failed"===n?.data?.message&&void 0===t[l]){s.warn(`Request to ${r} failed because of a CSRF mismatch. Fetching a new token`);const{data:{token:e}}=await p.get((0,o.generateUrl)("/csrftoken"));return s.debug(`New request token ${e} fetched`),p.defaults.headers.requesttoken=e,p({...t,headers:{...t.headers,requesttoken:e},[l]:!0})}return Promise.reject(e)})),d.interceptors.response.use((e=>e),(e=>async t=>{const{config:n,response:a,request:r}=t,i=r?.responseURL,o=a?.status,l=a?.headers;if(503===o&&"1"===l["x-nextcloud-maintenance-mode"]&&n.retryIfMaintenanceMode&&(!n[u]||n[u]<=32)){const t=2*(n[u]??1);return s.warn(`Request to ${i} failed because of maintenance mode. Retrying in ${t}s`),await new Promise(((e,n)=>{setTimeout(e,1e3*t)})),e({...n,[u]:t})}return Promise.reject(t)})(d)),d.interceptors.response.use((e=>e),(async e=>{const{config:t,response:n,request:a}=e,r=a?.responseURL,i=n?.status;return 401===i&&"Current user is not logged in"===n?.data?.message&&t.reloadExpiredSession&&window?.location&&(s.error(`Request to ${r} failed because the user session expired. Reloading the page …`),window.location.reload()),Promise.reject(e)})),(0,i._S)((e=>c.defaults.headers.requesttoken=e))},4820:(e,t,n)=>{"use strict";var a=n(25108),r=n(9669),i=n(22200),o=n(79753);function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=s(r),u=function(){return u=Object.assign||function(e){for(var t,n=1,a=arguments.length;n0&&r[r.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]{"use strict";n(74013),Object.defineProperty(t,"__esModule",{value:!0}),t.clearAll=function(){[window.sessionStorage,window.localStorage].map((function(e){return o(e)}))},t.clearNonPersistent=function(){[window.sessionStorage,window.localStorage].map((function(e){return o(e,(function(e){return!e.startsWith(r.default.GLOBAL_SCOPE_PERSISTENT)}))}))},t.getBuilder=function(e){return new a.default(e)},n(25918),n(73292),n(11053),n(38227),n(43584);var a=i(n(71957)),r=i(n(48971));function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){Object.keys(e).filter((function(e){return!t||t(e)})).map(e.removeItem.bind(e))}},48971:(e,t,n)=>{"use strict";function a(e,t){for(var n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,n(74013);var a,r=(a=n(48971))&&a.__esModule?a:{default:a};function i(e,t){for(var n=0;n0&&void 0!==arguments[0])||arguments[0];return this.persisted=e,this}},{key:"clearOnLogout",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.clearedOnLogout=e,this}},{key:"build",value:function(){return new r.default(this.appId,this.persisted?window.localStorage:window.sessionStorage,!this.clearedOnLogout)}}],n&&i(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=s},54350:(e,t,n)=>{var a=n(41068),r=n(92967),i=TypeError;e.exports=function(e){if(a(e))return e;throw i(r(e)+" is not a function")}},20266:(e,t,n)=>{var a=n(2167),r=String,i=TypeError;e.exports=function(e){if(a(e))return e;throw i(r(e)+" is not an object")}},31524:(e,t,n)=>{var a=n(75775),r=n(47518),i=n(11356),o=function(e){return function(t,n,o){var s,l=a(t),u=i(l),c=r(o,u);if(e&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:o(!0),indexOf:o(!1)}},99910:(e,t,n)=>{var a=n(53318),r=n(31461),i=n(49479),o=n(44937),s=n(11356),l=n(79315),u=r([].push),c=function(e){var t=1==e,n=2==e,r=3==e,c=4==e,d=6==e,p=7==e,h=5==e||d;return function(m,f,g,v){for(var _,A,b=o(m),y=i(b),F=a(f,g),T=s(y),C=0,k=v||l,w=t?k(m,T):n||p?k(m,0):void 0;T>C;C++)if((h||C in y)&&(A=F(_=y[C],C,b),e))if(t)w[C]=A;else if(A)switch(e){case 3:return!0;case 5:return _;case 6:return C;case 2:u(w,_)}else switch(e){case 4:return!1;case 7:u(w,_)}return d?-1:r||c?c:w}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterReject:c(7)}},3919:(e,t,n)=>{var a=n(28590),r=n(81141),i=n(23092),o=r("species");e.exports=function(e){return i>=51||!a((function(){var t=[];return(t.constructor={})[o]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},5096:(e,t,n)=>{var a=n(12075),r=n(81340),i=n(2167),o=n(81141)("species"),s=Array;e.exports=function(e){var t;return a(e)&&(t=e.constructor,(r(t)&&(t===s||a(t.prototype))||i(t)&&null===(t=t[o]))&&(t=void 0)),void 0===t?s:t}},79315:(e,t,n)=>{var a=n(5096);e.exports=function(e,t){return new(a(e))(0===t?0:t)}},84692:(e,t,n)=>{var a=n(90459),r=a({}.toString),i=a("".slice);e.exports=function(e){return i(r(e),8,-1)}},55396:(e,t,n)=>{var a=n(97752),r=n(41068),i=n(84692),o=n(81141)("toStringTag"),s=Object,l="Arguments"==i(function(){return arguments}());e.exports=a?i:function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=s(e),o))?n:l?i(t):"Object"==(a=i(t))&&r(t.callee)?"Arguments":a}},20541:(e,t,n)=>{var a=n(59944),r=n(66794),i=n(40647),o=n(19974);e.exports=function(e,t,n){for(var s=r(t),l=o.f,u=i.f,c=0;c{var a=n(81141)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[a]=!1,"/./"[e](t)}catch(e){}}return!1}},25208:(e,t,n)=>{var a=n(28646),r=n(19974),i=n(82071);e.exports=a?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},82071:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},90024:(e,t,n)=>{"use strict";var a=n(13696),r=n(19974),i=n(82071);e.exports=function(e,t,n){var o=a(t);o in e?r.f(e,o,i(0,n)):e[o]=n}},18524:(e,t,n)=>{var a=n(41068),r=n(19974),i=n(78497),o=n(44200);e.exports=function(e,t,n,s){s||(s={});var l=s.enumerable,u=void 0!==s.name?s.name:t;if(a(n)&&i(n,u,s),s.global)l?e[t]=n:o(t,n);else{try{s.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=n:r.f(e,t,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},44200:(e,t,n)=>{var a=n(84586),r=Object.defineProperty;e.exports=function(e,t){try{r(a,e,{value:t,configurable:!0,writable:!0})}catch(n){a[e]=t}return t}},28646:(e,t,n)=>{var a=n(28590);e.exports=!a((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},73474:e=>{var t="object"==typeof document&&document.all,n=void 0===t&&void 0!==t;e.exports={all:t,IS_HTMLDDA:n}},71871:(e,t,n)=>{var a=n(84586),r=n(2167),i=a.document,o=r(i)&&r(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},41112:e=>{var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},16996:(e,t,n)=>{var a=n(63930);e.exports=a("navigator","userAgent")||""},23092:(e,t,n)=>{var a,r,i=n(84586),o=n(16996),s=i.process,l=i.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(r=(a=c.split("."))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!r&&o&&(!(a=o.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=o.match(/Chrome\/(\d+)/))&&(r=+a[1]),e.exports=r},29276:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},58615:(e,t,n)=>{var a=n(84586),r=n(40647).f,i=n(25208),o=n(18524),s=n(44200),l=n(20541),u=n(66673);e.exports=function(e,t){var n,c,d,p,h,m=e.target,f=e.global,g=e.stat;if(n=f?a:g?a[m]||s(m,{}):(a[m]||{}).prototype)for(c in t){if(p=t[c],d=e.dontCallGetSet?(h=r(n,c))&&h.value:n[c],!u(f?c:m+(g?".":"#")+c,e.forced)&&void 0!==d){if(typeof p==typeof d)continue;l(p,d)}(e.sham||d&&d.sham)&&i(p,"sham",!0),o(n,c,p,e)}}},28590:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},53318:(e,t,n)=>{var a=n(31461),r=n(54350),i=n(8309),o=a(a.bind);e.exports=function(e,t){return r(e),void 0===t?e:i?o(e,t):function(){return e.apply(t,arguments)}}},8309:(e,t,n)=>{var a=n(28590);e.exports=!a((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},70607:(e,t,n)=>{var a=n(8309),r=Function.prototype.call;e.exports=a?r.bind(r):function(){return r.apply(r,arguments)}},55937:(e,t,n)=>{var a=n(28646),r=n(59944),i=Function.prototype,o=a&&Object.getOwnPropertyDescriptor,s=r(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!a||a&&o(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},90459:(e,t,n)=>{var a=n(8309),r=Function.prototype,i=r.call,o=a&&r.bind.bind(i,i);e.exports=function(e){return a?o(e):function(){return i.apply(e,arguments)}}},31461:(e,t,n)=>{var a=n(84692),r=n(90459);e.exports=function(e){if("Function"===a(e))return r(e)}},63930:(e,t,n)=>{var a=n(84586),r=n(41068);e.exports=function(e,t){return arguments.length<2?(n=a[e],r(n)?n:void 0):a[e]&&a[e][t];var n}},14849:(e,t,n)=>{var a=n(54350),r=n(54567);e.exports=function(e,t){var n=e[t];return r(n)?void 0:a(n)}},84586:(e,t,n)=>{var a=function(e){return e&&e.Math==Math&&e};e.exports=a("object"==typeof globalThis&&globalThis)||a("object"==typeof window&&window)||a("object"==typeof self&&self)||a("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},59944:(e,t,n)=>{var a=n(31461),r=n(44937),i=a({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(r(e),t)}},86275:e=>{e.exports={}},24959:(e,t,n)=>{var a=n(28646),r=n(28590),i=n(71871);e.exports=!a&&!r((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},49479:(e,t,n)=>{var a=n(31461),r=n(28590),i=n(84692),o=Object,s=a("".split);e.exports=r((function(){return!o("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?s(e,""):o(e)}:o},24850:(e,t,n)=>{var a=n(31461),r=n(41068),i=n(39530),o=a(Function.toString);r(i.inspectSource)||(i.inspectSource=function(e){return o(e)}),e.exports=i.inspectSource},23042:(e,t,n)=>{var a,r,i,o=n(66951),s=n(84586),l=n(2167),u=n(25208),c=n(59944),d=n(39530),p=n(75019),h=n(86275),m="Object already initialized",f=s.TypeError,g=s.WeakMap;if(o||d.state){var v=d.state||(d.state=new g);v.get=v.get,v.has=v.has,v.set=v.set,a=function(e,t){if(v.has(e))throw f(m);return t.facade=e,v.set(e,t),t},r=function(e){return v.get(e)||{}},i=function(e){return v.has(e)}}else{var _=p("state");h[_]=!0,a=function(e,t){if(c(e,_))throw f(m);return t.facade=e,u(e,_,t),t},r=function(e){return c(e,_)?e[_]:{}},i=function(e){return c(e,_)}}e.exports={set:a,get:r,has:i,enforce:function(e){return i(e)?r(e):a(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=r(t)).type!==e)throw f("Incompatible receiver, "+e+" required");return n}}}},12075:(e,t,n)=>{var a=n(84692);e.exports=Array.isArray||function(e){return"Array"==a(e)}},41068:(e,t,n)=>{var a=n(73474),r=a.all;e.exports=a.IS_HTMLDDA?function(e){return"function"==typeof e||e===r}:function(e){return"function"==typeof e}},81340:(e,t,n)=>{var a=n(31461),r=n(28590),i=n(41068),o=n(55396),s=n(63930),l=n(24850),u=function(){},c=[],d=s("Reflect","construct"),p=/^\s*(?:class|function)\b/,h=a(p.exec),m=!p.exec(u),f=function(e){if(!i(e))return!1;try{return d(u,c,e),!0}catch(e){return!1}},g=function(e){if(!i(e))return!1;switch(o(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return m||!!h(p,l(e))}catch(e){return!0}};g.sham=!0,e.exports=!d||r((function(){var e;return f(f.call)||!f(Object)||!f((function(){e=!0}))||e}))?g:f},66673:(e,t,n)=>{var a=n(28590),r=n(41068),i=/#|\.prototype\./,o=function(e,t){var n=l[s(e)];return n==c||n!=u&&(r(t)?a(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},l=o.data={},u=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},54567:e=>{e.exports=function(e){return null==e}},2167:(e,t,n)=>{var a=n(41068),r=n(73474),i=r.all;e.exports=r.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:a(e)||e===i}:function(e){return"object"==typeof e?null!==e:a(e)}},21935:e=>{e.exports=!1},35696:(e,t,n)=>{var a=n(2167),r=n(84692),i=n(81141)("match");e.exports=function(e){var t;return a(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==r(e))}},2016:(e,t,n)=>{var a=n(63930),r=n(41068),i=n(95119),o=n(91677),s=Object;e.exports=o?function(e){return"symbol"==typeof e}:function(e){var t=a("Symbol");return r(t)&&i(t.prototype,s(e))}},11356:(e,t,n)=>{var a=n(1138);e.exports=function(e){return a(e.length)}},78497:(e,t,n)=>{var a=n(28590),r=n(41068),i=n(59944),o=n(28646),s=n(55937).CONFIGURABLE,l=n(24850),u=n(23042),c=u.enforce,d=u.get,p=Object.defineProperty,h=o&&!a((function(){return 8!==p((function(){}),"length",{value:8}).length})),m=String(String).split("String"),f=e.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!i(e,"name")||s&&e.name!==t)&&(o?p(e,"name",{value:t,configurable:!0}):e.name=t),h&&n&&i(n,"arity")&&e.length!==n.arity&&p(e,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?o&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var a=c(e);return i(a,"source")||(a.source=m.join("string"==typeof t?t:"")),e};Function.prototype.toString=f((function(){return r(this)&&d(this).source||l(this)}),"toString")},67056:e=>{var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var a=+e;return(a>0?n:t)(a)}},22651:(e,t,n)=>{var a=n(35696),r=TypeError;e.exports=function(e){if(a(e))throw r("The method doesn't accept regular expressions");return e}},19974:(e,t,n)=>{var a=n(28646),r=n(24959),i=n(98692),o=n(20266),s=n(13696),l=TypeError,u=Object.defineProperty,c=Object.getOwnPropertyDescriptor,d="enumerable",p="configurable",h="writable";t.f=a?i?function(e,t,n){if(o(e),t=s(t),o(n),"function"==typeof e&&"prototype"===t&&"value"in n&&h in n&&!n[h]){var a=c(e,t);a&&a[h]&&(e[t]=n.value,n={configurable:p in n?n[p]:a[p],enumerable:d in n?n[d]:a[d],writable:!1})}return u(e,t,n)}:u:function(e,t,n){if(o(e),t=s(t),o(n),r)try{return u(e,t,n)}catch(e){}if("get"in n||"set"in n)throw l("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},40647:(e,t,n)=>{var a=n(28646),r=n(70607),i=n(459),o=n(82071),s=n(75775),l=n(13696),u=n(59944),c=n(24959),d=Object.getOwnPropertyDescriptor;t.f=a?d:function(e,t){if(e=s(e),t=l(t),c)try{return d(e,t)}catch(e){}if(u(e,t))return o(!r(i.f,e,t),e[t])}},28969:(e,t,n)=>{var a=n(62121),r=n(29276).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return a(e,r)}},80724:(e,t)=>{t.f=Object.getOwnPropertySymbols},95119:(e,t,n)=>{var a=n(31461);e.exports=a({}.isPrototypeOf)},62121:(e,t,n)=>{var a=n(31461),r=n(59944),i=n(75775),o=n(31524).indexOf,s=n(86275),l=a([].push);e.exports=function(e,t){var n,a=i(e),u=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&l(c,n);for(;t.length>u;)r(a,n=t[u++])&&(~o(c,n)||l(c,n));return c}},83147:(e,t,n)=>{var a=n(62121),r=n(29276);e.exports=Object.keys||function(e){return a(e,r)}},459:(e,t)=>{"use strict";var n={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,r=a&&!n.call({1:2},1);t.f=r?function(e){var t=a(this,e);return!!t&&t.enumerable}:n},3134:(e,t,n)=>{"use strict";var a=n(97752),r=n(55396);e.exports=a?{}.toString:function(){return"[object "+r(this)+"]"}},46921:(e,t,n)=>{var a=n(70607),r=n(41068),i=n(2167),o=TypeError;e.exports=function(e,t){var n,s;if("string"===t&&r(n=e.toString)&&!i(s=a(n,e)))return s;if(r(n=e.valueOf)&&!i(s=a(n,e)))return s;if("string"!==t&&r(n=e.toString)&&!i(s=a(n,e)))return s;throw o("Can't convert object to primitive value")}},66794:(e,t,n)=>{var a=n(63930),r=n(31461),i=n(28969),o=n(80724),s=n(20266),l=r([].concat);e.exports=a("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?l(t,n(e)):t}},24063:(e,t,n)=>{var a=n(54567),r=TypeError;e.exports=function(e){if(a(e))throw r("Can't call method on "+e);return e}},75019:(e,t,n)=>{var a=n(25484),r=n(9299),i=a("keys");e.exports=function(e){return i[e]||(i[e]=r(e))}},39530:(e,t,n)=>{var a=n(84586),r=n(44200),i="__core-js_shared__",o=a[i]||r(i,{});e.exports=o},25484:(e,t,n)=>{var a=n(21935),r=n(39530);(e.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.25.5",mode:a?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.25.5/LICENSE",source:"https://github.com/zloirock/core-js"})},2641:(e,t,n)=>{var a=n(23092),r=n(28590);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},47518:(e,t,n)=>{var a=n(38015),r=Math.max,i=Math.min;e.exports=function(e,t){var n=a(e);return n<0?r(n+t,0):i(n,t)}},75775:(e,t,n)=>{var a=n(49479),r=n(24063);e.exports=function(e){return a(r(e))}},38015:(e,t,n)=>{var a=n(67056);e.exports=function(e){var t=+e;return t!=t||0===t?0:a(t)}},1138:(e,t,n)=>{var a=n(38015),r=Math.min;e.exports=function(e){return e>0?r(a(e),9007199254740991):0}},44937:(e,t,n)=>{var a=n(24063),r=Object;e.exports=function(e){return r(a(e))}},4356:(e,t,n)=>{var a=n(70607),r=n(2167),i=n(2016),o=n(14849),s=n(46921),l=n(81141),u=TypeError,c=l("toPrimitive");e.exports=function(e,t){if(!r(e)||i(e))return e;var n,l=o(e,c);if(l){if(void 0===t&&(t="default"),n=a(l,e,t),!r(n)||i(n))return n;throw u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},13696:(e,t,n)=>{var a=n(4356),r=n(2016);e.exports=function(e){var t=a(e,"string");return r(t)?t:t+""}},97752:(e,t,n)=>{var a={};a[n(81141)("toStringTag")]="z",e.exports="[object z]"===String(a)},94371:(e,t,n)=>{var a=n(55396),r=String;e.exports=function(e){if("Symbol"===a(e))throw TypeError("Cannot convert a Symbol value to a string");return r(e)}},92967:e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},9299:(e,t,n)=>{var a=n(31461),r=0,i=Math.random(),o=a(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+o(++r+i,36)}},91677:(e,t,n)=>{var a=n(2641);e.exports=a&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},98692:(e,t,n)=>{var a=n(28646),r=n(28590);e.exports=a&&r((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},66951:(e,t,n)=>{var a=n(84586),r=n(41068),i=a.WeakMap;e.exports=r(i)&&/native code/.test(String(i))},81141:(e,t,n)=>{var a=n(84586),r=n(25484),i=n(59944),o=n(9299),s=n(2641),l=n(91677),u=r("wks"),c=a.Symbol,d=c&&c.for,p=l?c:c&&c.withoutSetter||o;e.exports=function(e){if(!i(u,e)||!s&&"string"!=typeof u[e]){var t="Symbol."+e;s&&i(c,e)?u[e]=c[e]:u[e]=l&&d?d(t):p(t)}return u[e]}},31013:(e,t,n)=>{"use strict";var a=n(58615),r=n(28590),i=n(12075),o=n(2167),s=n(44937),l=n(11356),u=n(41112),c=n(90024),d=n(79315),p=n(3919),h=n(81141),m=n(23092),f=h("isConcatSpreadable"),g=m>=51||!r((function(){var e=[];return e[f]=!1,e.concat()[0]!==e})),v=p("concat"),_=function(e){if(!o(e))return!1;var t=e[f];return void 0!==t?!!t:i(e)};a({target:"Array",proto:!0,arity:1,forced:!g||!v},{concat:function(e){var t,n,a,r,i,o=s(this),p=d(o,0),h=0;for(t=-1,a=arguments.length;t{"use strict";var a=n(58615),r=n(99910).filter;a({target:"Array",proto:!0,forced:!n(3919)("filter")},{filter:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}})},25918:(e,t,n)=>{"use strict";var a=n(58615),r=n(99910).map;a({target:"Array",proto:!0,forced:!n(3919)("map")},{map:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}})},74013:(e,t,n)=>{var a=n(58615),r=n(28646),i=n(19974).f;a({target:"Object",stat:!0,forced:Object.defineProperty!==i,sham:!r},{defineProperty:i})},38227:(e,t,n)=>{var a=n(58615),r=n(44937),i=n(83147);a({target:"Object",stat:!0,forced:n(28590)((function(){i(1)}))},{keys:function(e){return i(r(e))}})},11053:(e,t,n)=>{var a=n(97752),r=n(18524),i=n(3134);a||r(Object.prototype,"toString",i,{unsafe:!0})},43584:(e,t,n)=>{"use strict";var a,r=n(58615),i=n(31461),o=n(40647).f,s=n(1138),l=n(94371),u=n(22651),c=n(24063),d=n(33769),p=n(21935),h=i("".startsWith),m=i("".slice),f=Math.min,g=d("startsWith");r({target:"String",proto:!0,forced:!(!p&&!g&&(a=o(String.prototype,"startsWith"),a&&!a.writable)||g)},{startsWith:function(e){var t=l(c(this));u(e);var n=s(f(arguments.length>1?arguments[1]:void 0,t.length)),a=l(e);return h?h(t,a,n):m(t,n,n+a.length)===a}})},11278:(e,t,n)=>{"use strict";n.d(t,{ko:()=>ce});var a=n(18350),r=n.n(a),i=n(93744),o=n(13653),s=n(3958);var l=n(25108);class u extends Error{}function c(e){return class extends e{constructor(...e){super(...e),this._mutable=!0}isLocked(){return!this._mutable}lock(){this._mutable=!1}unlock(){this._mutable=!0}_modify(){if(!this._mutable)throw new u}_modifyContent(){this._modify()}}}class d extends Error{}function p(e){return e.toLowerCase()}function h(e){return e.toUpperCase()}function m(e){return e.charAt(0).toUpperCase()+e.slice(1)}function f(e,t){return e.startsWith(t)||(e=t+e),e}const g=new Map;function v(e,t){return g.get(e)||t}function _(e){return new(r().Property)(p(e))}function A(e){return class extends e{constructor(...e){super(...e),this._subscribers=[]}subscribe(e){this._subscribers.push(e)}unsubscribe(e){const t=this._subscribers.indexOf(e);-1!==t&&this._subscribers.splice(t,1)}_notifySubscribers(...e){for(const t of this._subscribers)t(...e)}}}class b extends(A(c(class{}))){constructor(e,t=null){super(),this._name=h(e),this._value=t}get name(){return this._name}get value(){return this._value}set value(e){this._modifyContent(),this._value=e}getFirstValue(){return this.isMultiValue()?this.value.length>0?this.value[0]:null:this.value}*getValueIterator(){this.isMultiValue()?yield*this.value.slice()[Symbol.iterator]():yield this.value}isMultiValue(){return Array.isArray(this._value)}clone(){const e=new this.constructor(this._name);return this.isMultiValue()?e.value=this._value.slice():e.value=this._value,e}_modifyContent(){super._modifyContent(),this._notifySubscribers()}}class y extends(A(c(class{}))){constructor(e){if(new.target===y)throw new TypeError("Cannot instantiate abstract class AbstractValue");super(),this._innerValue=e}toICALJs(){return this._innerValue}_modifyContent(){super._modifyContent(),this._notifySubscribers()}}class F extends y{get rawValue(){return this._innerValue.value}set rawValue(e){this._modifyContent(),this._innerValue.value=e}get value(){return this._innerValue.decodeValue()}set value(e){this._modifyContent(),this._innerValue.setEncodedValue(e)}clone(){return F.fromRawValue(this._innerValue.value)}static fromICALJs(e){return new F(e)}static fromRawValue(e){const t=new(r().Binary)(e);return F.fromICALJs(t)}static fromDecodedValue(e){const t=new(r().Binary);return t.setEncodedValue(e),F.fromICALJs(t)}}class T extends y{get weeks(){return this._innerValue.weeks}set weeks(e){if(this._modifyContent(),e<0)throw new TypeError("Weeks cannot be negative, use isNegative instead");this._innerValue.weeks=e}get days(){return this._innerValue.days}set days(e){if(this._modifyContent(),e<0)throw new TypeError("Days cannot be negative, use isNegative instead");this._innerValue.days=e}get hours(){return this._innerValue.hours}set hours(e){if(this._modifyContent(),e<0)throw new TypeError("Hours cannot be negative, use isNegative instead");this._innerValue.hours=e}get minutes(){return this._innerValue.minutes}set minutes(e){if(this._modifyContent(),e<0)throw new TypeError("Minutes cannot be negative, use isNegative instead");this._innerValue.minutes=e}get seconds(){return this._innerValue.seconds}set seconds(e){if(this._modifyContent(),e<0)throw new TypeError("Seconds cannot be negative, use isNegative instead");this._innerValue.seconds=e}get isNegative(){return this._innerValue.isNegative}set isNegative(e){this._modifyContent(),this._innerValue.isNegative=!!e}get totalSeconds(){return this._innerValue.toSeconds()}set totalSeconds(e){this._modifyContent(),this._innerValue.fromSeconds(e)}compare(e){return this._innerValue.compare(e.toICALJs())}addDuration(e){this._modifyContent(),this.totalSeconds+=e.totalSeconds,this._innerValue.normalize()}subtractDuration(e){this._modifyContent(),this.totalSeconds-=e.totalSeconds,this._innerValue.normalize()}clone(){return T.fromICALJs(this._innerValue.clone())}static fromICALJs(e){return new T(e)}static fromSeconds(e){const t=r().Duration.fromSeconds(e);return new T(t)}static fromData(e){const t=r().Duration.fromData(e);return new T(t)}}class C extends y{get year(){return this._innerValue.year}set year(e){this._modifyContent(),this._innerValue.year=e}get month(){return this._innerValue.month}set month(e){if(this._modifyContent(),e<1||e>12)throw new TypeError("Month out of range");this._innerValue.month=e}get day(){return this._innerValue.day}set day(e){if(this._modifyContent(),e<1||e>31)throw new TypeError("Day out of range");this._innerValue.day=e}get hour(){return this._innerValue.hour}set hour(e){if(this._modifyContent(),e<0||e>23)throw new TypeError("Hour out of range");this._innerValue.hour=e}get minute(){return this._innerValue.minute}set minute(e){if(this._modifyContent(),e<0||e>59)throw new TypeError("Minute out of range");this._innerValue.minute=e}get second(){return this._innerValue.second}set second(e){if(this._modifyContent(),e<0||e>59)throw new TypeError("Second out of range");this._innerValue.second=e}get timezoneId(){return this._innerValue.zone.tzid&&"floating"!==this._innerValue.zone.tzid&&"UTC"===this._innerValue.zone.tzid?this._innerValue.zone.tzid:this._innerValue.timezone?this._innerValue.timezone:this._innerValue.zone.tzid||null}get isDate(){return this._innerValue.isDate}set isDate(e){this._modifyContent(),this._innerValue.isDate=!!e,e&&(this._innerValue.hour=0,this._innerValue.minute=0,this._innerValue.second=0)}get unixTime(){return this._innerValue.toUnixTime()}get jsDate(){return this._innerValue.toJSDate()}addDuration(e){this._innerValue.addDuration(e.toICALJs())}subtractDateWithoutTimezone(e){const t=this._innerValue.subtractDate(e.toICALJs());return T.fromICALJs(t)}subtractDateWithTimezone(e){const t=this._innerValue.subtractDateTz(e.toICALJs());return T.fromICALJs(t)}compare(e){return this._innerValue.compare(e.toICALJs())}compareDateOnlyInGivenTimezone(e,t){return this._innerValue.compareDateOnlyTz(e.toICALJs(),t.toICALTimezone())}getInTimezone(e){const t=this._innerValue.convertToZone(e.toICALTimezone());return C.fromICALJs(t)}getICALTimezone(){return this._innerValue.zone}getInICALTimezone(e){const t=this._innerValue.convertToZone(e);return C.fromICALJs(t)}getInUTC(){const e=this._innerValue.convertToZone(r().Timezone.utcTimezone);return C.fromICALJs(e)}silentlyReplaceTimezone(e){this._modify(),this._innerValue=new(r().Time)({year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second,isDate:this.isDate,timezone:e})}replaceTimezone(e){this._modifyContent(),this._innerValue=r().Time.fromData({year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second,isDate:this.isDate},e.toICALTimezone())}utcOffset(){return this._innerValue.utcOffset()}isFloatingTime(){return"floating"===this._innerValue.zone.tzid}clone(){return C.fromICALJs(this._innerValue.clone())}static fromICALJs(e){return new C(e)}static fromJSDate(e,t=!1){const n=r().Time.fromJSDate(e,t);return C.fromICALJs(n)}static fromData(e,t){const n=r().Time.fromData(e,t?t.toICALTimezone():void 0);return C.fromICALJs(n)}}C.SUNDAY=r().Time.SUNDAY,C.MONDAY=r().Time.MONDAY,C.TUESDAY=r().Time.TUESDAY,C.WEDNESDAY=r().Time.WEDNESDAY,C.THURSDAY=r().Time.THURSDAY,C.FRIDAY=r().Time.FRIDAY,C.SATURDAY=r().Time.SATURDAY,C.DEFAULT_WEEK_START=C.MONDAY;class k extends y{constructor(...e){super(...e),this._start=C.fromICALJs(this._innerValue.start),this._end=null,this._duration=null}get start(){return this._start}set start(e){this._modifyContent(),this._start=e,this._innerValue.start=e.toICALJs()}get end(){return this._end||(this._duration&&(this._duration.lock(),this._duration=null),this._innerValue.end=this._innerValue.getEnd(),this._end=C.fromICALJs(this._innerValue.end),this._innerValue.duration=null,this.isLocked()&&this._end.lock()),this._end}set end(e){this._modifyContent(),this._innerValue.duration=null,this._innerValue.end=e.toICALJs(),this._end=e}get duration(){return this._duration||(this._end&&(this._end.lock(),this._end=null),this._innerValue.duration=this._innerValue.getDuration(),this._duration=T.fromICALJs(this._innerValue.duration),this._innerValue.end=null,this.isLocked()&&this._duration.lock()),this._duration}set duration(e){this._modifyContent(),this._innerValue.end=null,this._innerValue.duration=e.toICALJs(),this._duration=e}lock(){super.lock(),this.start.lock(),this._end&&this._end.lock(),this._duration&&this._duration.lock()}unlock(){super.unlock(),this.start.unlock(),this._end&&this._end.unlock(),this._duration&&this._duration.unlock()}clone(){return k.fromICALJs(this._innerValue.clone())}static fromICALJs(e){return new k(e)}static fromDataWithEnd(e){const t=r().Period.fromData({start:e.start.toICALJs(),end:e.end.toICALJs()});return k.fromICALJs(t)}static fromDataWithDuration(e){const t=r().Period.fromData({start:e.start.toICALJs(),duration:e.duration.toICALJs()});return k.fromICALJs(t)}}const w=["SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY"];class S extends y{constructor(e,t){super(e),this._until=t}get interval(){return this._innerValue.interval}set interval(e){this._modifyContent(),this._innerValue.interval=parseInt(e,10)}get weekStart(){return this._innerValue.wkst}set weekStart(e){if(this._modifyContent(),eC.SATURDAY)throw new TypeError("Weekstart out of range");this._innerValue.wkst=e}get until(){return!this._until&&this._innerValue.until&&(this._until=C.fromICALJs(this._innerValue.until)),this._until}set until(e){this._modifyContent(),this._until&&this._until.lock(),this._until=e,this._innerValue.count=null,this._innerValue.until=e.toICALJs()}get count(){return this._innerValue.count}set count(e){this._modifyContent(),this._until&&(this._until.lock(),this._until=null),this._innerValue.until=null,this._innerValue.count=parseInt(e,10)}get frequency(){return this._innerValue.freq}set frequency(e){if(this._modifyContent(),!w.includes(e))throw new TypeError("Unknown frequency");this._innerValue.freq=e}setToInfinite(){this._modifyContent(),this._until&&(this._until.lock(),this._until=null),this._innerValue.until=null,this._innerValue.count=null}isFinite(){return this._innerValue.isFinite()}isByCount(){return this._innerValue.isByCount()}addComponent(e,t){this._modifyContent(),this._innerValue.addComponent(e,t)}setComponent(e,t){this._modifyContent(),0===t.length?delete this._innerValue.parts[e.toUpperCase()]:this._innerValue.setComponent(e,t)}removeComponent(e){delete this._innerValue.parts[h(e)]}getComponent(e){return this._innerValue.getComponent(e)}isRuleValid(){return!0}lock(){super.lock(),this._until&&this._until.lock()}unlock(){super.unlock(),this._until&&this._until.unlock()}clone(){return S.fromICALJs(this._innerValue.clone())}static fromICALJs(e,t=null){return new S(e,t)}static fromData(e){let t=null;e.until&&(t=e.until,e.until=e.until.toICALJs());const n=r().Recur.fromData(e);return S.fromICALJs(n,t)}}class E extends y{get hours(){return this._innerValue.hours}set hours(e){this._modifyContent(),this._innerValue.hours=e}get minutes(){return this._innerValue.minutes}set minutes(e){this._modifyContent(),this._innerValue.minutes=e}get factor(){return this._innerValue.factor}set factor(e){if(this._modifyContent(),1!==e&&-1!==e)throw new TypeError("Factor may only be set to 1 or -1");this._innerValue.factor=e}get totalSeconds(){return this._innerValue.toSeconds()}set totalSeconds(e){this._modifyContent(),this._innerValue.fromSeconds(e)}compare(e){return this._innerValue.compare(e.toICALJs())}clone(){return E.fromICALJs(this._innerValue.clone())}static fromICALJs(e){return new E(e)}static fromData(e){const t=new(r().UtcOffset);return t.fromData(e),E.fromICALJs(t)}static fromSeconds(e){const t=r().UtcOffset.fromSeconds(e);return E.fromICALJs(t)}}class D extends Error{}class x extends(A(c(class{}))){constructor(e,t=null,n=[],a=null,r=null){super(),this._name=h(e),this._value=t,this._parameters=new Map,this._root=a,this._parent=r,this._setParametersFromConstructor(n),t instanceof y&&t.subscribe((()=>this._notifySubscribers()))}get name(){return this._name}get value(){return this._value}set value(e){this._modifyContent(),this._value=e,e instanceof y&&e.subscribe((()=>this._notifySubscribers()))}get root(){return this._root}set root(e){this._modify(),this._root=e}get parent(){return this._parent}set parent(e){this._modify(),this._parent=e}getFirstValue(){return this.isMultiValue()?this.value.length>0?this.value[0]:null:this.value}*getValueIterator(){this.isMultiValue()?yield*this.value.slice()[Symbol.iterator]():yield this.value}addValue(e){if(!this.isMultiValue())throw new TypeError("This is not a multivalue property");this._modifyContent(),this.value.push(e)}hasValue(e){if(!this.isMultiValue())throw new TypeError("This is not a multivalue property");return this.value.includes(e)}removeValue(e){if(!this.hasValue(e))return;this._modifyContent();const t=this.value.indexOf(e);this.value.splice(t,1)}setParameter(e){this._modify(),this._parameters.set(e.name,e),e.subscribe((()=>this._notifySubscribers()))}getParameter(e){return this._parameters.get(h(e))}*getParametersIterator(){yield*this._parameters.values()}getParameterFirstValue(e){const t=this.getParameter(e);return t instanceof b?t.isMultiValue()?t.value[0]:t.value:null}hasParameter(e){return this._parameters.has(h(e))}deleteParameter(e){this._modify(),this._parameters.delete(h(e))}updateParameterIfExist(e,t){if(this._modify(),this.hasParameter(e))this.getParameter(e).value=t;else{const n=new b(h(e),t);this.setParameter(n)}}isMultiValue(){return Array.isArray(this._value)}isDecoratedValue(){return this.isMultiValue()?this._value[0]instanceof y:this._value instanceof y}lock(){super.lock();for(const e of this.getParametersIterator())e.lock();if(this.isDecoratedValue())for(const e of this.getValueIterator())e.lock()}unlock(){super.unlock();for(const e of this.getParametersIterator())e.unlock();if(this.isDecoratedValue())for(const e of this.getValueIterator())e.unlock()}clone(){const e=[];for(const t of this.getParametersIterator())e.push(t.clone());return new this.constructor(this.name,this._cloneValue(),e,this.root,this.parent)}_cloneValue(){return this.isDecoratedValue()?this.isMultiValue()?this._value.map((e=>e.clone())):this._value.clone():this.isMultiValue()?this._value.slice():this._value}_setParametersFromConstructor(e){e.forEach((e=>{e instanceof b||(e=new b(e[0],e[1])),this.setParameter(e)}))}static fromICALJs(e,t=null,n=null){if(!(e instanceof r().Property))throw new d;let a;if(e.isDecorated){const t=function(e){switch(p(e)){case"binary":return F;case"date":case"date-time":return C;case"duration":return T;case"period":return k;case"recur":return S;case"utc-offset":return E;default:throw new D}}(e.getFirstValue().icaltype);a=e.isMultiValue?e.getValues().map((e=>t.fromICALJs(e))):t.fromICALJs(e.getFirstValue())}else a=e.isMultiValue?e.getValues():e.getFirstValue();const i=[];return Object.keys(Object.assign({},e.toJSON()[1])).forEach((t=>{"TZID"!==h(t)&&i.push([t,e.getParameter(t)])})),new this(e.name,a,i,t,n)}toICALJs(){const e=_(p(this.name));this.isMultiValue()?this.isDecoratedValue()?e.setValues(this.value.map((e=>e.toICALJs()))):e.setValues(this.value):this.isDecoratedValue()?e.setValue(this.value.toICALJs()):e.setValue(this.value);for(const t of this.getParametersIterator())e.setParameter(p(t.name),t.value);const t=this.getFirstValue();return t instanceof C&&"floating"!==t.timezoneId&&"UTC"!==t.timezoneId&&!t.isDate&&e.setParameter("tzid",t.timezoneId),e}_modifyContent(){super._modifyContent(),this._notifySubscribers()}}class N extends x{get formatType(){return this.getParameterFirstValue("FMTTYPE")}set formatType(e){this.updateParameterIfExist("FMTTYPE",e)}get uri(){return this._value instanceof F?null:this._value}set uri(e){this.value=e}get encoding(){return this._value instanceof F?"BASE64":null}get data(){return this._value instanceof F?this._value.value:null}set data(e){this.value instanceof F?this.value.value=e:this.value=F.fromDecodedValue(e)}toICALJs(){const e=super.toICALJs();return this._value instanceof F&&"BASE64"!==this.getParameterFirstValue("ENCODING")&&e.setParameter("ENCODING","BASE64"),e}static fromData(e,t=null){const n=F.fromDecodedValue(e),a=new N("ATTACH",n);return t&&(a.formatType=t),a}static fromLink(e,t=null){const n=new N("ATTACH",e);return t&&(n.formatType=t),n}}class O extends x{get role(){const e=["CHAIR","REQ-PARTICIPANT","OPT-PARTICIPANT","NON-PARTICIPANT"];if(this.hasParameter("ROLE")){const t=this.getParameterFirstValue("ROLE");if(e.includes(t))return t}return"REQ-PARTICIPANT"}set role(e){this.updateParameterIfExist("ROLE",e)}get userType(){const e=["INDIVIDUAL","GROUP","RESOURCE","ROOM","UNKNOWN"];if(this.hasParameter("CUTYPE")){const t=this.getParameterFirstValue("CUTYPE");return e.includes(t)?t:"UNKNOWN"}return"INDIVIDUAL"}set userType(e){this.updateParameterIfExist("CUTYPE",e)}get rsvp(){return!!this.hasParameter("RSVP")&&"TRUE"===h(this.getParameterFirstValue("RSVP"))}set rsvp(e){this.updateParameterIfExist("RSVP",e?"TRUE":"FALSE")}get commonName(){return this.getParameterFirstValue("CN")}set commonName(e){this.updateParameterIfExist("CN",e)}get participationStatus(){let e;e=this.parent?this.parent.name:"VEVENT";const t={VEVENT:["NEEDS-ACTION","ACCEPTED","DECLINED","TENTATIVE","DELEGATED"],VJOURNAL:["NEEDS-ACTION","ACCEPTED","DECLINED"],VTODO:["NEEDS-ACTION","ACCEPTED","DECLINED","TENTATIVE","DELEGATED","COMPLETED","IN-PROCESS"]};if(this.hasParameter("PARTSTAT")){const n=this.getParameterFirstValue("PARTSTAT");return t[e].includes(n)?n:"NEEDS-ACTION"}return"NEEDS-ACTION"}set participationStatus(e){this.updateParameterIfExist("PARTSTAT",e)}get language(){return this.getParameterFirstValue("LANGUAGE")}set language(e){this.updateParameterIfExist("LANGUAGE",e)}get email(){return this.value}set email(e){this.value=f(e,"mailto:")}isOrganizer(){return"ORGANIZER"===this._name}static fromNameAndEMail(e,t,n=!1){const a=n?"ORGANIZER":"ATTENDEE";return t=f(t,"mailto:"),new O(a,t,[["CN",e]])}static fromNameEMailRoleUserTypeAndRSVP(e,t,n,a,r,i=!1){const o=i?"ORGANIZER":"ATTENDEE";return t=f(t,"mailto:"),new O(o,t,[["CN",e],["ROLE",n],["CUTYPE",a],["RSVP",r?"TRUE":"FALSE"]])}}r().design.icalendar.property.conference={defaultType:"uri"},r().design.icalendar.param.feature={valueType:"cal-address",multiValue:","};class j extends x{*getFeatureIterator(){if(!this.hasParameter("FEATURE"))return;const e=this.getParameter("FEATURE");yield*e.getValueIterator()}listAllFeatures(){return this.hasParameter("FEATURE")?this.getParameter("FEATURE").value.slice():[]}addFeature(e){if(this._modify(),this.hasParameter("FEATURE")){if(this.hasFeature(e))return;this.getParameter("FEATURE").value.push(e)}else this.updateParameterIfExist("FEATURE",[e])}removeFeature(e){if(this._modify(),!this.hasFeature(e))return;const t=this.getParameter("FEATURE"),n=t.value.indexOf(e);t.value.splice(n,1)}clearAllFeatures(){this.deleteParameter("FEATURE")}hasFeature(e){if(!this.hasParameter("FEATURE"))return!1;const t=this.getParameter("FEATURE");return!!Array.isArray(t.value)&&t.value.includes(e)}get label(){return this.getParameterFirstValue("LABEL")}set label(e){this.updateParameterIfExist("LABEL",e)}get uri(){return this.value}set uri(e){this.value=e}toICALJs(){const e=super.toICALJs();return e.setParameter("value","URI"),e}static fromURILabelAndFeatures(e,t=null,n=null){const a=new j("CONFERENCE",e);return t&&a.updateParameterIfExist("label",t),n&&a.updateParameterIfExist("feature",n),a}}class M extends x{get type(){const e=["FREE","BUSY","BUSY-UNAVAILABLE","BUSY-TENTATIVE"];if(this.hasParameter("FBTYPE")){const t=this.getParameterFirstValue("FBTYPE");if(e.includes(t))return t}return"BUSY"}set type(e){this.updateParameterIfExist("FBTYPE",e)}static fromPeriodAndType(e,t){return new M("FREEBUSY",e,[["fbtype",t]])}}class R extends x{constructor(e,t=[0,0],n=[],a=null,r=null){super(e,t,n,a,r)}get latitude(){return this._value[0]}set latitude(e){this._modifyContent(),"number"!=typeof e&&(e=parseFloat(e)),this._value[0]=e}get longitude(){return this._value[1]}set longitude(e){this._modifyContent(),"number"!=typeof e&&(e=parseFloat(e)),this._value[1]=e}toICALJs(){const e=_(p(this.name));return e.setValue(this.value),this._parameters.forEach((t=>{e.setParameter(p(t.name),t.value)})),e}static fromPosition(e,t){return new R("GEO",[e,t])}}class P extends N{get display(){return this.getParameterFirstValue("DISPLAY")||"BADGE"}set display(e){this.updateParameterIfExist("DISPLAY",e)}static fromData(e,t=null,n=null){const a=F.fromDecodedValue(e),r=new P("IMAGE",a);return t&&(r.display=t),n&&(r.formatType=n),r}static fromLink(e,t=null,n=null){const a=new P("IMAGE",e);return t&&(a.display=t),n&&(a.formatType=n),a}}class B extends x{get relationType(){const e=["PARENT","CHILD","SIBLING"],t="PARENT";if(this.hasParameter("RELTYPE")){const n=this.getParameterFirstValue("RELTYPE");return e.includes(n)?n:t}return t}set relationType(e){this.updateParameterIfExist("RELTYPE",e)}get relatedId(){return this.value}set relatedId(e){this.value=e}static fromRelTypeAndId(e,t){return new B("RELATED-TO",t,[["RELTYPE",e]])}}class L extends x{constructor(e,t=["1","Pending"],n=[],a=null,r=null){super(e,t,n,a,r)}get statusCode(){return parseFloat(this.value[0])}set statusCode(e){this._modifyContent(),this.value[0]=e.toString(),e===Math.floor(e)&&(this.value[0]+=".0")}get statusMessage(){return this.value[1]}set statusMessage(e){this._modifyContent(),this.value[1]=e}get exceptionData(){return this.value[2]?this.value[2]:null}set exceptionData(e){this._modifyContent(),this.value[2]=e}isPending(){return this.statusCode>=1&&this.statusCode<2}isSuccessful(){return this.statusCode>=2&&this.statusCode<3}isClientError(){return this.statusCode>=3&&this.statusCode<4}isSchedulingError(){return this.statusCode>=4&&this.statusCode<5}toICALJs(){const e=_(p(this.name));return e.setValue(this.value),this._parameters.forEach((t=>{e.setParameter(p(t.name),t.value)})),e}static fromCodeAndMessage(e,t){return new L("REQUEST-STATUS",[e.toString(),t])}}L.SUCCESS=[2,"Success"],L.SUCCESS_FALLBACK=[2.1,"Success, but fallback taken on one or more property values."],L.SUCCESS_PROP_IGNORED=[2.2,"Success; invalid property ignored."],L.SUCCESS_PROPPARAM_IGNORED=[2.3,"Success; invalid property parameter ignored."],L.SUCCESS_NONSTANDARD_PROP_IGNORED=[2.4,"Success; unknown, non-standard property ignored."],L.SUCCESS_NONSTANDARD_PROPPARAM_IGNORED=[2.5,"Success; unknown, non-standard property value ignored."],L.SUCCESS_COMP_IGNORED=[2.6,"Success; invalid calendar component ignored."],L.SUCCESS_FORWARDED=[2.7,"Success; request forwarded to Calendar User."],L.SUCCESS_REPEATING_IGNORED=[2.8,"Success; repeating event ignored. Scheduled as a single component."],L.SUCCESS_TRUNCATED_END=[2.9,"Success; truncated end date time to date boundary."],L.SUCCESS_REPEATING_VTODO_IGNORED=[2.1,"Success; repeating VTODO ignored. Scheduled as a single VTODO."],L.SUCCESS_UNBOUND_RRULE_CLIPPED=[2.11,"Success; unbounded RRULE clipped at some finite number of instances."],L.CLIENT_INVALID_PROPNAME=[3,"Invalid property name."],L.CLIENT_INVALID_PROPVALUE=[3.1,"Invalid property value."],L.CLIENT_INVALID_PROPPARAM=[3.2,"Invalid property parameter."],L.CLIENT_INVALID_PROPPARAMVALUE=[3.3,"Invalid property parameter value."],L.CLIENT_INVALUD_CALENDAR_COMP_SEQ=[3.4,"Invalid calendar component sequence."],L.CLIENT_INVALID_DATE_TIME=[3.5,"Invalid date or time."],L.CLIENT_INVALID_RRULE=[3.6,"Invalid rule."],L.CLIENT_INVALID_CU=[3.7,"Invalid Calendar User."],L.CLIENT_NO_AUTHORITY=[3.8,"No authority."],L.CLIENT_UNSUPPORTED_VERSION=[3.9,"Unsupported version."],L.CLIENT_TOO_LARGE=[3.1,"Request entity too large."],L.CLIENT_REQUIRED_COMP_OR_PROP_MISSING=[3.11,"Required component or property missing."],L.CLIENT_UNKNOWN_COMP_OR_PROP=[3.12,"Unknown component or property found."],L.CLIENT_UNSUPPORTED_COMP_OR_PROP=[3.13,"Unsupported component or property found."],L.CLIENT_UNSUPPORTED_CAPABILITY=[3.14,"Unsupported capability."],L.SCHEDULING_EVENT_CONFLICT=[4,"Event conflict. Date/time is busy."],L.SERVER_REQUEST_NOT_SUPPORTED=[5,"Request not supported."],L.SERVER_SERVICE_UNAVAILABLE=[5.1,"Service unavailable."],L.SERVER_INVALID_CALENDAR_SERVICE=[5.2,"Invalid calendar service."],L.SERVER_NO_SCHEDULING_FOR_USER=[5.3,"No scheduling support for user."];class z extends x{get alternateText(){return this.getParameterFirstValue("ALTREP")}set alternateText(e){this.updateParameterIfExist("ALTREP",e)}get language(){return this.getParameterFirstValue("LANGUAGE")}set language(e){this.updateParameterIfExist("LANGUAGE",e)}}class I extends x{get related(){return this.hasParameter("RELATED")?this.getParameterFirstValue("RELATED"):"START"}set related(e){this.updateParameterIfExist("RELATED",e)}get value(){return super.value}set value(e){super.value=e,e instanceof C&&(this.deleteParameter("RELATED"),super.value=e.getInUTC())}isRelative(){return this.getFirstValue()instanceof T}static fromAbsolute(e){return new I("TRIGGER",e)}static fromRelativeAndRelated(e,t=!0){return new I("TRIGGER",e,[["RELATED",t?"START":"END"]])}}function Y(e){switch(h(e)){case"ATTACH":return N;case"ATTENDEE":case"ORGANIZER":return O;case"CONFERENCE":return j;case"FREEBUSY":return M;case"GEO":return R;case"IMAGE":return P;case"RELATED-TO":return B;case"REQUEST-STATUS":return L;case"TRIGGER":return I;case"COMMENT":case"CONTACT":case"DESCRIPTION":case"LOCATION":case"SUMMARY":return z;default:return x}}class Z extends(A(c(class{}))){constructor(e,t=[],n=[],a=null,r=null){super(),this._name=h(e),this._properties=new Map,this._components=new Map,this._root=a,this._parent=r,this._setPropertiesFromConstructor(t),this._setComponentsFromConstructor(n)}get name(){return this._name}get root(){return this._root}set root(e){this._modify(),this._root=e;for(const t of this.getPropertyIterator())t.root=e;for(const t of this.getComponentIterator())t.root=e}get parent(){return this._parent}set parent(e){this._modify(),this._parent=e}getFirstProperty(e){return this._properties.has(h(e))?this._properties.get(h(e))[0]:null}getFirstPropertyFirstValue(e){const t=this.getFirstProperty(e);return t?t.getFirstValue():null}updatePropertyWithValue(e,t){this._modify();const n=this.getFirstProperty(e);if(n)n.value=t;else{const n=new(Y(e))(e,t,[],this,this.root);this.addProperty(n)}}*getPropertyIterator(e=null){if(e){if(!this.hasProperty(e))return;yield*this._properties.get(h(e)).slice()[Symbol.iterator]()}else for(const e of this._properties.keys())yield*this.getPropertyIterator(e)}*_getAllOfPropertyByLang(e,t){for(const n of this.getPropertyIterator(e))n.getParameterFirstValue("LANGUAGE")===t&&(yield n)}_getFirstOfPropertyByLang(e,t){return this._getAllOfPropertyByLang(e,t).next().value||null}addProperty(e){if(this._modify(),e.root=this.root,e.parent=this,this._properties.has(e.name)){const t=this._properties.get(e.name);if(-1!==t.indexOf(e))return!1;t.push(e)}else this._properties.set(e.name,[e]);return e.subscribe((()=>this._notifySubscribers())),!0}hasProperty(e){return this._properties.has(h(e))}deleteProperty(e){if(this._modify(),!this._properties.has(e.name))return!1;const t=this._properties.get(e.name),n=t.indexOf(e);return-1!==n&&(-1!==n&&1===t.length?this._properties.delete(e.name):t.splice(n,1),!0)}deleteAllProperties(e){return this._modify(),this._properties.delete(h(e))}getFirstComponent(e){return this.hasComponent(e)?this._components.get(h(e))[0]:null}*getComponentIterator(e){if(e){if(!this.hasComponent(e))return;yield*this._components.get(h(e)).slice()[Symbol.iterator]()}else for(const e of this._components.keys())yield*this.getComponentIterator(e)}addComponent(e){if(this._modify(),e.root=this.root,e.parent=this,this._components.has(e.name)){const t=this._components.get(e.name);if(-1!==t.indexOf(e))return!1;t.push(e)}else this._components.set(e.name,[e]);return e.subscribe((()=>this._notifySubscribers())),!0}hasComponent(e){return this._components.has(h(e))}deleteComponent(e){if(this._modify(),!this._components.has(e.name))return!1;const t=this._components.get(e.name),n=t.indexOf(e);return-1!==n&&(-1!==n&&1===t.length?this._components.delete(e.name):t.splice(n,1),!0)}deleteAllComponents(e){return this._modify(),this._components.delete(h(e))}lock(){super.lock();for(const e of this.getPropertyIterator())e.lock();for(const e of this.getComponentIterator())e.lock()}unlock(){super.unlock();for(const e of this.getPropertyIterator())e.unlock();for(const e of this.getComponentIterator())e.unlock()}clone(){const e=[];for(const t of this.getPropertyIterator())e.push(t.clone());const t=[];for(const e of this.getComponentIterator())t.push(e.clone());return new this.constructor(this.name,e,t,this.root,this.parent)}_setPropertiesFromConstructor(e){for(let t of e)Array.isArray(t)&&(t=new(Y(t[0]))(t[0],t[1])),this.addProperty(t)}_setComponentsFromConstructor(e){for(const t of e)this.addComponent(t)}static fromICALJs(e,t=null,n=null){if(!(e instanceof r().Component))throw new d;const a=new this(e.name,[],[],t,n);for(const n of e.getAllProperties()){const e=Y(n.name).fromICALJs(n,t,a);a.addProperty(e)}for(const n of e.getAllSubcomponents()){const e=this._getConstructorForComponentName(n.name).fromICALJs(n,t,a);a.addComponent(e)}return a}static _getConstructorForComponentName(e){return Z}toICALJs(){const e=(t=p(this.name),new(r().Component)(p(t)));var t;for(const t of this.getPropertyIterator())e.addProperty(t.toICALJs());for(const t of this.getComponentIterator())e.addSubcomponent(t.toICALJs());return e}}function U(e,t,n=!0){t=function(e){return"string"==typeof e&&(e={name:e}),Object.assign({},{iCalendarName:h(e.name),pluralName:e.name+"s",allowedValues:null,defaultValue:null,unknownValue:null},e)}(t),Object.defineProperty(e,t.name,{get(){const e=this.getFirstPropertyFirstValue(t.iCalendarName);return e?Array.isArray(t.allowedValues)&&!t.allowedValues.includes(e)?t.unknownValue:e:t.defaultValue},set(e){if(this._modify(),null!==e){if(Array.isArray(t.allowedValues)&&!t.allowedValues.includes(e))throw new TypeError("Illegal value");this.updatePropertyWithValue(t.iCalendarName,e)}else this.deleteAllProperties(t.iCalendarName)}})}function G(e,t){e["get"+m((t=$(t)).name)+"Iterator"]=function*(){yield*this.getPropertyIterator(t.iCalendarName)},e["get"+m(t.name)+"List"]=function(){return Array.from(this["get"+m(t.name)+"Iterator"]())},e["remove"+m(t.name)]=function(e){this.deleteProperty(e)},e["clearAll"+m(t.pluralName)]=function(){this.deleteAllProperties(t.iCalendarName)}}function H(e,t){e["get"+m((t=$(t)).name)+"Iterator"]=function*(e=null){for(const n of this._getAllOfPropertyByLang(t.iCalendarName,e))yield*n.getValueIterator()},e["get"+m(t.name)+"List"]=function(e=null){return Array.from(this["get"+m(t.name)+"Iterator"](e))},e["add"+m(t.name)]=function(e,n=null){const a=this._getFirstOfPropertyByLang(t.iCalendarName,n);if(a)a.addValue(e);else{const a=new x(t.iCalendarName,[e]);if(n){const e=new b("LANGUAGE",n);a.setParameter(e)}this.addProperty(a)}},e["remove"+m(t.name)]=function(e,n=null){for(const a of this._getAllOfPropertyByLang(t.iCalendarName,n))if(a.isMultiValue()&&a.hasValue(e))return 1===a.value.length?(this.deleteProperty(a),!0):(a.removeValue(e),!0);return!1},e["clearAll"+m(t.pluralName)]=function(e=null){for(const n of this._getAllOfPropertyByLang(t.iCalendarName,e))this.deleteProperty(n)}}function $(e){return"string"==typeof e&&(e={name:e}),Object.assign({},{iCalendarName:h(e.name),pluralName:e.name+"s"},e)}function q(){return new Date}class V extends Error{}class W{constructor(e){this._masterItem=e,this._recurrenceExceptionItems=new Map,this._rangeRecurrenceExceptionItemsIndex=[],this._rangeRecurrenceExceptionItemsDiffCache=new Map,this._rangeRecurrenceExceptionItems=new Map}get masterItem(){return this._masterItem}set masterItem(e){this._masterItem=e}*getRecurrenceExceptionIterator(){yield*this._recurrenceExceptionItems.values()}getRecurrenceExceptionList(){return Array.from(this.getRecurrenceExceptionIterator())}hasRecurrenceExceptionForId(e){return e instanceof C?e=e.unixTime:e instanceof r().Time&&(e=e.toUnixTime()),this._recurrenceExceptionItems.has(e)}getRecurrenceException(e){return e instanceof C?e=e.unixTime:e instanceof r().Time&&(e=e.toUnixTime()),this._recurrenceExceptionItems.get(e)||null}hasRangeRecurrenceExceptionForId(e){return e instanceof C?e=e.unixTime:e instanceof r().Time&&(e=e.toUnixTime()),0!==this._rangeRecurrenceExceptionItemsIndex.length&&this._rangeRecurrenceExceptionItemsIndex[0]e-t));if(0===t)return null;const n=this._rangeRecurrenceExceptionItemsIndex[t-1];return this._rangeRecurrenceExceptionItems.get(n)}getRangeRecurrenceExceptionDiff(e){if(e instanceof C?e=e.unixTime:e instanceof r().Time&&(e=e.toUnixTime()),this._rangeRecurrenceExceptionItemsDiffCache.has(e))return this._rangeRecurrenceExceptionItemsDiffCache.get(e);const t=this.getRangeRecurrenceExceptionForId(e);if(!t)return null;const n=t.recurrenceId,a=t.startDate.subtractDateWithTimezone(n);return a.lock(),this._rangeRecurrenceExceptionItemsDiffCache.set(e,a),a}relateRecurrenceException(e){this._modify();const t=this._getRecurrenceIdKey(e);if(this._recurrenceExceptionItems.set(t,e),e.modifiesFuture()){this._rangeRecurrenceExceptionItems.set(t,e);const n=r().helpers.binsearchInsert(this._rangeRecurrenceExceptionItemsIndex,t,((e,t)=>e-t));this._rangeRecurrenceExceptionItemsIndex.splice(n,0,t)}e.recurrenceManager=this}removeRecurrenceException(e){const t=this._getRecurrenceIdKey(e);this.removeRecurrenceExceptionByRecurrenceId(t)}removeRecurrenceExceptionByRecurrenceId(e){this._modify(),this._recurrenceExceptionItems.delete(e),this._rangeRecurrenceExceptionItems.delete(e),this._rangeRecurrenceExceptionItemsDiffCache.delete(e);const t=this._rangeRecurrenceExceptionItemsIndex.indexOf(e);-1!==t&&this._rangeRecurrenceExceptionItemsIndex.splice(t,1)}_getRecurrenceIdKey(e){return e.recurrenceId.unixTime}*getRecurrenceRuleIterator(){for(const e of this._masterItem.getPropertyIterator("RRULE"))yield e.getFirstValue()}getRecurrenceRuleList(){return Array.from(this.getRecurrenceRuleIterator())}addRecurrenceRule(e){this._modify(),this.resetCache();const t=new x("RRULE",e);this._masterItem.addProperty(t)}removeRecurrenceRule(e){this._modify(),this.resetCache();for(const t of this._masterItem.getPropertyIterator("RRULE"))t.getFirstValue()===e&&this._masterItem.deleteProperty(t)}clearAllRecurrenceRules(){this._modify(),this.resetCache(),this._masterItem.deleteAllProperties("RRULE")}*getRecurrenceDateIterator(e=!1,t=null){for(const n of this._getPropertiesForRecurrenceDate(e,t))yield*n.getValueIterator()}listAllRecurrenceDates(e=!1,t=null){return Array.from(this.getRecurrenceDateIterator(e,t))}addRecurrenceDate(e=!1,t){this._modify(),this.resetCache();let n=null;t instanceof C&&!t.isDate&&(n=t.timezoneId);const a=this._getValueTypeByValue(t),r=this._getPropertiesForRecurrenceDate(e,a,n).next.value;if(r instanceof x)r.value.push(t),this.masterItem.markPropertyAsDirty(e?"EXDATE":"RDATE");else{const n=this._getPropertyNameByIsNegative(e),a=new x(n,t);this._masterItem.addProperty(a)}}hasRecurrenceDate(e=!1,t){for(let n of this.getRecurrenceDateIterator(e))if(n instanceof k&&(n=n.start),0===n.compare(t))return!0;return!1}getRecurrenceDate(e=!1,t){for(const n of this.getRecurrenceDateIterator(e)){let e=n;if(e instanceof k&&(e=e.start),0===e.compare(t))return n}return null}removeRecurrenceDate(e=!1,t){this._modify(),this.resetCache();const n=this._getValueTypeByValue(t);for(const a of this._getPropertiesForRecurrenceDate(e,n))for(const n of a.getValueIterator())if(t===n){const n=a.value;if(1===n.length){this.masterItem.deleteProperty(a);continue}const r=n.indexOf(t);n.splice(r,1),this.masterItem.markPropertyAsDirty(e?"EXDATE":"RDATE")}}clearAllRecurrenceDates(e=!1,t=null){this._modify(),this.resetCache();for(const n of this._getPropertiesForRecurrenceDate(e,t))this._masterItem.deleteProperty(n)}_getPropertyNameByIsNegative(e){return e?"EXDATE":"RDATE"}_getValueTypeByValue(e){return e instanceof k?"PERIOD":e.isDate?"DATE":"DATETIME"}*_getPropertiesForRecurrenceDate(e,t,n=null){const a=this._getPropertyNameByIsNegative(e);for(const e of this._masterItem.getPropertyIterator(a))null===t||"PERIOD"===h(t)&&e.getFirstValue()instanceof k||"DATE"===h(t)&&e.getFirstValue().isDate?yield e:"DATETIME"!==h(t)||e.getFirstValue().isDate||null!==n&&e.getFirstValue().timezoneId!==n||(yield e)}isFinite(){return this.getRecurrenceRuleList().every((e=>e.isFinite()))}isEmptyRecurrenceSet(){return void 0===this._getRecurExpansionObject().next()}getOccurrenceAtExactly(e){if(!this.masterItem.isRecurring())return 0===this.masterItem.getReferenceRecurrenceId().compare(e)?this.masterItem:null;const t=this._getRecurExpansionObject(),n=e.toICALJs();let a;for(;a=t.next();){if(0===a.compare(n))return this._getOccurrenceAtRecurrenceId(C.fromICALJs(a));if(1===a.compare(n))return null}return null}getClosestOccurrence(e){if(!this.masterItem.isRecurring())return this.masterItem;const t=this._getRecurExpansionObject();e=e.toICALJs();let n,a=null;for(;n=t.next();){if(-1!==n.compare(e)){const e=C.fromICALJs(n);return this._getOccurrenceAtRecurrenceId(e)}a=n}const r=C.fromICALJs(a);return this._getOccurrenceAtRecurrenceId(r)}countAllOccurrencesBetween(e,t){if(!this.masterItem.isRecurring())return"function"!=typeof this.masterItem.isInTimeFrame||this.masterItem.isInTimeFrame(e,t)?1:0;const n=this._getRecurExpansionObject(),a=e.toICALJs(),r=t.toICALJs();let i,o=0;for(;i=n.next();)if(-1!==i.compare(a)){if(1===i.compare(r))break;o+=1}return o}*getAllOccurrencesBetweenIterator(e,t){if(!this.masterItem.isRecurring())return"function"!=typeof this.masterItem.isInTimeFrame&&(yield this.masterItem),void(this.masterItem.isInTimeFrame(e,t)&&(yield this.masterItem));const n=this._getRecurExpansionObject(),a=e.toICALJs(),r=t.toICALJs(),i=Array.from(this._recurrenceExceptionItems.keys()),o=Math.max.apply(Math,i);let s;for(;s=n.next();){const n=C.fromICALJs(s),i=this._getOccurrenceAtRecurrenceId(n);let l=null;switch(h(i.name)){case"VEVENT":case"VTODO":l=i.endDate.toICALJs();break;default:l=s}if(-1===l.compare(a))continue;const u=i.startDate.toICALJs();if(i.isRecurrenceException()&&!i.modifiesFuture()||1!==u.compare(r))"function"!=typeof i.isInTimeFrame&&(yield i),i.isInTimeFrame(e,t)&&(yield i);else{if(0===this._recurrenceExceptionItems.size)break;if(s.toUnixTime()>o)break}}}getAllOccurrencesBetween(e,t){return Array.from(this.getAllOccurrencesBetweenIterator(e,t))}updateUID(e){this._masterItem.updatePropertyWithValue("UID",e);for(const t of this.getRecurrenceExceptionIterator())t.updatePropertyWithValue("UID",e)}updateStartDateOfMasterItem(e,t){const n=e.subtractDateWithTimezone(t);for(const e of this.getRecurrenceDateIterator(!0))this.hasRecurrenceDate(!1,e)||e.addDuration(n);for(const e of this.getRecurrenceExceptionIterator())this.hasRecurrenceDate(!1,e.recurrenceId)||(this.removeRecurrenceException(e),e.recurrenceId.addDuration(n),this.relateRecurrenceException(e));for(const e of this.getRecurrenceRuleIterator())e.until&&e.until.addDuration(n)}_getOccurrenceAtRecurrenceId(e){if(this.hasRecurrenceExceptionForId(e)){const t=this.getRecurrenceException(e);return t.canCreateRecurrenceExceptions()?t.forkItem(e):t}if(this.hasRangeRecurrenceExceptionForId(e)){const t=this.getRangeRecurrenceExceptionForId(e),n=this.getRangeRecurrenceExceptionDiff(e);return t.forkItem(e,n)}return 0===e.compare(this._masterItem.startDate)?this._masterItem.canCreateRecurrenceExceptions()?this._masterItem.forkItem(e):this._masterItem:this._masterItem.forkItem(e)}resetCache(){}_getRecurExpansionObject(){if(null===this._masterItem.startDate)throw new V;const e=this._masterItem.startDate.toICALJs();let t=e.clone();const n=[];let a;const i=[];let o=null;const s=[];for(const t of this.getRecurrenceRuleIterator())n.push(t.toICALJs().iterator(e)),n[n.length-1].next();for(let e of this.getRecurrenceDateIterator()){e instanceof k&&(e=e.start),e=e.toICALJs();const t=r().helpers.binsearchInsert(i,e,((e,t)=>e.compare(t)));i.splice(t,0,e)}i.length>0&&-1===i[0].compare(e)?(a=0,t=i[0].clone()):(a=r().helpers.binsearchInsert(i,e,((e,t)=>e.compare(t))),o=s[a]);for(let e of this.getRecurrenceDateIterator(!0)){e=e.toICALJs();const t=r().helpers.binsearchInsert(s,e,((e,t)=>e.compare(t)));s.splice(t,0,e)}const l=r().helpers.binsearchInsert(s,e,((e,t)=>e.compare(t))),u=s[l];return new(r().RecurExpansion)({dtstart:e,last:t,ruleIterators:n,ruleDateInc:a,exDateInc:l,ruleDates:i,ruleDate:o,exDates:s,exDate:u,complete:!1})}_modify(){if(this._masterItem.isLocked())throw new u}}class K{constructor(e,t){this._timezoneId=null,this._ics=null,this._innerValue=null,this._initialized=!1,e instanceof r().Timezone?(this._innerValue=e,this._initialized=!0):e instanceof r().Component?(this._innerValue=new(r().Timezone)(e),this._initialized=!0):(this._timezoneId=e,this._ics=t)}get timezoneId(){return this._initialized?this._innerValue.tzid:this._timezoneId}offsetForArray(e,t,n,a,i,o){this._initialize();const s=new(r().Time)({year:e,month:t,day:n,hour:a,minute:i,second:o,isDate:!1});return this._innerValue.utcOffset(s)}timestampToArray(e){this._initialize();const t=r().Time.fromData({year:1970,month:1,day:1,hour:0,minute:0,second:0});t.fromUnixTime(Math.floor(e/1e3));const n=t.convertToZone(this._innerValue);return[n.year,n.month,n.day,n.hour,n.minute,n.second]}toICALTimezone(){return this._initialize(),this._innerValue}toICALJs(){return this._initialize(),this._innerValue.component}_initialize(){if(!this._initialized){const e=r().parse(this._ics),t=new(r().Component)(e);this._innerValue=new(r().Timezone)(t),this._initialized=!0}}}K.utc=new K(r().Timezone.utcTimezone),K.floating=new K(r().Timezone.localTimezone);class Q extends Z{addAttendeeFromNameAndEMail(e,t){const n=O.fromNameAndEMail(e,t);return this.addProperty(n)}get trigger(){return this.getFirstProperty("TRIGGER")}setTriggerFromAbsolute(e){const t=I.fromAbsolute(e);this.deleteAllProperties("TRIGGER"),this.addProperty(t)}setTriggerFromRelative(e,t=!0){const n=I.fromRelativeAndRelated(e,t);this.deleteAllProperties("TRIGGER"),this.addProperty(n)}}U(Q.prototype,"action"),U(Q.prototype,"description"),U(Q.prototype,"summary"),U(Q.prototype,"duration"),U(Q.prototype,"repeat"),U(Q.prototype,{name:"attachment",iCalendarName:"ATTACH"}),G(Q.prototype,"attendee");class J extends Z{constructor(...e){super(...e),this._primaryItem=null,this._isExactForkOfPrimary=!1,this._originalRecurrenceId=null,this._recurrenceManager=null,this._dirty=!1,this._significantChange=!1,this._cachedId=null}get primaryItem(){return this._primaryItem}set primaryItem(e){this._modify(),this._primaryItem=e}get isExactForkOfPrimary(){return this._isExactForkOfPrimary}set isExactForkOfPrimary(e){this._isExactForkOfPrimary=e}get originalRecurrenceId(){return this._originalRecurrenceId}set originalRecurrenceId(e){this._originalRecurrenceId=e}get recurrenceManager(){return this._recurrenceManager}set recurrenceManager(e){this._recurrenceManager=e}get masterItem(){return this.recurrenceManager.masterItem}isMasterItem(){return this.masterItem===this}get id(){return this._cachedId?this._cachedId:null===this.startDate?(this._cachedId=encodeURIComponent(this.uid),this._cachedId):(this._cachedId=[encodeURIComponent(this.uid),encodeURIComponent(this.getReferenceRecurrenceId().unixTime.toString())].join("###"),this._cachedId)}get uid(){return this.getFirstPropertyFirstValue("UID")}set uid(e){this._recurrenceManager.updateUID(e)}get startDate(){return this.getFirstPropertyFirstValue("dtstart")}set startDate(e){const t=this.startDate;this.updatePropertyWithValue("dtstart",e),this.isMasterItem()&&this._recurrenceManager.updateStartDateOfMasterItem(e,t)}isPartOfRecurrenceSet(){return this.masterItem.isRecurring()}isRecurring(){return this.hasProperty("RRULE")||this.hasProperty("RDATE")}isRecurrenceException(){return this.hasProperty("RECURRENCE-ID")}modifiesFuture(){return!!this.isRecurrenceException()&&"THISANDFUTURE"===this.getFirstProperty("RECURRENCE-ID").getParameterFirstValue("RANGE")}forkItem(e,t=null){const n=this.clone();if(n.recurrenceManager=this.recurrenceManager,n.primaryItem=this,0===n.getReferenceRecurrenceId().compare(e)&&(n.isExactForkOfPrimary=!0),!n.hasProperty("DTSTART"))throw new TypeError("Can't fork item without a DTSTART");const a=n.getFirstPropertyFirstValue("RRULE");if(a?.count){let t=n.recurrenceManager.countAllOccurrencesBetween(n.getReferenceRecurrenceId(),e);t-=1,a.count-=t,a.count<1&&(a.count=1)}if(n.getFirstPropertyFirstValue("DTSTART").timezoneId!==e.timezoneId){const t=n.getFirstPropertyFirstValue("DTSTART").getICALTimezone();e=e.getInICALTimezone(t)}n.originalRecurrenceId=e.clone();const r=n.getFirstPropertyFirstValue("DTSTART");let i,o=null;if(this._recurrenceManager.hasRecurrenceDate(!1,e)){const t=this._recurrenceManager.getRecurrenceDate(!1,e);t instanceof k&&(o=t)}if(n.hasProperty("DTEND")?i=n.getFirstPropertyFirstValue("DTEND").subtractDateWithTimezone(r):n.hasProperty("DUE")&&(i=n.getFirstPropertyFirstValue("DUE").subtractDateWithTimezone(r)),!n.isRecurrenceException()||!n.isExactForkOfPrimary){if(n.updatePropertyWithValue("DTSTART",e.clone()),t&&n.startDate.addDuration(t),n.hasProperty("DTEND")){const e=n.startDate.clone();e.addDuration(i),n.updatePropertyWithValue("DTEND",e)}else if(n.hasProperty("DUE")){const e=n.startDate.clone();e.addDuration(i),n.updatePropertyWithValue("DUE",e)}o&&(n.deleteAllProperties("DTEND"),n.deleteAllProperties("DURATION"),n.updatePropertyWithValue("DTEND",o.end.clone()))}return n.resetDirty(),n}canCreateRecurrenceExceptions(){let e=!1;return this.primaryItem&&this.primaryItem.isRecurring()&&(e=!0),this.isRecurring()||this.modifiesFuture()||!this.isRecurring()&&e}createRecurrenceException(e=!1){if(!this.canCreateRecurrenceExceptions())throw new Error("Can't create recurrence-exceptions for non-recurring items");const t=this.primaryItem;if(e){if(this.isExactForkOfPrimary&&this.primaryItem.isMasterItem())return this._overridePrimaryItem(),[this,this];this.removeThisOccurrence(!0),this.recurrenceManager=new W(this),this._originalRecurrenceId=null,this.primaryItem=this,this.updatePropertyWithValue("UID",function(e,t,n){if(i.Z.randomUUID&&!t&&!e)return i.Z.randomUUID();const a=(e=e||{}).random||(e.rng||o.Z)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=a[e];return t}return(0,s.S)(a)}()),this._cachedId=null,this.addRelation("SIBLING",t.uid),t.addRelation("SIBLING",this.uid),this.deleteAllProperties("RECURRENCE-ID"),this.deleteAllProperties("RDATE"),this.deleteAllProperties("EXDATE"),this.updatePropertyWithValue("CREATED",C.fromJSDate(q(),!0)),this.updatePropertyWithValue("DTSTAMP",C.fromJSDate(q(),!0)),this.updatePropertyWithValue("LAST-MODIFIED",C.fromJSDate(q(),!0)),this.updatePropertyWithValue("SEQUENCE",0),this._significantChange=!1,this._dirty=!1,this.root=this.root.constructor.fromEmpty(),this.root.addComponent(this),this.parent=this.root;for(const e of this.getAttendeeIterator())e.rsvp=!0}else{if(this.deleteAllProperties("RECURRENCE-ID"),this.recurrenceId=this.getReferenceRecurrenceId().clone(),this.root.addComponent(this),this.recurrenceManager.relateRecurrenceException(this),this.primaryItem=this,this.deleteAllProperties("RDATE"),this.deleteAllProperties("RRULE"),this.deleteAllProperties("EXDATE"),this.updatePropertyWithValue("CREATED",C.fromJSDate(q(),!0)),this.updatePropertyWithValue("DTSTAMP",C.fromJSDate(q(),!0)),this.updatePropertyWithValue("LAST-MODIFIED",C.fromJSDate(q(),!0)),this.updatePropertyWithValue("SEQUENCE",0),this.recurrenceManager.hasRecurrenceDate(!1,this.getReferenceRecurrenceId())){const e=this.recurrenceManager.getRecurrenceDate(!1,this.getReferenceRecurrenceId());if(e instanceof k){const t=e.start;this.recurrenceManager.removeRecurrenceDate(!1,e),this.recurrenceManager.addRecurrenceDate(!1,t)}}this.originalRecurrenceId=null}return[t,this]}removeThisOccurrence(e=!1){if(!this.isPartOfRecurrenceSet())return!0;if(e){const e=this.getReferenceRecurrenceId().clone(),t=e.getInTimezone(K.utc);t.addDuration(T.fromSeconds(-1));for(const e of this.recurrenceManager.getRecurrenceRuleIterator())e.until=t.clone();for(const t of this.recurrenceManager.getRecurrenceDateIterator()){let n=t;t instanceof k&&(n=n.start),e.compare(n)<=0&&this.recurrenceManager.removeRecurrenceDate(!1,t)}for(const t of this.recurrenceManager.getRecurrenceDateIterator(!0))e.compare(t)<=0&&this.recurrenceManager.removeRecurrenceDate(!0,t);for(const t of this.recurrenceManager.getRecurrenceExceptionList())e.compare(t.recurrenceId)<=0&&(this.root.deleteComponent(t),this.recurrenceManager.removeRecurrenceException(t))}else if(this.isRecurrenceException()&&!this.modifiesFuture()&&(this.root.deleteComponent(this),this.recurrenceManager.removeRecurrenceException(this)),this.recurrenceManager.hasRecurrenceDate(!1,this.getReferenceRecurrenceId())){const e=this.recurrenceManager.getRecurrenceDate(!1,this.getReferenceRecurrenceId());this.recurrenceManager.removeRecurrenceDate(!1,e)}else this.recurrenceManager.addRecurrenceDate(!0,this.getReferenceRecurrenceId().clone());return this.recurrenceManager.isEmptyRecurrenceSet()}clone(){const e=super.clone();return e.resetDirty(),e}_addAttendee(e){for(const t of this.getAttendeeIterator())if(t.email===e.email)return!1;return this.addProperty(e),!0}addAttendeeFromNameAndEMail(e,t){const n=O.fromNameAndEMail(e,t);return this._addAttendee(n)}addAttendeeFromNameEMailRoleUserTypeAndRSVP(e,t,n,a,r){const i=O.fromNameEMailRoleUserTypeAndRSVP(e,t,n,a,r,!1);return this._addAttendee(i)}setOrganizerFromNameAndEMail(e,t){this.deleteAllProperties("ORGANIZER"),this.addProperty(O.fromNameAndEMail(e,t,!0))}addAttachmentFromData(e,t=null){this.addProperty(N.fromData(e,t))}addAttachmentFromLink(e,t=null){this.addProperty(N.fromLink(e,t))}addContact(e){this.addProperty(new z("CONTACT",e))}addComment(e){this.addProperty(new z("COMMENT",e))}addImageFromData(e,t=null,n=null){this.addProperty(P.fromData(e,t,n))}addImageFromLink(e,t=null,n=null){this.addProperty(P.fromLink(e,t,n))}addRelation(e,t){this.addProperty(B.fromRelTypeAndId(e,t))}addRequestStatus(e,t){this.addProperty(L.fromCodeAndMessage(e,t))}addAbsoluteAlarm(e,t){const n=new Q("VALARM",[["action",e],I.fromAbsolute(t)]);return this.addComponent(n),n}addRelativeAlarm(e,t,n=!0){const a=new Q("VALARM",[["action",e],I.fromRelativeAndRelated(t,n)]);return this.addComponent(a),a}markPropertyAsDirty(e){this.markDirty(),["DTSTART","DTEND","DURATION","RRULE","RDATE","EXDATE","STATUS",...v("property-list-significant-change",[])].includes(h(e))&&this.markChangesAsSignificant()}markSubComponentAsDirty(e){this.markDirty(),v("component-list-significant-change",[]).includes(e)&&this.markChangesAsSignificant()}isDirty(){return this._dirty||this._significantChange}markDirty(){this._dirty=!0}markChangesAsSignificant(){this._significantChange=!0}undirtify(){return!!this.isDirty()&&(this.hasProperty("SEQUENCE")||(this.sequence=0),this.updatePropertyWithValue("DTSTAMP",C.fromJSDate(q(),!0)),this.updatePropertyWithValue("LAST-MODIFIED",C.fromJSDate(q(),!0)),this._significantChange&&this.sequence++,this.resetDirty(),!0)}resetDirty(){this._dirty=!1,this._significantChange=!1}updatePropertyWithValue(e,t){super.updatePropertyWithValue(e,t),"UID"===h(e)&&(this._cachedId=null),this.markPropertyAsDirty(e)}addProperty(e){return this.markPropertyAsDirty(e.name),e.subscribe((()=>this.markPropertyAsDirty(e.name))),super.addProperty(e)}deleteProperty(e){return this.markPropertyAsDirty(e.name),super.deleteProperty(e)}deleteAllProperties(e){return this.markPropertyAsDirty(e),super.deleteAllProperties(e)}addComponent(e){return this.markSubComponentAsDirty(e.name),e.subscribe((()=>this.markSubComponentAsDirty(e.name))),super.addComponent(e)}deleteComponent(e){return this.markSubComponentAsDirty(e.name),super.deleteComponent(e)}deleteAllComponents(e){return this.markSubComponentAsDirty(e),super.deleteAllComponents(e)}getReferenceRecurrenceId(){return this.originalRecurrenceId?this.originalRecurrenceId:this.recurrenceId?this.recurrenceId:this.startDate?this.startDate:null}_overridePrimaryItem(){const e=this.primaryItem.startDate;for(const e of this.primaryItem.getPropertyIterator())this.primaryItem.deleteProperty(e);for(const e of this.getPropertyIterator())this.primaryItem.addProperty(e);this.recurrenceManager.resetCache(),0!==this.startDate.compare(e)&&this.recurrenceManager.updateStartDateOfMasterItem(this.startDate,e)}static _getConstructorForComponentName(e){return"VALARM"===h(e)?Q:Z}static fromICALJs(...e){const t=super.fromICALJs(...e);return t.resetDirty(),t}}var X,ee;function te(e){return e.getFirstPropertyFirstValue("X-NEXTCLOUD-BC-FIELD-TYPE")}U(J.prototype,{name:"stampTime",iCalendarName:"DTSTAMP"}),U(J.prototype,{name:"recurrenceId",iCalendarName:"RECURRENCE-ID"}),U(J.prototype,"color"),U(J.prototype,{name:"creationTime",iCalendarName:"CREATED"}),U(J.prototype,{name:"modificationTime",iCalendarName:"LAST-MODIFIED"}),U(J.prototype,"organizer"),U(J.prototype,"sequence"),U(J.prototype,"status"),U(J.prototype,"url"),U(J.prototype,{name:"title",iCalendarName:"SUMMARY"}),U(J.prototype,{name:"accessClass",iCalendarName:"class",allowedValues:["PUBLIC","PRIVATE","CONFIDENTIAL"],defaultValue:"PUBLIC",unknownValue:"PRIVATE"}),H(J.prototype,{name:"category",pluralName:"categories",iCalendarName:"CATEGORIES"}),G(J.prototype,{name:"attendee"}),G(J.prototype,{name:"attachment",iCalendarName:"ATTACH"}),G(J.prototype,{name:"relation",iCalendarName:"RELATED-TO"}),G(J.prototype,"comment"),G(J.prototype,"contact"),G(J.prototype,"image"),G(J.prototype,{name:"requestStatus",pluralName:"requestStatus",iCalendarName:"REQUEST-STATUS"}),(X=J.prototype)["get"+m((ee=function(e){return"string"==typeof e&&(e={name:e}),Object.assign({},{iCalendarName:"V"+h(e.name),pluralName:e.name+"s"},e)}(ee="alarm")).name)+"Iterator"]=function*(){yield*this.getComponentIterator(ee.iCalendarName)},X["get"+m(ee.name)+"List"]=function(){return Array.from(this["get"+m(ee.name)+"Iterator"]())},X["remove"+m(ee.name)]=function(e){this.deleteComponent(e)},X["clearAll"+m(ee.pluralName)]=function(){this.deleteAllComponents(ee.iCalendarName)};class ne extends J{isAllDay(){return this.startDate.isDate&&this.endDate.isDate}canModifyAllDay(){return!this.recurrenceManager.masterItem.isRecurring()}get endDate(){if(this.hasProperty("dtend"))return this.getFirstPropertyFirstValue("dtend");const e=this.startDate.clone();return this.hasProperty("duration")?e.addDuration(this.getFirstPropertyFirstValue("duration")):this.startDate.isDate&&e.addDuration(T.fromSeconds(86400)),e}set endDate(e){this.deleteAllProperties("duration"),this.updatePropertyWithValue("dtend",e)}get duration(){return this.hasProperty("duration")?this.getFirstPropertyFirstValue("duration"):this.startDate.subtractDateWithTimezone(this.endDate)}set duration(e){this.deleteAllProperties("dtend"),this.updatePropertyWithValue("duration",e)}setGeographicalPositionFromLatitudeAndLongitude(e,t){this.deleteAllProperties("GEO"),this.addProperty(R.fromPosition(e,t))}addConference(e,t=null,n=null){this._modify(),this.addProperty(j.fromURILabelAndFeatures(e,t,n))}addDurationToStart(e){this.startDate.addDuration(e)}addDurationToEnd(e){const t=this.endDate;t.addDuration(e),this.endDate=t}shiftByDuration(e,t,n,a,r){const i=this.isAllDay();if(i!==t&&!this.canModifyAllDay())throw new TypeError("Can't modify all-day of this event");if(this.startDate.isDate=t,this.startDate.addDuration(e),i&&!t&&(this.startDate.replaceTimezone(n),this.endDate=this.startDate.clone(),this.endDate.addDuration(r)),!i&&t&&(this.endDate=this.startDate.clone(),this.endDate.addDuration(a)),i===t){const t=this.endDate;t.addDuration(e),this.endDate=t}}isBirthdayEvent(){return"BDAY"===te(this)}getIconForBirthdayEvent(){return function(e){switch(te(e)){case"BDAY":return"🎂";case"DEATHDATE":return"⚰️";case"ANNIVERSARY":return"💍";default:return null}}(this)}getAgeForBirthdayEvent(){return function(e,t){if(!e.hasProperty("X-NEXTCLOUD-BC-YEAR"))return null;const n=e.getFirstPropertyFirstValue("X-NEXTCLOUD-BC-YEAR");return parseInt(t,10)-parseInt(n,10)}(this,this.startDate.year)}toICSEntireSeries(){return this.root.toICS()}toICSThisOccurrence(){const e=this.clone();return e.deleteAllProperties("RRULE"),e.deleteAllProperties("EXRULE"),e.deleteAllProperties("RDATE"),e.deleteAllProperties("EXDATE"),e.deleteAllProperties("RECURRENCE-ID"),e.root=e.root.constructor.fromEmpty(),e.parent=e.root,e.root.addComponent(e),e.root.toICS()}isInTimeFrame(e,t){return e.compare(this.endDate)<=0&&t.compare(this.startDate)>=0}}U(ne.prototype,{name:"timeTransparency",iCalendarName:"TRANSP",allowedValues:["OPAQUE","TRANSPARENT"],defaultValue:"OPAQUE"}),U(ne.prototype,"description"),U(ne.prototype,{name:"geographicalPosition",iCalendarName:"GEO"}),U(ne.prototype,"location"),U(ne.prototype,{name:"priority",allowedValues:Array(9).keys(),defaultValue:0,unknownValue:0}),H(ne.prototype,{name:"resource",iCalendarName:"RESOURCES"}),G(ne.prototype,"conference");class ae extends Z{get startDate(){return this.getFirstPropertyFirstValue("DTSTART")}set startDate(e){this._modify(),this.updatePropertyWithValue("DTSTART",e.getInTimezone(K.utc))}get endDate(){return this.getFirstPropertyFirstValue("DTEND")}set endDate(e){this._modify(),this.updatePropertyWithValue("DTEND",e.getInTimezone(K.utc))}*getFreeBusyIterator(){yield*this.getPropertyIterator("FREEBUSY")}addAttendeeFromNameAndEMail(e,t){this._modify(),this.addProperty(O.fromNameAndEMail(e,t))}setOrganizerFromNameAndEMail(e,t){this._modify(),this.deleteAllProperties("ORGANIZER"),this.addProperty(O.fromNameAndEMail(e,t,!0))}}U(ae.prototype,"organizer"),U(ae.prototype,"uid"),G(ae.prototype,"attendee");class re extends J{addDescription(e){this.addProperty(new z("DESCRIPTION",e))}}G(re.prototype,"description");class ie extends Z{toTimezone(){return new K(this.toICALJs())}}U(ie.prototype,{name:"timezoneId",iCalendarName:"tzid"});class oe extends J{isAllDay(){const e=["DTSTART","DUE"];for(const t of e)if(this.hasProperty(t))return this.getFirstPropertyFirstValue(t).isDate;return!0}canModifyAllDay(){return!(!this.hasProperty("dtstart")&&!this.hasProperty("due")||this.recurrenceManager.masterItem.isRecurring())}get endDate(){if(this.hasProperty("due"))return this.getFirstPropertyFirstValue("due");if(!this.hasProperty("dtstart")||!this.hasProperty("duration"))return null;const e=this.startDate.clone();return e.addDuration(this.getFirstPropertyFirstValue("duration")),e}shiftByDuration(e,t,n,a,r){const i=this.isAllDay();if(!this.hasProperty("dtstart")&&!this.hasProperty("due"))throw new TypeError("This task does not have a start-date nor due-date");if(i!==t&&!this.canModifyAllDay())throw new TypeError("Can't modify all-day of this todo");this.hasProperty("dtstart")&&(this.startDate.isDate=t,this.startDate.addDuration(e),i&&!t&&this.startDate.replaceTimezone(n)),this.hasProperty("due")&&(this.dueTime.isDate=t,this.dueTime.addDuration(e),i&&!t&&this.dueTime.replaceTimezone(n))}isInTimeFrame(e,t){return!this.hasProperty("dtstart")&&!this.hasProperty("due")||(!this.hasProperty("dtstart")&&this.hasProperty("due")?e.compare(this.endDate)<=0:e.compare(this.endDate)<=0&&t.compare(this.startDate)>=0)}get geographicalPosition(){return this.getFirstProperty("GEO")}setGeographicalPositionFromLatitudeAndLongitude(e,t){this.deleteAllProperties("GEO"),this.addProperty(R.fromPosition(e,t))}addConference(e,t=null,n=null){this.addProperty(j.fromURILabelAndFeatures(e,t,n))}getReferenceRecurrenceId(){return super.getReferenceRecurrenceId()??this.endDate}}U(oe.prototype,{name:"completedTime",iCalendarName:"COMPLETED"}),U(oe.prototype,{name:"dueTime",iCalendarName:"DUE"}),U(oe.prototype,{name:"duration"}),U(oe.prototype,{name:"percent",iCalendarName:"PERCENT-COMPLETE"}),U(oe.prototype,"description"),U(oe.prototype,"location"),U(oe.prototype,{name:"priority",allowedValues:Array.from(Array(10).keys()),defaultValue:0,unknownValue:0}),H(oe.prototype,{name:"resource",iCalendarName:"RESOURCES"}),G(oe.prototype,"conference");class se extends Z{constructor(e="VCALENDAR",t=[],n=[]){super(e,t,n),this.root=this,this.parent=null}*getTimezoneIterator(){yield*this.getComponentIterator("vtimezone")}*getVObjectIterator(){yield*this.getEventIterator(),yield*this.getJournalIterator(),yield*this.getTodoIterator()}*getEventIterator(){yield*this.getComponentIterator("vevent")}*getFreebusyIterator(){yield*this.getComponentIterator("vfreebusy")}*getJournalIterator(){yield*this.getComponentIterator("vjournal")}*getTodoIterator(){yield*this.getComponentIterator("vtodo")}static _getConstructorForComponentName(e){return function(e){switch(h(e)){case"VEVENT":return ne;case"VFREEBUSY":return ae;case"VJOURNAL":return re;case"VTIMEZONE":return ie;case"VTODO":return oe;default:return Z}}(e)}toICS(e=!0){for(const e of this.getVObjectIterator())e.undirtify();const t=this.toICALJs();return e&&r().helpers.updateTimezones(t),t.toString()}static fromEmpty(e=[]){return new this("VCALENDAR",[["prodid",v("PRODID","-//IDN georgehrke.com//calendar-js//EN")],["calscale","GREGORIAN"],["version","2.0"]].concat(e))}static fromMethod(e){return this.fromEmpty([["method",e]])}static fromICALJs(e){const t=super.fromICALJs(e);return t.root=t,t}}U(se.prototype,{name:"productId",iCalendarName:"PRODID"}),U(se.prototype,{name:"version"}),U(se.prototype,{name:"calendarScale",iCalendarName:"CALSCALE",defaultValue:"GREGORIAN"}),U(se.prototype,{name:"method"});var le={version:"2.2023c",aliases:{"AUS Central Standard Time":{aliasTo:"Australia/Darwin"},"AUS Eastern Standard Time":{aliasTo:"Australia/Sydney"},"Afghanistan Standard Time":{aliasTo:"Asia/Kabul"},"Africa/Asmera":{aliasTo:"Africa/Asmara"},"Africa/Timbuktu":{aliasTo:"Africa/Bamako"},"Alaskan Standard Time":{aliasTo:"America/Anchorage"},"America/Argentina/ComodRivadavia":{aliasTo:"America/Argentina/Catamarca"},"America/Buenos_Aires":{aliasTo:"America/Argentina/Buenos_Aires"},"America/Louisville":{aliasTo:"America/Kentucky/Louisville"},"America/Montreal":{aliasTo:"America/Toronto"},"America/Santa_Isabel":{aliasTo:"America/Tijuana"},"Arab Standard Time":{aliasTo:"Asia/Riyadh"},"Arabian Standard Time":{aliasTo:"Asia/Dubai"},"Arabic Standard Time":{aliasTo:"Asia/Baghdad"},"Argentina Standard Time":{aliasTo:"America/Argentina/Buenos_Aires"},"Asia/Calcutta":{aliasTo:"Asia/Kolkata"},"Asia/Katmandu":{aliasTo:"Asia/Kathmandu"},"Asia/Rangoon":{aliasTo:"Asia/Yangon"},"Asia/Saigon":{aliasTo:"Asia/Ho_Chi_Minh"},"Atlantic Standard Time":{aliasTo:"America/Halifax"},"Atlantic/Faeroe":{aliasTo:"Atlantic/Faroe"},"Atlantic/Jan_Mayen":{aliasTo:"Europe/Oslo"},"Azerbaijan Standard Time":{aliasTo:"Asia/Baku"},"Azores Standard Time":{aliasTo:"Atlantic/Azores"},"Bahia Standard Time":{aliasTo:"America/Bahia"},"Bangladesh Standard Time":{aliasTo:"Asia/Dhaka"},"Belarus Standard Time":{aliasTo:"Europe/Minsk"},"Canada Central Standard Time":{aliasTo:"America/Regina"},"Cape Verde Standard Time":{aliasTo:"Atlantic/Cape_Verde"},"Caucasus Standard Time":{aliasTo:"Asia/Yerevan"},"Cen. Australia Standard Time":{aliasTo:"Australia/Adelaide"},"Central America Standard Time":{aliasTo:"America/Guatemala"},"Central Asia Standard Time":{aliasTo:"Asia/Almaty"},"Central Brazilian Standard Time":{aliasTo:"America/Cuiaba"},"Central Europe Standard Time":{aliasTo:"Europe/Budapest"},"Central European Standard Time":{aliasTo:"Europe/Warsaw"},"Central Pacific Standard Time":{aliasTo:"Pacific/Guadalcanal"},"Central Standard Time":{aliasTo:"America/Chicago"},"Central Standard Time (Mexico)":{aliasTo:"America/Mexico_City"},"China Standard Time":{aliasTo:"Asia/Shanghai"},"E. Africa Standard Time":{aliasTo:"Africa/Nairobi"},"E. Australia Standard Time":{aliasTo:"Australia/Brisbane"},"E. South America Standard Time":{aliasTo:"America/Sao_Paulo"},"Eastern Standard Time":{aliasTo:"America/New_York"},"Egypt Standard Time":{aliasTo:"Africa/Cairo"},"Ekaterinburg Standard Time":{aliasTo:"Asia/Yekaterinburg"},"Etc/GMT":{aliasTo:"UTC"},"Etc/GMT+0":{aliasTo:"UTC"},"Etc/UCT":{aliasTo:"UTC"},"Etc/UTC":{aliasTo:"UTC"},"Etc/Unversal":{aliasTo:"UTC"},"Etc/Zulu":{aliasTo:"UTC"},"Europe/Belfast":{aliasTo:"Europe/London"},"FLE Standard Time":{aliasTo:"Europe/Kiev"},"Fiji Standard Time":{aliasTo:"Pacific/Fiji"},GMT:{aliasTo:"UTC"},"GMT Standard Time":{aliasTo:"Europe/London"},"GMT+0":{aliasTo:"UTC"},GMT0:{aliasTo:"UTC"},"GTB Standard Time":{aliasTo:"Europe/Bucharest"},"Georgian Standard Time":{aliasTo:"Asia/Tbilisi"},"Greenland Standard Time":{aliasTo:"America/Godthab"},Greenwich:{aliasTo:"UTC"},"Greenwich Standard Time":{aliasTo:"Atlantic/Reykjavik"},"Hawaiian Standard Time":{aliasTo:"Pacific/Honolulu"},"India Standard Time":{aliasTo:"Asia/Calcutta"},"Iran Standard Time":{aliasTo:"Asia/Tehran"},"Israel Standard Time":{aliasTo:"Asia/Jerusalem"},"Jordan Standard Time":{aliasTo:"Asia/Amman"},"Kaliningrad Standard Time":{aliasTo:"Europe/Kaliningrad"},"Korea Standard Time":{aliasTo:"Asia/Seoul"},"Libya Standard Time":{aliasTo:"Africa/Tripoli"},"Line Islands Standard Time":{aliasTo:"Pacific/Kiritimati"},"Magadan Standard Time":{aliasTo:"Asia/Magadan"},"Mauritius Standard Time":{aliasTo:"Indian/Mauritius"},"Middle East Standard Time":{aliasTo:"Asia/Beirut"},"Montevideo Standard Time":{aliasTo:"America/Montevideo"},"Morocco Standard Time":{aliasTo:"Africa/Casablanca"},"Mountain Standard Time":{aliasTo:"America/Denver"},"Mountain Standard Time (Mexico)":{aliasTo:"America/Chihuahua"},"Myanmar Standard Time":{aliasTo:"Asia/Rangoon"},"N. Central Asia Standard Time":{aliasTo:"Asia/Novosibirsk"},"Namibia Standard Time":{aliasTo:"Africa/Windhoek"},"Nepal Standard Time":{aliasTo:"Asia/Katmandu"},"New Zealand Standard Time":{aliasTo:"Pacific/Auckland"},"Newfoundland Standard Time":{aliasTo:"America/St_Johns"},"North Asia East Standard Time":{aliasTo:"Asia/Irkutsk"},"North Asia Standard Time":{aliasTo:"Asia/Krasnoyarsk"},"Pacific SA Standard Time":{aliasTo:"America/Santiago"},"Pacific Standard Time":{aliasTo:"America/Los_Angeles"},"Pacific Standard Time (Mexico)":{aliasTo:"America/Santa_Isabel"},"Pacific/Johnston":{aliasTo:"Pacific/Honolulu"},"Pakistan Standard Time":{aliasTo:"Asia/Karachi"},"Paraguay Standard Time":{aliasTo:"America/Asuncion"},"Romance Standard Time":{aliasTo:"Europe/Paris"},"Russia Time Zone 10":{aliasTo:"Asia/Srednekolymsk"},"Russia Time Zone 11":{aliasTo:"Asia/Kamchatka"},"Russia Time Zone 3":{aliasTo:"Europe/Samara"},"Russian Standard Time":{aliasTo:"Europe/Moscow"},"SA Eastern Standard Time":{aliasTo:"America/Cayenne"},"SA Pacific Standard Time":{aliasTo:"America/Bogota"},"SA Western Standard Time":{aliasTo:"America/La_Paz"},"SE Asia Standard Time":{aliasTo:"Asia/Bangkok"},"Samoa Standard Time":{aliasTo:"Pacific/Apia"},"Singapore Standard Time":{aliasTo:"Asia/Singapore"},"South Africa Standard Time":{aliasTo:"Africa/Johannesburg"},"Sri Lanka Standard Time":{aliasTo:"Asia/Colombo"},"Syria Standard Time":{aliasTo:"Asia/Damascus"},"Taipei Standard Time":{aliasTo:"Asia/Taipei"},"Tasmania Standard Time":{aliasTo:"Australia/Hobart"},"Tokyo Standard Time":{aliasTo:"Asia/Tokyo"},"Tonga Standard Time":{aliasTo:"Pacific/Tongatapu"},"Turkey Standard Time":{aliasTo:"Europe/Istanbul"},UCT:{aliasTo:"UTC"},"US Eastern Standard Time":{aliasTo:"America/Indiana/Indianapolis"},"US Mountain Standard Time":{aliasTo:"America/Phoenix"},"US/Central":{aliasTo:"America/Chicago"},"US/Eastern":{aliasTo:"America/New_York"},"US/Mountain":{aliasTo:"America/Denver"},"US/Pacific":{aliasTo:"America/Los_Angeles"},"US/Pacific-New":{aliasTo:"America/Los_Angeles"},"Ulaanbaatar Standard Time":{aliasTo:"Asia/Ulaanbaatar"},Universal:{aliasTo:"UTC"},"Venezuela Standard Time":{aliasTo:"America/Caracas"},"Vladivostok Standard Time":{aliasTo:"Asia/Vladivostok"},"W. Australia Standard Time":{aliasTo:"Australia/Perth"},"W. Central Africa Standard Time":{aliasTo:"Africa/Lagos"},"W. Europe Standard Time":{aliasTo:"Europe/Berlin"},"West Asia Standard Time":{aliasTo:"Asia/Tashkent"},"West Pacific Standard Time":{aliasTo:"Pacific/Port_Moresby"},"Yakutsk Standard Time":{aliasTo:"Asia/Yakutsk"},Z:{aliasTo:"UTC"},Zulu:{aliasTo:"UTC"},utc:{aliasTo:"UTC"}},zones:{"Africa/Abidjan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0051900",longitude:"-0040200"},"Africa/Accra":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Addis_Ababa":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Algiers":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0364700",longitude:"+0030300"},"Africa/Asmara":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Asmera":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Bamako":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Bangui":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Banjul":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Bissau":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0115100",longitude:"-0153500"},"Africa/Blantyre":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Brazzaville":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Bujumbura":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Cairo":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700424T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1FR\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701030T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR\r\nEND:STANDARD"],latitude:"+0300300",longitude:"+0311500"},"Africa/Casablanca":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:+01\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0333900",longitude:"-0073500"},"Africa/Ceuta":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0355300",longitude:"-0051900"},"Africa/Conakry":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Dakar":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Dar_es_Salaam":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Djibouti":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Douala":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/El_Aaiun":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:+01\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0270900",longitude:"-0131200"},"Africa/Freetown":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Gaborone":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Harare":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Johannesburg":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:SAST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0261500",longitude:"+0280000"},"Africa/Juba":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0045100",longitude:"+0313700"},"Africa/Kampala":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Khartoum":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0153600",longitude:"+0323200"},"Africa/Kigali":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Kinshasa":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Lagos":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0062700",longitude:"+0032400"},"Africa/Libreville":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Lome":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Luanda":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Lubumbashi":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Lusaka":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Malabo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Maputo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0255800",longitude:"+0323500"},"Africa/Maseru":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:SAST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Mbabane":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:SAST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Mogadishu":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Monrovia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0061800",longitude:"-0104700"},"Africa/Nairobi":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0011700",longitude:"+0364900"},"Africa/Ndjamena":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0120700",longitude:"+0150300"},"Africa/Niamey":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Nouakchott":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Ouagadougou":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Porto-Novo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:WAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Sao_Tome":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0002000",longitude:"+0064400"},"Africa/Timbuktu":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Africa/Tripoli":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0325400",longitude:"+0131100"},"Africa/Tunis":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0364800",longitude:"+0101100"},"Africa/Windhoek":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:CAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0223400",longitude:"+0170600"},"America/Adak":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-0900\r\nTZNAME:HDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-1000\r\nTZNAME:HST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0515248",longitude:"-1763929"},"America/Anchorage":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nTZNAME:AKDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nTZNAME:AKST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0611305",longitude:"-1495401"},"America/Anguilla":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Antigua":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Araguaina":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0071200",longitude:"-0481200"},"America/Argentina/Buenos_Aires":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0343600",longitude:"-0582700"},"America/Argentina/Catamarca":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0282800",longitude:"-0654700"},"America/Argentina/ComodRivadavia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Argentina/Cordoba":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0312400",longitude:"-0641100"},"America/Argentina/Jujuy":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0241100",longitude:"-0651800"},"America/Argentina/La_Rioja":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0292600",longitude:"-0665100"},"America/Argentina/Mendoza":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0325300",longitude:"-0684900"},"America/Argentina/Rio_Gallegos":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0513800",longitude:"-0691300"},"America/Argentina/Salta":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0244700",longitude:"-0652500"},"America/Argentina/San_Juan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0313200",longitude:"-0683100"},"America/Argentina/San_Luis":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0331900",longitude:"-0662100"},"America/Argentina/Tucuman":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0264900",longitude:"-0651300"},"America/Argentina/Ushuaia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0544800",longitude:"-0681800"},"America/Aruba":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Asuncion":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19701004T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700322T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=4SU\r\nEND:STANDARD"],latitude:"-0251600",longitude:"-0574000"},"America/Atikokan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Atka":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-0900\r\nTZNAME:HDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-1000\r\nTZNAME:HST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Bahia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0125900",longitude:"-0383100"},"America/Bahia_Banderas":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0204800",longitude:"-1051500"},"America/Barbados":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0130600",longitude:"-0593700"},"America/Belem":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0012700",longitude:"-0482900"},"America/Belize":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0173000",longitude:"-0881200"},"America/Blanc-Sablon":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Boa_Vista":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0024900",longitude:"-0604000"},"America/Bogota":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0043600",longitude:"-0740500"},"America/Boise":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0433649",longitude:"-1161209"},"America/Buenos_Aires":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Cambridge_Bay":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0690650",longitude:"-1050310"},"America/Campo_Grande":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0202700",longitude:"-0543700"},"America/Cancun":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0210500",longitude:"-0864600"},"America/Caracas":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0103000",longitude:"-0665600"},"America/Catamarca":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Cayenne":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0045600",longitude:"-0522000"},"America/Cayman":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Chicago":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0415100",longitude:"-0873900"},"America/Chihuahua":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0283800",longitude:"-1060500"},"America/Ciudad_Juarez":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0314400",longitude:"-1062900"},"America/Coral_Harbour":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Cordoba":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Costa_Rica":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0095600",longitude:"-0840500"},"America/Creston":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Cuiaba":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0153500",longitude:"-0560500"},"America/Curacao":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Danmarkshavn":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0764600",longitude:"-0184000"},"America/Dawson":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0640400",longitude:"-1392500"},"America/Dawson_Creek":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0554600",longitude:"-1201400"},"America/Denver":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0394421",longitude:"-1045903"},"America/Detroit":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0421953",longitude:"-0830245"},"America/Dominica":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Edmonton":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0533300",longitude:"-1132800"},"America/Eirunepe":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0064000",longitude:"-0695200"},"America/El_Salvador":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0134200",longitude:"-0891200"},"America/Ensenada":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Fort_Nelson":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0584800",longitude:"-1224200"},"America/Fort_Wayne":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Fortaleza":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0034300",longitude:"-0383000"},"America/Glace_Bay":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:ADT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0461200",longitude:"-0595700"},"America/Godthab":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0100\r\nTZNAME:-01\r\nDTSTART:19700328T230000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0200\r\nTZNAME:-02\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"America/Goose_Bay":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:ADT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT"],latitude:"+0532000",longitude:"-0602500"},"America/Grand_Turk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT"],latitude:"+0212800",longitude:"-0710800"},"America/Grenada":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Guadeloupe":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Guatemala":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0143800",longitude:"-0903100"},"America/Guayaquil":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0021000",longitude:"-0795000"},"America/Guyana":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0064800",longitude:"-0581000"},"America/Halifax":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:ADT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0443900",longitude:"-0633600"},"America/Havana":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:CST\r\nDTSTART:19701101T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:CDT\r\nDTSTART:19700308T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT"],latitude:"+0230800",longitude:"-0822200"},"America/Hermosillo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0290400",longitude:"-1105800"},"America/Indiana/Indianapolis":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0394606",longitude:"-0860929"},"America/Indiana/Knox":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0411745",longitude:"-0863730"},"America/Indiana/Marengo":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0382232",longitude:"-0862041"},"America/Indiana/Petersburg":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0382931",longitude:"-0871643"},"America/Indiana/Tell_City":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0375711",longitude:"-0864541"},"America/Indiana/Vevay":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0384452",longitude:"-0850402"},"America/Indiana/Vincennes":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0384038",longitude:"-0873143"},"America/Indiana/Winamac":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT"],latitude:"+0410305",longitude:"-0863611"},"America/Indianapolis":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Inuvik":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0682059",longitude:"-1334300"},"America/Iqaluit":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0634400",longitude:"-0682800"},"America/Jamaica":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0175805",longitude:"-0764736"},"America/Jujuy":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Juneau":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nTZNAME:AKDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nTZNAME:AKST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0581807",longitude:"-1342511"},"America/Kentucky/Louisville":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0381515",longitude:"-0854534"},"America/Kentucky/Monticello":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0364947",longitude:"-0845057"},"America/Knox_IN":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Kralendijk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/La_Paz":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0163000",longitude:"-0680900"},"America/Lima":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0120300",longitude:"-0770300"},"America/Los_Angeles":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0340308",longitude:"-1181434"},"America/Louisville":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Lower_Princes":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Maceio":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0094000",longitude:"-0354300"},"America/Managua":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0120900",longitude:"-0861700"},"America/Manaus":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0030800",longitude:"-0600100"},"America/Marigot":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Martinique":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0143600",longitude:"-0610500"},"America/Matamoros":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0255000",longitude:"-0973000"},"America/Mazatlan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0231300",longitude:"-1062500"},"America/Mendoza":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Menominee":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0450628",longitude:"-0873651"},"America/Merida":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0205800",longitude:"-0893700"},"America/Metlakatla":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nTZNAME:AKDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nTZNAME:AKST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0550737",longitude:"-1313435"},"America/Mexico_City":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0192400",longitude:"-0990900"},"America/Miquelon":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0200\r\nTZNAME:-02\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0470300",longitude:"-0562000"},"America/Moncton":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:ADT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0460600",longitude:"-0644700"},"America/Monterrey":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0254000",longitude:"-1001900"},"America/Montevideo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0345433",longitude:"-0561245"},"America/Montreal":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Montserrat":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Nassau":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/New_York":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0404251",longitude:"-0740023"},"America/Nipigon":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Nome":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nTZNAME:AKDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nTZNAME:AKST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0643004",longitude:"-1652423"},"America/Noronha":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nTZNAME:-02\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0035100",longitude:"-0322500"},"America/North_Dakota/Beulah":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0471551",longitude:"-1014640"},"America/North_Dakota/Center":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0470659",longitude:"-1011757"},"America/North_Dakota/New_Salem":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0465042",longitude:"-1012439"},"America/Nuuk":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0100\r\nTZNAME:-01\r\nDTSTART:19700328T230000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0200\r\nTZNAME:-02\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0641100",longitude:"-0514400"},"America/Ojinaga":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0293400",longitude:"-1042500"},"America/Panama":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0085800",longitude:"-0793200"},"America/Pangnirtung":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Paramaribo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0055000",longitude:"-0551000"},"America/Phoenix":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0332654",longitude:"-1120424"},"America/Port-au-Prince":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0183200",longitude:"-0722000"},"America/Port_of_Spain":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Porto_Acre":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Porto_Velho":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0084600",longitude:"-0635400"},"America/Puerto_Rico":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0182806",longitude:"-0660622"},"America/Punta_Arenas":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0530900",longitude:"-0705500"},"America/Rainy_River":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Rankin_Inlet":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0624900",longitude:"-0920459"},"America/Recife":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0080300",longitude:"-0345400"},"America/Regina":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0502400",longitude:"-1043900"},"America/Resolute":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT"],latitude:"+0744144",longitude:"-0944945"},"America/Rio_Branco":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0095800",longitude:"-0674800"},"America/Rosario":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Santa_Isabel":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Santarem":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0022600",longitude:"-0545200"},"America/Santiago":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700405T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700906T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\r\nEND:DAYLIGHT"],latitude:"-0332700",longitude:"-0704000"},"America/Santo_Domingo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0182800",longitude:"-0695400"},"America/Sao_Paulo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0233200",longitude:"-0463700"},"America/Scoresbysund":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:+0000\r\nTZNAME:+00\r\nDTSTART:19700329T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:-0100\r\nTZNAME:-01\r\nDTSTART:19701025T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0702900",longitude:"-0215800"},"America/Shiprock":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Sitka":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nTZNAME:AKDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nTZNAME:AKST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0571035",longitude:"-1351807"},"America/St_Barthelemy":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/St_Johns":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0230\r\nTZOFFSETTO:-0330\r\nTZNAME:NST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0330\r\nTZOFFSETTO:-0230\r\nTZNAME:NDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT"],latitude:"+0473400",longitude:"-0524300"},"America/St_Kitts":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/St_Lucia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/St_Thomas":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/St_Vincent":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Swift_Current":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0501700",longitude:"-1075000"},"America/Tegucigalpa":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0140600",longitude:"-0871300"},"America/Thule":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:ADT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0763400",longitude:"-0684700"},"America/Thunder_Bay":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"America/Tijuana":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0323200",longitude:"-1170100"},"America/Toronto":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0433900",longitude:"-0792300"},"America/Tortola":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Vancouver":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0491600",longitude:"-1230700"},"America/Virgin":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"America/Whitehorse":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0604300",longitude:"-1350300"},"America/Winnipeg":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0495300",longitude:"-0970900"},"America/Yakutat":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nTZNAME:AKDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nTZNAME:AKST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0593249",longitude:"-1394338"},"America/Yellowknife":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"Antarctica/Casey":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0661700",longitude:"+1103100"},"Antarctica/Davis":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0683500",longitude:"+0775800"},"Antarctica/DumontDUrville":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:+10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Antarctica/Macquarie":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"],latitude:"-0543000",longitude:"+1585700"},"Antarctica/Mawson":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0673600",longitude:"+0625300"},"Antarctica/McMurdo":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1300\r\nTZNAME:NZDT\r\nDTSTART:19700927T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1200\r\nTZNAME:NZST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD"]},"Antarctica/Palmer":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0644800",longitude:"-0640600"},"Antarctica/Rothera":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0673400",longitude:"-0680800"},"Antarctica/South_Pole":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1300\r\nTZNAME:NZDT\r\nDTSTART:19700927T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1200\r\nTZNAME:NZST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD"]},"Antarctica/Syowa":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Antarctica/Troll":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0200\r\nTZNAME:+02\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0000\r\nTZNAME:+00\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"-0720041",longitude:"+0023206"},"Antarctica/Vostok":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Arctic/Longyearbyen":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Asia/Aden":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Almaty":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0431500",longitude:"+0765700"},"Asia/Amman":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0315700",longitude:"+0355600"},"Asia/Anadyr":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0644500",longitude:"+1772900"},"Asia/Aqtau":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0443100",longitude:"+0501600"},"Asia/Aqtobe":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0501700",longitude:"+0571000"},"Asia/Ashgabat":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0375700",longitude:"+0582300"},"Asia/Ashkhabad":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Atyrau":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0470700",longitude:"+0515600"},"Asia/Baghdad":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0332100",longitude:"+0442500"},"Asia/Bahrain":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Baku":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0402300",longitude:"+0495100"},"Asia/Bangkok":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0134500",longitude:"+1003100"},"Asia/Barnaul":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0532200",longitude:"+0834500"},"Asia/Beirut":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0335300",longitude:"+0353000"},"Asia/Bishkek":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0425400",longitude:"+0743600"},"Asia/Brunei":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Calcutta":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0530\r\nTZOFFSETTO:+0530\r\nTZNAME:IST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Chita":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:+09\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0520300",longitude:"+1132800"},"Asia/Choibalsan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0480400",longitude:"+1143000"},"Asia/Chongqing":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Chungking":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Colombo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0530\r\nTZOFFSETTO:+0530\r\nTZNAME:+0530\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0065600",longitude:"+0795100"},"Asia/Dacca":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Damascus":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0333000",longitude:"+0361800"},"Asia/Dhaka":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0234300",longitude:"+0902500"},"Asia/Dili":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:+09\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0083300",longitude:"+1253500"},"Asia/Dubai":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0251800",longitude:"+0551800"},"Asia/Dushanbe":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0383500",longitude:"+0684800"},"Asia/Famagusta":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0350700",longitude:"+0335700"},"Asia/Gaza":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701031T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700328T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT"],latitude:"+0313000",longitude:"+0342800"},"Asia/Harbin":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Hebron":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701031T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700328T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT"],latitude:"+0313200",longitude:"+0350542"},"Asia/Ho_Chi_Minh":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0104500",longitude:"+1064000"},"Asia/Hong_Kong":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:HKT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0221700",longitude:"+1140900"},"Asia/Hovd":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0480100",longitude:"+0913900"},"Asia/Irkutsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0521600",longitude:"+1042000"},"Asia/Istanbul":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Jakarta":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:WIB\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0061000",longitude:"+1064800"},"Asia/Jayapura":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:WIT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0023200",longitude:"+1404200"},"Asia/Jerusalem":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:IDT\r\nDTSTART:19700327T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:IST\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0314650",longitude:"+0351326"},"Asia/Kabul":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0430\r\nTZOFFSETTO:+0430\r\nTZNAME:+0430\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0343100",longitude:"+0691200"},"Asia/Kamchatka":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0530100",longitude:"+1583900"},"Asia/Karachi":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:PKT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0245200",longitude:"+0670300"},"Asia/Kashgar":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Kathmandu":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0545\r\nTZOFFSETTO:+0545\r\nTZNAME:+0545\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0274300",longitude:"+0851900"},"Asia/Katmandu":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0545\r\nTZOFFSETTO:+0545\r\nTZNAME:+0545\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Khandyga":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:+09\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0623923",longitude:"+1353314"},"Asia/Kolkata":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0530\r\nTZOFFSETTO:+0530\r\nTZNAME:IST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0223200",longitude:"+0882200"},"Asia/Krasnoyarsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0560100",longitude:"+0925000"},"Asia/Kuala_Lumpur":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Kuching":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0013300",longitude:"+1102000"},"Asia/Kuwait":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Macao":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Macau":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0221150",longitude:"+1133230"},"Asia/Magadan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0593400",longitude:"+1504800"},"Asia/Makassar":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:WITA\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0050700",longitude:"+1192400"},"Asia/Manila":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:PST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0143500",longitude:"+1210000"},"Asia/Muscat":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Nicosia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT"],latitude:"+0351000",longitude:"+0332200"},"Asia/Novokuznetsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0534500",longitude:"+0870700"},"Asia/Novosibirsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0550200",longitude:"+0825500"},"Asia/Omsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0550000",longitude:"+0732400"},"Asia/Oral":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0511300",longitude:"+0512100"},"Asia/Phnom_Penh":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Pontianak":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:WIB\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0000200",longitude:"+1092000"},"Asia/Pyongyang":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:KST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0390100",longitude:"+1254500"},"Asia/Qatar":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0251700",longitude:"+0513200"},"Asia/Qostanay":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0531200",longitude:"+0633700"},"Asia/Qyzylorda":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0444800",longitude:"+0652800"},"Asia/Rangoon":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0630\r\nTZOFFSETTO:+0630\r\nTZNAME:+0630\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Riyadh":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0243800",longitude:"+0464300"},"Asia/Saigon":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Sakhalin":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0465800",longitude:"+1424200"},"Asia/Samarkand":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0394000",longitude:"+0664800"},"Asia/Seoul":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:KST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0373300",longitude:"+1265800"},"Asia/Shanghai":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0311400",longitude:"+1212800"},"Asia/Singapore":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0011700",longitude:"+1035100"},"Asia/Srednekolymsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0672800",longitude:"+1534300"},"Asia/Taipei":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0250300",longitude:"+1213000"},"Asia/Tashkent":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0412000",longitude:"+0691800"},"Asia/Tbilisi":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0414300",longitude:"+0444900"},"Asia/Tehran":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0330\r\nTZOFFSETTO:+0330\r\nTZNAME:+0330\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0354000",longitude:"+0512600"},"Asia/Tel_Aviv":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:IDT\r\nDTSTART:19700327T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:IST\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Asia/Thimbu":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Thimphu":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0272800",longitude:"+0893900"},"Asia/Tokyo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:JST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0353916",longitude:"+1394441"},"Asia/Tomsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0563000",longitude:"+0845800"},"Asia/Ujung_Pandang":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:WITA\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Ulaanbaatar":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0475500",longitude:"+1065300"},"Asia/Ulan_Bator":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:+08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Urumqi":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0434800",longitude:"+0873500"},"Asia/Ust-Nera":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:+10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0643337",longitude:"+1431336"},"Asia/Vientiane":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Asia/Vladivostok":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:+10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0431000",longitude:"+1315600"},"Asia/Yakutsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:+09\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0620000",longitude:"+1294000"},"Asia/Yangon":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0630\r\nTZOFFSETTO:+0630\r\nTZNAME:+0630\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0164700",longitude:"+0961000"},"Asia/Yekaterinburg":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0565100",longitude:"+0603600"},"Asia/Yerevan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0401100",longitude:"+0443000"},"Atlantic/Azores":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:+0000\r\nTZNAME:+00\r\nDTSTART:19700329T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:-0100\r\nTZNAME:-01\r\nDTSTART:19701025T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0374400",longitude:"-0254000"},"Atlantic/Bermuda":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:ADT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"],latitude:"+0321700",longitude:"-0644600"},"Atlantic/Canary":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:WEST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:WET\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0280600",longitude:"-0152400"},"Atlantic/Cape_Verde":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0100\r\nTZNAME:-01\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0145500",longitude:"-0233100"},"Atlantic/Faeroe":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:WEST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:WET\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Atlantic/Faroe":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:WEST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:WET\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0620100",longitude:"-0064600"},"Atlantic/Jan_Mayen":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Atlantic/Madeira":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:WEST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:WET\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0323800",longitude:"-0165400"},"Atlantic/Reykjavik":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Atlantic/South_Georgia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nTZNAME:-02\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0541600",longitude:"-0363200"},"Atlantic/St_Helena":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Atlantic/Stanley":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0514200",longitude:"-0575100"},"Australia/ACT":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"]},"Australia/Adelaide":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+0930\r\nTZNAME:ACST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+1030\r\nTZNAME:ACDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"],latitude:"-0345500",longitude:"+1383500"},"Australia/Brisbane":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0272800",longitude:"+1530200"},"Australia/Broken_Hill":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+0930\r\nTZNAME:ACST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+1030\r\nTZNAME:ACDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"],latitude:"-0315700",longitude:"+1412700"},"Australia/Canberra":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"]},"Australia/Currie":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD"]},"Australia/Darwin":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+0930\r\nTZNAME:ACST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0122800",longitude:"+1305000"},"Australia/Eucla":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0845\r\nTZOFFSETTO:+0845\r\nTZNAME:+0845\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0314300",longitude:"+1285200"},"Australia/Hobart":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD"],latitude:"-0425300",longitude:"+1471900"},"Australia/LHI":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1030\r\nTZNAME:+1030\r\nDTSTART:19700405T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"]},"Australia/Lindeman":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0201600",longitude:"+1490000"},"Australia/Lord_Howe":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1030\r\nTZNAME:+1030\r\nDTSTART:19700405T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"],latitude:"-0313300",longitude:"+1590500"},"Australia/Melbourne":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"],latitude:"-0374900",longitude:"+1445800"},"Australia/NSW":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"]},"Australia/North":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+0930\r\nTZNAME:ACST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Australia/Perth":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:AWST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0315700",longitude:"+1155100"},"Australia/Queensland":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Australia/South":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+0930\r\nTZNAME:ACST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+1030\r\nTZNAME:ACDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"]},"Australia/Sydney":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"],latitude:"-0335200",longitude:"+1511300"},"Australia/Tasmania":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD"]},"Australia/Victoria":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nTZNAME:AEST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nTZNAME:AEDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"]},"Australia/West":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nTZNAME:AWST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Australia/Yancowinna":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+0930\r\nTZNAME:ACST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+1030\r\nTZNAME:ACDT\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT"]},"Brazil/Acre":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Brazil/DeNoronha":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nTZNAME:-02\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Brazil/East":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Brazil/West":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Canada/Atlantic":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:ADT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:AST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"Canada/Central":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"Canada/Eastern":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"Canada/Mountain":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"Canada/Newfoundland":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0230\r\nTZOFFSETTO:-0330\r\nTZNAME:NST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0330\r\nTZOFFSETTO:-0230\r\nTZNAME:NDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT"]},"Canada/Pacific":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"Canada/Saskatchewan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Canada/Yukon":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Chile/Continental":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nTZNAME:-04\r\nDTSTART:19700405T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nTZNAME:-03\r\nDTSTART:19700906T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\r\nEND:DAYLIGHT"]},"Chile/EasterIsland":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:-06\r\nDTSTART:19700404T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700905T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\r\nEND:DAYLIGHT"]},"Europe/Amsterdam":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Andorra":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0423000",longitude:"+0013100"},"Europe/Astrakhan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0462100",longitude:"+0480300"},"Europe/Athens":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0375800",longitude:"+0234300"},"Europe/Belfast":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:BST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Belgrade":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0445000",longitude:"+0203000"},"Europe/Berlin":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0523000",longitude:"+0132200"},"Europe/Bratislava":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Brussels":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0505000",longitude:"+0042000"},"Europe/Bucharest":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0442600",longitude:"+0260600"},"Europe/Budapest":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0473000",longitude:"+0190500"},"Europe/Busingen":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Chisinau":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0470000",longitude:"+0285000"},"Europe/Copenhagen":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Dublin":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:IST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:DAYLIGHT"],latitude:"+0532000",longitude:"-0061500"},"Europe/Gibraltar":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0360800",longitude:"-0052100"},"Europe/Guernsey":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:BST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Helsinki":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0601000",longitude:"+0245800"},"Europe/Isle_of_Man":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:BST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Istanbul":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0410100",longitude:"+0285800"},"Europe/Jersey":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:BST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Kaliningrad":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0544300",longitude:"+0203000"},"Europe/Kiev":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT"]},"Europe/Kirov":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:MSK\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0583600",longitude:"+0493900"},"Europe/Kyiv":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT"],latitude:"+0502600",longitude:"+0303100"},"Europe/Lisbon":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:WET\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:WEST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT"],latitude:"+0384300",longitude:"-0090800"},"Europe/Ljubljana":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/London":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nTZNAME:BST\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nTZNAME:GMT\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0513030",longitude:"+0000731"},"Europe/Luxembourg":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Madrid":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0402400",longitude:"-0034100"},"Europe/Malta":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0355400",longitude:"+0143100"},"Europe/Mariehamn":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Minsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:+03\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0535400",longitude:"+0273400"},"Europe/Monaco":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Moscow":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:MSK\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0554521",longitude:"+0373704"},"Europe/Nicosia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT"]},"Europe/Oslo":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Paris":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0485200",longitude:"+0022000"},"Europe/Podgorica":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Prague":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0500500",longitude:"+0142600"},"Europe/Riga":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0565700",longitude:"+0240600"},"Europe/Rome":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0415400",longitude:"+0122900"},"Europe/Samara":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0531200",longitude:"+0500900"},"Europe/San_Marino":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Sarajevo":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Saratov":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0513400",longitude:"+0460200"},"Europe/Simferopol":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:MSK\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0445700",longitude:"+0340600"},"Europe/Skopje":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Sofia":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0424100",longitude:"+0231900"},"Europe/Stockholm":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Tallinn":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0592500",longitude:"+0244500"},"Europe/Tirane":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0412000",longitude:"+0195000"},"Europe/Tiraspol":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Ulyanovsk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0542000",longitude:"+0482400"},"Europe/Uzhgorod":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT"]},"Europe/Vaduz":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Vatican":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Vienna":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0481300",longitude:"+0162000"},"Europe/Vilnius":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0544100",longitude:"+0251900"},"Europe/Volgograd":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:MSK\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0484400",longitude:"+0442500"},"Europe/Warsaw":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0521500",longitude:"+0210000"},"Europe/Zagreb":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"]},"Europe/Zaporozhye":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:EET\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:EEST\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT"]},"Europe/Zurich":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD"],latitude:"+0472300",longitude:"+0083200"},"Indian/Antananarivo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Indian/Chagos":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nTZNAME:+06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0072000",longitude:"+0722500"},"Indian/Christmas":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nTZNAME:+07\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Indian/Cocos":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0630\r\nTZOFFSETTO:+0630\r\nTZNAME:+0630\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Indian/Comoro":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Indian/Kerguelen":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Indian/Mahe":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Indian/Maldives":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nTZNAME:+05\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0041000",longitude:"+0733000"},"Indian/Mauritius":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0201000",longitude:"+0573000"},"Indian/Mayotte":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nTZNAME:EAT\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Indian/Reunion":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nTZNAME:+04\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Mexico/BajaNorte":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"Mexico/BajaSur":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Mexico/General":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Apia":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nTZNAME:+13\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0135000",longitude:"-1714400"},"Pacific/Auckland":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1300\r\nTZNAME:NZDT\r\nDTSTART:19700927T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1200\r\nTZNAME:NZST\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD"],latitude:"-0365200",longitude:"+1744600"},"Pacific/Bougainville":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0061300",longitude:"+1553400"},"Pacific/Chatham":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1245\r\nTZOFFSETTO:+1345\r\nTZNAME:+1345\r\nDTSTART:19700927T024500\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+1345\r\nTZOFFSETTO:+1245\r\nTZNAME:+1245\r\nDTSTART:19700405T034500\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD"],latitude:"-0435700",longitude:"-1763300"},"Pacific/Chuuk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:+10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Easter":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:-06\r\nDTSTART:19700404T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\r\nEND:STANDARD","BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:-05\r\nDTSTART:19700905T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\r\nEND:DAYLIGHT"],latitude:"-0270900",longitude:"-1092600"},"Pacific/Efate":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0174000",longitude:"+1682500"},"Pacific/Enderbury":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nTZNAME:+13\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Fakaofo":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nTZNAME:+13\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0092200",longitude:"-1711400"},"Pacific/Fiji":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0180800",longitude:"+1782500"},"Pacific/Funafuti":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Galapagos":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nTZNAME:-06\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0005400",longitude:"-0893600"},"Pacific/Gambier":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0900\r\nTZNAME:-09\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0230800",longitude:"-1345700"},"Pacific/Guadalcanal":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0093200",longitude:"+1601200"},"Pacific/Guam":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:ChST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0132800",longitude:"+1444500"},"Pacific/Honolulu":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nTZNAME:HST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0211825",longitude:"-1575130"},"Pacific/Johnston":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nTZNAME:HST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Kanton":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nTZNAME:+13\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0024700",longitude:"-1714300"},"Pacific/Kiritimati":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1400\r\nTZOFFSETTO:+1400\r\nTZNAME:+14\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0015200",longitude:"-1572000"},"Pacific/Kosrae":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0051900",longitude:"+1625900"},"Pacific/Kwajalein":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0090500",longitude:"+1672000"},"Pacific/Majuro":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Marquesas":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0930\r\nTZOFFSETTO:-0930\r\nTZNAME:-0930\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0090000",longitude:"-1393000"},"Pacific/Midway":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nTZNAME:SST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Nauru":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0003100",longitude:"+1665500"},"Pacific/Niue":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nTZNAME:-11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0190100",longitude:"-1695500"},"Pacific/Norfolk":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD"],latitude:"-0290300",longitude:"+1675800"},"Pacific/Noumea":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0221600",longitude:"+1662700"},"Pacific/Pago_Pago":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nTZNAME:SST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0141600",longitude:"-1704200"},"Pacific/Palau":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nTZNAME:+09\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0072000",longitude:"+1342900"},"Pacific/Pitcairn":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0800\r\nTZNAME:-08\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0250400",longitude:"-1300500"},"Pacific/Pohnpei":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Ponape":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nTZNAME:+11\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Port_Moresby":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:+10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0093000",longitude:"+1471000"},"Pacific/Rarotonga":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nTZNAME:-10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0211400",longitude:"-1594600"},"Pacific/Saipan":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:ChST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Samoa":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nTZNAME:SST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Tahiti":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nTZNAME:-10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0173200",longitude:"-1493400"},"Pacific/Tarawa":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"+0012500",longitude:"+1730000"},"Pacific/Tongatapu":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nTZNAME:+13\r\nDTSTART:19700101T000000\r\nEND:STANDARD"],latitude:"-0210800",longitude:"-1751200"},"Pacific/Truk":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:+10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Wake":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Wallis":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nTZNAME:+12\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"Pacific/Yap":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nTZNAME:+10\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"US/Alaska":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nTZNAME:AKDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nTZNAME:AKST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/Aleutian":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-0900\r\nTZNAME:HDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-1000\r\nTZNAME:HST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/Arizona":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"US/Central":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/East-Indiana":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/Eastern":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/Hawaii":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nTZNAME:HST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]},"US/Indiana-Starke":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nTZNAME:CDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nTZNAME:CST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/Michigan":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/Mountain":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nTZNAME:MDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nTZNAME:MST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/Pacific":{ics:["BEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT","BEGIN:STANDARD\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD"]},"US/Samoa":{ics:["BEGIN:STANDARD\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nTZNAME:SST\r\nDTSTART:19700101T000000\r\nEND:STANDARD"]}}};const ue=new class{constructor(){this._aliases=new Map,this._timezones=new Map}getTimezoneForId(e){return this._getTimezoneForIdRec(e,0)}_getTimezoneForIdRec(e,t){if(this._timezones.has(e))return this._timezones.get(e);if(t>=20)return l.error("TimezoneManager.getTimezoneForIdRec() exceeds recursion limits"),null;if(this._aliases.has(e)){const n=this._aliases.get(e);return this._getTimezoneForIdRec(n,t+1)}return null}hasTimezoneForId(e){return this._timezones.has(e)||this._aliases.has(e)}isAlias(e){return!this._timezones.has(e)&&this._aliases.has(e)}listAllTimezones(e=!1){const t=Array.from(this._timezones.keys());return e?t.concat(Array.from(this._aliases.keys())):t}registerTimezone(e){this._timezones.set(e.timezoneId,e)}registerDefaultTimezones(){l.debug(`@nextcloud/calendar-js app is using version ${le.version} of the timezone database`);for(const e in le.zones)if(Object.prototype.hasOwnProperty.call(le.zones,[e])){const t=["BEGIN:VTIMEZONE","TZID:"+e,...le.zones[e].ics,"END:VTIMEZONE"].join("\r\n");this.registerTimezoneFromICS(e,t)}for(const e in le.aliases)Object.prototype.hasOwnProperty.call(le.aliases,[e])&&this.registerAlias(e,le.aliases[e].aliasTo)}registerTimezoneFromICS(e,t){const n=new K(e,t);this.registerTimezone(n)}registerAlias(e,t){this._aliases.set(e,t)}unregisterTimezones(e){this._timezones.delete(e)}unregisterAlias(e){this._aliases.delete(e)}clearAllTimezones(){this._aliases=new Map,this._timezones=new Map,ue.registerTimezone(K.utc),ue.registerTimezone(K.floating),ue.registerAlias("GMT",K.utc.timezoneId),ue.registerAlias("Z",K.utc.timezoneId)}};function ce(){return ue}ue.clearAllTimezones();class de{constructor(e){this._timezoneManager=e}has(e){return this._timezoneManager.hasTimezoneForId(e)}get(e){const t=this._timezoneManager.getTimezoneForId(e);if(t)return t.toICALTimezone()}register(){throw new TypeError("Not allowed to register new timezone")}remove(){throw new TypeError("Not allowed to remove timezone")}reset(){throw new TypeError("Not allowed to reset TimezoneService")}}r().TimezoneService instanceof de||(r().TimezoneService=new de(ce()))},42515:(e,t,n)=>{"use strict";var a=n(25108);n(69070),Object.defineProperty(t,"__esModule",{value:!0}),t.getCapabilities=function(){try{return(0,r.loadState)("core","capabilities")}catch(e){return a.debug("Could not find capabilities initial state fall back to _oc_capabilities"),"_oc_capabilities"in window?window._oc_capabilities:{}}};var r=n(16453)},79954:(e,t,n)=>{"use strict";function a(e,t,n){const a=document.querySelector(`#initial-state-${e}-${t}`);if(null===a){if(void 0!==n)return n;throw new Error(`Could not find initial state ${t} of ${e}`)}try{return JSON.parse(atob(a.value))}catch(n){throw new Error(`Could not parse initial state ${t} of ${e}`)}}n.d(t,{j:()=>a})},16453:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.loadState=function(e,t,n){var a=document.querySelector("#initial-state-".concat(e,"-").concat(t));if(null===a){if(void 0!==n)return n;throw new Error("Could not find initial state ".concat(t," of ").concat(e))}try{return JSON.parse(atob(a.value))}catch(n){throw new Error("Could not parse initial state ".concat(t," of ").concat(e))}}},23955:(e,t,n)=>{"use strict";var a=n(57699);n(79753),n(27856),n(95573);class r{constructor(){this.translations={},this.debug=!1}setLanguage(e){return this.locale=e,this}detectLocale(){return this.setLanguage((document.documentElement.lang||"en").replace("-","_"))}addTranslation(e,t){return this.translations[e]=t,this}enableDebugMode(){return this.debug=!0,this}build(){return new i(this.locale||"en",this.translations,this.debug)}}class i{constructor(e,t,n){this.gt=new a({debug:n,sourceLocale:"en"});for(const e in t)this.gt.addTranslations(e,"messages",t[e]);this.gt.setLocale(e)}subtitudePlaceholders(e,t){return e.replace(/{([^{}]*)}/g,((e,n)=>{const a=t[n];return"string"==typeof a||"number"==typeof a?a.toString():e}))}gettext(e,t={}){return this.subtitudePlaceholders(this.gt.gettext(e),t)}ngettext(e,t,n,a={}){return this.subtitudePlaceholders(this.gt.ngettext(e,t,n).replace(/%n/g,n.toString()),a)}}t.getGettextBuilder=function(){return new r}},9944:(e,t,n)=>{"use strict";var a=n(25108),r=n(79753),i=n(27856),o=n(95573);function s(){return document.documentElement.dataset.locale||"en"}function l(){return s().replace(/_/g,"-")}function u(){return document.documentElement.lang||"en"}function c(e){var t,n,a,r;return{translations:null!==(n=null===(t=window._oc_l10n_registry_translations)||void 0===t?void 0:t[e])&&void 0!==n?n:{},pluralFunction:null!==(r=null===(a=window._oc_l10n_registry_plural_functions)||void 0===a?void 0:a[e])&&void 0!==r?r:e=>e}}function d(e,t,n,a,r){const s=Object.assign({},{escape:!0,sanitize:!0},r||{}),l=e=>e,u=s.sanitize?i.sanitize:l,d=s.escape?o:l;let p=c(e).translations[t]||t;return p=Array.isArray(p)?p[0]:p,u("object"==typeof n||void 0!==a?((e,t,n)=>e.replace(/%n/g,""+n).replace(/{([^{}]*)}/g,((e,n)=>{if(void 0===t||!(n in t))return u(e);const a=t[n];return u("string"==typeof a||"number"==typeof a?d(a):e)})))(p,n,a):p)}function p(e,t){var n,a,r,i;n=e,a=t,r=h,window._oc_l10n_registry_translations=Object.assign(window._oc_l10n_registry_translations||{},{[n]:Object.assign((null===(i=window._oc_l10n_registry_translations)||void 0===i?void 0:i[n])||{},a)}),window._oc_l10n_registry_plural_functions=Object.assign(window._oc_l10n_registry_plural_functions||{},{[n]:r})}function h(e){let t=u();switch("pt-BR"===t&&(t="xbr"),t.length>3&&(t=t.substring(0,t.lastIndexOf("-"))),t){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===e?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===e||1===e?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"cs":case"sk":return 1===e?0:e>=2&&e<=4?1:2;case"ga":return 1===e?0:2===e?1:2;case"lt":return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2;case"sl":return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3;case"mk":return e%10==1?0:1;case"mt":return 1===e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3;case"lv":return 0===e?0:e%10==1&&e%100!=11?1:2;case"pl":return 1===e?0:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:2;case"cy":return 1===e?0:2===e?1:8===e||11===e?2:3;case"ro":return 1===e?0:0===e||e%100>0&&e%100<20?1:2;case"ar":return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11&&e%100<=99?4:5}}t.getCanonicalLocale=l,t.getDayNames=function(){return void 0===window.dayNames?(a.warn("No dayNames found"),["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]):window.dayNames},t.getDayNamesMin=function(){return void 0===window.dayNamesMin?(a.warn("No dayNamesMin found"),["Su","Mo","Tu","We","Th","Fr","Sa"]):window.dayNamesMin},t.getDayNamesShort=function(){return void 0===window.dayNamesShort?(a.warn("No dayNamesShort found"),["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."]):window.dayNamesShort},t.getFirstDay=function(){return void 0===window.firstDay?(a.warn("No firstDay found"),1):window.firstDay},t.getLanguage=u,t.getLocale=s,t.getMonthNames=function(){return void 0===window.monthNames?(a.warn("No monthNames found"),["January","February","March","April","May","June","July","August","September","October","November","December"]):window.monthNames},t.getMonthNamesShort=function(){return void 0===window.monthNamesShort?(a.warn("No monthNamesShort found"),["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."]):window.monthNamesShort},t.getPlural=h,t.isRTL=function(e){const t=e||u();return!!(e||l()).startsWith("uz-AF")||["ae","ar","arc","arz","bcc","bqi","ckb","dv","fa","glk","ha","he","khw","ks","ku","mzn","nqo","pnb","ps","sd","ug","ur","uzs","yi"].includes(t)},t.loadTranslations=function(e,t){if(n=e,void 0!==(null===(a=window._oc_l10n_registry_translations)||void 0===a?void 0:a[n])&&void 0!==(null===(i=window._oc_l10n_registry_plural_functions)||void 0===i?void 0:i[n])||"en"===s())return Promise.resolve().then(t);var n,a,i;const o=r.generateFilePath(e,"l10n",s()+".json");return new Promise(((e,t)=>{const n=new XMLHttpRequest;n.open("GET",o,!0),n.onerror=()=>{t(new Error(n.statusText||"Network error"))},n.onload=()=>{if(n.status>=200&&n.status<300){try{const t=JSON.parse(n.responseText);"object"==typeof t.translations&&e(t)}catch(e){}t(new Error("Invalid content of translation bundle"))}else t(new Error(n.statusText))},n.send()})).then((t=>(p(e,t.translations),t))).then(t)},t.register=p,t.translate=d,t.translatePlural=function(e,t,n,a,r,i){const o="_"+t+"_::_"+n+"_",s=c(e),l=s.translations[o];if(void 0!==l){const t=l;if(Array.isArray(t))return d(e,t[s.pluralFunction(a)],r,a,i)}return d(e,1===a?t:n,r,a,i)},t.unregister=function(e){return t=e,null===(n=window._oc_l10n_registry_translations)||void 0===n||delete n[t],void(null===(a=window._oc_l10n_registry_plural_functions)||void 0===a||delete a[t]);var t,n,a}},71356:(e,t,n)=>{"use strict";var a=n(25108);n(69070),n(32165),n(66992),n(78783),n(33948),Object.defineProperty(t,"__esModule",{value:!0}),t.ConsoleLogger=void 0,t.buildConsoleLogger=function(e){return new l(e)},n(19601),n(96649),n(96078),n(82526),n(41817),n(41539),n(9653);var r=n(20006);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function o(e,t){for(var n=0;n{"use strict";n(69070),n(32165),n(66992),n(78783),n(33948),Object.defineProperty(t,"__esModule",{value:!0}),t.LoggerBuilder=void 0,n(96649),n(96078),n(82526),n(41817),n(41539),n(9653);var a=n(22200),r=n(20006);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function o(e,t){for(var n=0;n{"use strict";var a;n(69070),Object.defineProperty(t,"__esModule",{value:!0}),t.LogLevel=void 0,t.LogLevel=a,function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error",e[e.Fatal=4]="Fatal"}(a||(t.LogLevel=a={}))},17499:(e,t,n)=>{"use strict";n(69070),t.IY=function(){return new r.LoggerBuilder(a.buildConsoleLogger)};var a=n(71356),r=n(55058);n(20006)},80351:(e,t,n)=>{self,e.exports=function(){"use strict";var e={n:function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,{a:n}),n},d:function(t,n){for(var a in n)e.o(n,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:n[a]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:function(){return c}});var a=n(30381),r=e.n(a),i=n(57699),o=e.n(i),s=n(57953),l=new(o()),u=(0,s.getLocale)();[{locale:"ar",json:{charset:"utf-8",headers:{"Last-Translator":"S1 SYSTEMS | BP , 2020","Language-Team":"Arabic (https://www.transifex.com/nextcloud/teams/64236/ar/)","Content-Type":"text/plain; charset=UTF-8",Language:"ar","Plural-Forms":"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nS1 SYSTEMS | BP , 2020\n"},msgstr:["Last-Translator: S1 SYSTEMS | BP , 2020\nLanguage-Team: Arabic (https://www.transifex.com/nextcloud/teams/64236/ar/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ar\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["ثواني"]}}}}},{locale:"ast",json:{charset:"utf-8",headers:{"Last-Translator":"enolp , 2020","Language-Team":"Asturian (https://www.transifex.com/nextcloud/teams/64236/ast/)","Content-Type":"text/plain; charset=UTF-8",Language:"ast","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nenolp , 2020\n"},msgstr:["Last-Translator: enolp , 2020\nLanguage-Team: Asturian (https://www.transifex.com/nextcloud/teams/64236/ast/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ast\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["segundos"]}}}}},{locale:"br",json:{charset:"utf-8",headers:{"Last-Translator":"Kervoas-Le Nabat Ewen , 2020","Language-Team":"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)","Content-Type":"text/plain; charset=UTF-8",Language:"br","Plural-Forms":"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nKervoas-Le Nabat Ewen , 2020\n"},msgstr:["Last-Translator: Kervoas-Le Nabat Ewen , 2020\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: br\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["eilennoù"]}}}}},{locale:"ca",json:{charset:"utf-8",headers:{"Last-Translator":"Marc Riera , 2020","Language-Team":"Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)","Content-Type":"text/plain; charset=UTF-8",Language:"ca","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMarc Riera , 2020\n"},msgstr:["Last-Translator: Marc Riera , 2020\nLanguage-Team: Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ca\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["segons"]}}}}},{locale:"cs_CZ",json:{charset:"utf-8",headers:{"Last-Translator":"Pavel Borecki , 2021","Language-Team":"Czech (Czech Republic) (https://www.transifex.com/nextcloud/teams/64236/cs_CZ/)","Content-Type":"text/plain; charset=UTF-8",Language:"cs_CZ","Plural-Forms":"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nPavel Borecki , 2021\n"},msgstr:["Last-Translator: Pavel Borecki , 2021\nLanguage-Team: Czech (Czech Republic) (https://www.transifex.com/nextcloud/teams/64236/cs_CZ/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: cs_CZ\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekund(y)"]}}}}},{locale:"da",json:{charset:"utf-8",headers:{"Last-Translator":"Henrik Troels-Hansen , 2020","Language-Team":"Danish (https://www.transifex.com/nextcloud/teams/64236/da/)","Content-Type":"text/plain; charset=UTF-8",Language:"da","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nHenrik Troels-Hansen , 2020\n"},msgstr:["Last-Translator: Henrik Troels-Hansen , 2020\nLanguage-Team: Danish (https://www.transifex.com/nextcloud/teams/64236/da/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: da\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekunder"]}}}}},{locale:"de_DE",json:{charset:"utf-8",headers:{"Last-Translator":"Christoph Wurst , 2020","Language-Team":"German (Germany) (https://www.transifex.com/nextcloud/teams/64236/de_DE/)","Content-Type":"text/plain; charset=UTF-8",Language:"de_DE","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nChristoph Wurst , 2020\n"},msgstr:["Last-Translator: Christoph Wurst , 2020\nLanguage-Team: German (Germany) (https://www.transifex.com/nextcloud/teams/64236/de_DE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: de_DE\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["Sekunden"]}}}}},{locale:"el",json:{charset:"utf-8",headers:{"Last-Translator":"GRMarksman , 2020","Language-Team":"Greek (https://www.transifex.com/nextcloud/teams/64236/el/)","Content-Type":"text/plain; charset=UTF-8",Language:"el","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nGRMarksman , 2020\n"},msgstr:["Last-Translator: GRMarksman , 2020\nLanguage-Team: Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: el\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["δευτερόλεπτα"]}}}}},{locale:"en_GB",json:{charset:"utf-8",headers:{"Last-Translator":"Oleksa Stasevych , 2020","Language-Team":"English (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/en_GB/)","Content-Type":"text/plain; charset=UTF-8",Language:"en_GB","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nOleksa Stasevych , 2020\n"},msgstr:["Last-Translator: Oleksa Stasevych , 2020\nLanguage-Team: English (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/en_GB/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: en_GB\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["seconds"]}}}}},{locale:"eo",json:{charset:"utf-8",headers:{"Last-Translator":"Va Milushnikov , 2020","Language-Team":"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)","Content-Type":"text/plain; charset=UTF-8",Language:"eo","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nVa Milushnikov , 2020\n"},msgstr:["Last-Translator: Va Milushnikov , 2020\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: eo\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekundoj"]}}}}},{locale:"es",json:{charset:"utf-8",headers:{"Last-Translator":"Javier San Juan , 2020","Language-Team":"Spanish (https://www.transifex.com/nextcloud/teams/64236/es/)","Content-Type":"text/plain; charset=UTF-8",Language:"es","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nJavier San Juan , 2020\n"},msgstr:["Last-Translator: Javier San Juan , 2020\nLanguage-Team: Spanish (https://www.transifex.com/nextcloud/teams/64236/es/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["segundos"]}}}}},{locale:"eu",json:{charset:"utf-8",headers:{"Last-Translator":"Asier Iturralde Sarasola , 2020","Language-Team":"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)","Content-Type":"text/plain; charset=UTF-8",Language:"eu","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nAsier Iturralde Sarasola , 2020\n"},msgstr:["Last-Translator: Asier Iturralde Sarasola , 2020\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: eu\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["segundo"]}}}}},{locale:"fa",json:{charset:"utf-8",headers:{"Last-Translator":"Amirreza Kolivand , 2021","Language-Team":"Persian (https://www.transifex.com/nextcloud/teams/64236/fa/)","Content-Type":"text/plain; charset=UTF-8",Language:"fa","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nAmirreza Kolivand , 2021\n"},msgstr:["Last-Translator: Amirreza Kolivand , 2021\nLanguage-Team: Persian (https://www.transifex.com/nextcloud/teams/64236/fa/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fa\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["ثانیه"]}}}}},{locale:"fi_FI",json:{charset:"utf-8",headers:{"Last-Translator":"Robin Lahtinen , 2020","Language-Team":"Finnish (Finland) (https://www.transifex.com/nextcloud/teams/64236/fi_FI/)","Content-Type":"text/plain; charset=UTF-8",Language:"fi_FI","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nRobin Lahtinen , 2020\n"},msgstr:["Last-Translator: Robin Lahtinen , 2020\nLanguage-Team: Finnish (Finland) (https://www.transifex.com/nextcloud/teams/64236/fi_FI/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fi_FI\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekuntia"]}}}}},{locale:"fr",json:{charset:"utf-8",headers:{"Last-Translator":"Yoplala , 2020","Language-Team":"French (https://www.transifex.com/nextcloud/teams/64236/fr/)","Content-Type":"text/plain; charset=UTF-8",Language:"fr","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nYoplala , 2020\n"},msgstr:["Last-Translator: Yoplala , 2020\nLanguage-Team: French (https://www.transifex.com/nextcloud/teams/64236/fr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fr\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["secondes"]}}}}},{locale:"gl",json:{charset:"utf-8",headers:{"Last-Translator":"Miguel Anxo Bouzada , 2020","Language-Team":"Galician (https://www.transifex.com/nextcloud/teams/64236/gl/)","Content-Type":"text/plain; charset=UTF-8",Language:"gl","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nMiguel Anxo Bouzada , 2020\n"},msgstr:["Last-Translator: Miguel Anxo Bouzada , 2020\nLanguage-Team: Galician (https://www.transifex.com/nextcloud/teams/64236/gl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: gl\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["segundos"]}}}}},{locale:"he",json:{charset:"utf-8",headers:{"Last-Translator":"Yaron Shahrabani , 2020","Language-Team":"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)","Content-Type":"text/plain; charset=UTF-8",Language:"he","Plural-Forms":"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nYaron Shahrabani , 2020\n"},msgstr:["Last-Translator: Yaron Shahrabani , 2020\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: he\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["שניות"]}}}}},{locale:"hu_HU",json:{charset:"utf-8",headers:{"Last-Translator":"Balázs Meskó , 2020","Language-Team":"Hungarian (Hungary) (https://www.transifex.com/nextcloud/teams/64236/hu_HU/)","Content-Type":"text/plain; charset=UTF-8",Language:"hu_HU","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nBalázs Meskó , 2020\n"},msgstr:["Last-Translator: Balázs Meskó , 2020\nLanguage-Team: Hungarian (Hungary) (https://www.transifex.com/nextcloud/teams/64236/hu_HU/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hu_HU\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["másodperc"]}}}}},{locale:"id",json:{charset:"utf-8",headers:{"Last-Translator":"Marcus Pierce, 2021","Language-Team":"Indonesian (https://www.transifex.com/nextcloud/teams/64236/id/)","Content-Type":"text/plain; charset=UTF-8",Language:"id","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMarcus Pierce, 2021\n"},msgstr:["Last-Translator: Marcus Pierce, 2021\nLanguage-Team: Indonesian (https://www.transifex.com/nextcloud/teams/64236/id/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: id\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["detik"]}}}}},{locale:"is",json:{charset:"utf-8",headers:{"Last-Translator":"Sveinn í Felli , 2020","Language-Team":"Icelandic (https://www.transifex.com/nextcloud/teams/64236/is/)","Content-Type":"text/plain; charset=UTF-8",Language:"is","Plural-Forms":"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nSveinn í Felli , 2020\n"},msgstr:["Last-Translator: Sveinn í Felli , 2020\nLanguage-Team: Icelandic (https://www.transifex.com/nextcloud/teams/64236/is/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: is\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekúndur"]}}}}},{locale:"it",json:{charset:"utf-8",headers:{"Last-Translator":"Random_R, 2020","Language-Team":"Italian (https://www.transifex.com/nextcloud/teams/64236/it/)","Content-Type":"text/plain; charset=UTF-8",Language:"it","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nRandom_R, 2020\n"},msgstr:["Last-Translator: Random_R, 2020\nLanguage-Team: Italian (https://www.transifex.com/nextcloud/teams/64236/it/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: it\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["secondi"]}}}}},{locale:"ja_JP",json:{charset:"utf-8",headers:{"Last-Translator":"YANO Tetsu , 2020","Language-Team":"Japanese (Japan) (https://www.transifex.com/nextcloud/teams/64236/ja_JP/)","Content-Type":"text/plain; charset=UTF-8",Language:"ja_JP","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nYANO Tetsu , 2020\n"},msgstr:["Last-Translator: YANO Tetsu , 2020\nLanguage-Team: Japanese (Japan) (https://www.transifex.com/nextcloud/teams/64236/ja_JP/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ja_JP\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["秒"]}}}}},{locale:"ko",json:{charset:"utf-8",headers:{"Last-Translator":"Brandon Han, 2021","Language-Team":"Korean (https://www.transifex.com/nextcloud/teams/64236/ko/)","Content-Type":"text/plain; charset=UTF-8",Language:"ko","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nBrandon Han, 2021\n"},msgstr:["Last-Translator: Brandon Han, 2021\nLanguage-Team: Korean (https://www.transifex.com/nextcloud/teams/64236/ko/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ko\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["초"]}}}}},{locale:"lt_LT",json:{charset:"utf-8",headers:{"Last-Translator":"Moo, 2020","Language-Team":"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)","Content-Type":"text/plain; charset=UTF-8",Language:"lt_LT","Plural-Forms":"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nMoo, 2020\n"},msgstr:["Last-Translator: Moo, 2020\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lt_LT\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sek."]}}}}},{locale:"lv",json:{charset:"utf-8",headers:{"Last-Translator":"stendec , 2020","Language-Team":"Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)","Content-Type":"text/plain; charset=UTF-8",Language:"lv","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nstendec , 2020\n"},msgstr:["Last-Translator: stendec , 2020\nLanguage-Team: Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lv\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekundes"]}}}}},{locale:"mk",json:{charset:"utf-8",headers:{"Last-Translator":"Сашко Тодоров, 2020","Language-Team":"Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)","Content-Type":"text/plain; charset=UTF-8",Language:"mk","Plural-Forms":"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nСашко Тодоров, 2020\n"},msgstr:["Last-Translator: Сашко Тодоров, 2020\nLanguage-Team: Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: mk\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["секунди"]}}}}},{locale:"my",json:{charset:"utf-8",headers:{"Last-Translator":"Htike Aung Kyaw , 2021","Language-Team":"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)","Content-Type":"text/plain; charset=UTF-8",Language:"my","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nHtike Aung Kyaw , 2021\n"},msgstr:["Last-Translator: Htike Aung Kyaw , 2021\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: my\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["စက္ကန့်"]}}}}},{locale:"nb_NO",json:{charset:"utf-8",headers:{"Last-Translator":"Ole Jakob Brustad , 2020","Language-Team":"Norwegian Bokmål (Norway) (https://www.transifex.com/nextcloud/teams/64236/nb_NO/)","Content-Type":"text/plain; charset=UTF-8",Language:"nb_NO","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nOle Jakob Brustad , 2020\n"},msgstr:["Last-Translator: Ole Jakob Brustad , 2020\nLanguage-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/nextcloud/teams/64236/nb_NO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: nb_NO\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekunder"]}}}}},{locale:"nl",json:{charset:"utf-8",headers:{"Last-Translator":"Roeland Jago Douma , 2020","Language-Team":"Dutch (https://www.transifex.com/nextcloud/teams/64236/nl/)","Content-Type":"text/plain; charset=UTF-8",Language:"nl","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nRoeland Jago Douma , 2020\n"},msgstr:["Last-Translator: Roeland Jago Douma , 2020\nLanguage-Team: Dutch (https://www.transifex.com/nextcloud/teams/64236/nl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: nl\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["seconden"]}}}}},{locale:"oc",json:{charset:"utf-8",headers:{"Last-Translator":"Quentin PAGÈS, 2020","Language-Team":"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)","Content-Type":"text/plain; charset=UTF-8",Language:"oc","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nQuentin PAGÈS, 2020\n"},msgstr:["Last-Translator: Quentin PAGÈS, 2020\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: oc\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["segondas"]}}}}},{locale:"pl",json:{charset:"utf-8",headers:{"Last-Translator":"Janusz Gwiazda , 2020","Language-Team":"Polish (https://www.transifex.com/nextcloud/teams/64236/pl/)","Content-Type":"text/plain; charset=UTF-8",Language:"pl","Plural-Forms":"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nJanusz Gwiazda , 2020\n"},msgstr:["Last-Translator: Janusz Gwiazda , 2020\nLanguage-Team: Polish (https://www.transifex.com/nextcloud/teams/64236/pl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pl\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekundy"]}}}}},{locale:"pt_BR",json:{charset:"utf-8",headers:{"Last-Translator":"André Marcelo Alvarenga , 2020","Language-Team":"Portuguese (Brazil) (https://www.transifex.com/nextcloud/teams/64236/pt_BR/)","Content-Type":"text/plain; charset=UTF-8",Language:"pt_BR","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nAndré Marcelo Alvarenga , 2020\n"},msgstr:["Last-Translator: André Marcelo Alvarenga , 2020\nLanguage-Team: Portuguese (Brazil) (https://www.transifex.com/nextcloud/teams/64236/pt_BR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pt_BR\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["segundos"]}}}}},{locale:"pt_PT",json:{charset:"utf-8",headers:{"Last-Translator":"fpapoila , 2020","Language-Team":"Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)","Content-Type":"text/plain; charset=UTF-8",Language:"pt_PT","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nfpapoila , 2020\n"},msgstr:["Last-Translator: fpapoila , 2020\nLanguage-Team: Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pt_PT\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["segundos"]}}}}},{locale:"ru",json:{charset:"utf-8",headers:{"Last-Translator":"Игорь Бондаренко , 2020","Language-Team":"Russian (https://www.transifex.com/nextcloud/teams/64236/ru/)","Content-Type":"text/plain; charset=UTF-8",Language:"ru","Plural-Forms":"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nИгорь Бондаренко , 2020\n"},msgstr:["Last-Translator: Игорь Бондаренко , 2020\nLanguage-Team: Russian (https://www.transifex.com/nextcloud/teams/64236/ru/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ru\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["секунды"]}}}}},{locale:"si",json:{charset:"utf-8",headers:{"Last-Translator":"Hela Basa, 2021","Language-Team":"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)","Content-Type":"text/plain; charset=UTF-8",Language:"si","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nHela Basa, 2021\n"},msgstr:["Last-Translator: Hela Basa, 2021\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: si\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["තත්පර"]}}}}},{locale:"sk_SK",json:{charset:"utf-8",headers:{"Last-Translator":"Anton Kuchár , 2020","Language-Team":"Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)","Content-Type":"text/plain; charset=UTF-8",Language:"sk_SK","Plural-Forms":"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nAnton Kuchár , 2020\n"},msgstr:["Last-Translator: Anton Kuchár , 2020\nLanguage-Team: Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sk_SK\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekundy"]}}}}},{locale:"sl",json:{charset:"utf-8",headers:{"Last-Translator":"Matej Urbančič <>, 2020","Language-Team":"Slovenian (https://www.transifex.com/nextcloud/teams/64236/sl/)","Content-Type":"text/plain; charset=UTF-8",Language:"sl","Plural-Forms":"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMatej Urbančič <>, 2020\n"},msgstr:["Last-Translator: Matej Urbančič <>, 2020\nLanguage-Team: Slovenian (https://www.transifex.com/nextcloud/teams/64236/sl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sl\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekunde"]}}}}},{locale:"sq",json:{charset:"utf-8",headers:{"Last-Translator":"Greta, 2020","Language-Team":"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)","Content-Type":"text/plain; charset=UTF-8",Language:"sq","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nGreta, 2020\n"},msgstr:["Last-Translator: Greta, 2020\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sq\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekonda"]}}}}},{locale:"sr",json:{charset:"utf-8",headers:{"Last-Translator":"Slobodan Simić , 2020","Language-Team":"Serbian (https://www.transifex.com/nextcloud/teams/64236/sr/)","Content-Type":"text/plain; charset=UTF-8",Language:"sr","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nSlobodan Simić , 2020\n"},msgstr:["Last-Translator: Slobodan Simić , 2020\nLanguage-Team: Serbian (https://www.transifex.com/nextcloud/teams/64236/sr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sr\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["секунде"]}}}}},{locale:"sv",json:{charset:"utf-8",headers:{"Last-Translator":"Magnus Höglund, 2020","Language-Team":"Swedish (https://www.transifex.com/nextcloud/teams/64236/sv/)","Content-Type":"text/plain; charset=UTF-8",Language:"sv","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nMagnus Höglund, 2020\n"},msgstr:["Last-Translator: Magnus Höglund, 2020\nLanguage-Team: Swedish (https://www.transifex.com/nextcloud/teams/64236/sv/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sv\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["sekunder"]}}}}},{locale:"th_TH",json:{charset:"utf-8",headers:{"Last-Translator":"Phongpanot Phairat , 2021","Language-Team":"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)","Content-Type":"text/plain; charset=UTF-8",Language:"th_TH","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nPhongpanot Phairat , 2021\n"},msgstr:["Last-Translator: Phongpanot Phairat , 2021\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: th_TH\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["วินาที"]}}}}},{locale:"tr",json:{charset:"utf-8",headers:{"Last-Translator":"Hüseyin Fahri Uzun , 2020","Language-Team":"Turkish (https://www.transifex.com/nextcloud/teams/64236/tr/)","Content-Type":"text/plain; charset=UTF-8",Language:"tr","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nHüseyin Fahri Uzun , 2020\n"},msgstr:["Last-Translator: Hüseyin Fahri Uzun , 2020\nLanguage-Team: Turkish (https://www.transifex.com/nextcloud/teams/64236/tr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: tr\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["saniye"]}}}}},{locale:"uk",json:{charset:"utf-8",headers:{"Last-Translator":"Oleksa Stasevych , 2020","Language-Team":"Ukrainian (https://www.transifex.com/nextcloud/teams/64236/uk/)","Content-Type":"text/plain; charset=UTF-8",Language:"uk","Plural-Forms":"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nOleksa Stasevych , 2020\n"},msgstr:["Last-Translator: Oleksa Stasevych , 2020\nLanguage-Team: Ukrainian (https://www.transifex.com/nextcloud/teams/64236/uk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: uk\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["секунд"]}}}}},{locale:"vi",json:{charset:"utf-8",headers:{"Last-Translator":"Luu Thang , 2021","Language-Team":"Vietnamese (https://www.transifex.com/nextcloud/teams/64236/vi/)","Content-Type":"text/plain; charset=UTF-8",Language:"vi","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nLuu Thang , 2021\n"},msgstr:["Last-Translator: Luu Thang , 2021\nLanguage-Team: Vietnamese (https://www.transifex.com/nextcloud/teams/64236/vi/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: vi\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["giây"]}}}}},{locale:"zh_CN",json:{charset:"utf-8",headers:{"Last-Translator":"Jay Guo , 2020","Language-Team":"Chinese (China) (https://www.transifex.com/nextcloud/teams/64236/zh_CN/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_CN","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nJay Guo , 2020\n"},msgstr:["Last-Translator: Jay Guo , 2020\nLanguage-Team: Chinese (China) (https://www.transifex.com/nextcloud/teams/64236/zh_CN/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_CN\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["秒"]}}}}},{locale:"zh_HK",json:{charset:"utf-8",headers:{"Last-Translator":"Cha Wong , 2021","Language-Team":"Chinese (Hong Kong) (https://www.transifex.com/nextcloud/teams/64236/zh_HK/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_HK","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nCha Wong , 2021\n"},msgstr:["Last-Translator: Cha Wong , 2021\nLanguage-Team: Chinese (Hong Kong) (https://www.transifex.com/nextcloud/teams/64236/zh_HK/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_HK\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["秒"]}}}}},{locale:"zh_TW",json:{charset:"utf-8",headers:{"Last-Translator":"Jim Tsai , 2020","Language-Team":"Chinese (Taiwan) (https://www.transifex.com/nextcloud/teams/64236/zh_TW/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_TW","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"Translators:\nJim Tsai , 2020\n"},msgstr:["Last-Translator: Jim Tsai , 2020\nLanguage-Team: Chinese (Taiwan) (https://www.transifex.com/nextcloud/teams/64236/zh_TW/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_TW\nPlural-Forms: nplurals=1; plural=0;\n"]},seconds:{msgid:"seconds",comments:{reference:"lib/index.ts:22"},msgstr:["秒"]}}}}}].map((function(e){l.addTranslations(e.locale,"messages",e.json)})),l.setLocale(u),r().locale(u),r().updateLocale(r().locale(),{parentLocale:r().locale(),relativeTime:Object.assign(r().localeData(r().locale())._relativeTime,{s:l.gettext("seconds")})});var c=r();return t}()},57953:(e,t,n)=>{"use strict";var a=n(25108);function r(){return document.documentElement.dataset.locale||"en"}n(69070),Object.defineProperty(t,"__esModule",{value:!0}),t.getCanonicalLocale=function(){return r().replace(/_/g,"-")},t.getDayNames=function(){return void 0===window.dayNames?(a.warn("No dayNames found"),["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]):window.dayNames},t.getDayNamesMin=function(){return void 0===window.dayNamesMin?(a.warn("No dayNamesMin found"),["Su","Mo","Tu","We","Th","Fr","Sa"]):window.dayNamesMin},t.getDayNamesShort=function(){return void 0===window.dayNamesShort?(a.warn("No dayNamesShort found"),["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."]):window.dayNamesShort},t.getFirstDay=function(){return void 0===window.firstDay?(a.warn("No firstDay found"),1):window.firstDay},t.getLanguage=function(){return document.documentElement.lang||"en"},t.getLocale=r,t.getMonthNames=function(){return void 0===window.monthNames?(a.warn("No monthNames found"),["January","February","March","April","May","June","July","August","September","October","November","December"]):window.monthNames},t.getMonthNamesShort=function(){return void 0===window.monthNamesShort?(a.warn("No monthNamesShort found"),["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."]):window.monthNamesShort},t.translate=function(e,t,n,r,i){return"undefined"==typeof OC?(a.warn("No OC found"),t):OC.L10N.translate(e,t,n,r,i)},t.translatePlural=function(e,t,n,r,i,o){return"undefined"==typeof OC?(a.warn("No OC found"),t):OC.L10N.translatePlural(e,t,n,r,i,o)},n(74916),n(15306)},10128:(e,t,n)=>{"use strict";var a=n(25108),r=n(23085).Buffer,i=n(34155),o=Object.defineProperty,s=(e,t,n)=>(((e,t,n)=>{t in e?o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var l=Object.freeze({}),u=Array.isArray;function c(e){return null==e}function d(e){return null!=e}function p(e){return!0===e}function h(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function m(e){return"function"==typeof e}function f(e){return null!==e&&"object"==typeof e}var g=Object.prototype.toString;function v(e){return"[object Object]"===g.call(e)}function _(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function A(e){return d(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function b(e){return null==e?"":Array.isArray(e)||v(e)&&e.toString===g?JSON.stringify(e,null,2):String(e)}function y(e){var t=parseFloat(e);return isNaN(t)?e:t}function F(e,t){for(var n=Object.create(null),a=e.split(","),r=0;r-1)return e.splice(a,1)}}var k=Object.prototype.hasOwnProperty;function w(e,t){return k.call(e,t)}function S(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var E=/-(\w)/g,D=S((function(e){return e.replace(E,(function(e,t){return t?t.toUpperCase():""}))})),x=S((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),N=/\B([A-Z])/g,O=S((function(e){return e.replace(N,"-$1").toLowerCase()})),j=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var a=arguments.length;return a?a>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function M(e,t){t=t||0;for(var n=e.length-t,a=new Array(n);n--;)a[n]=e[n+t];return a}function R(e,t){for(var n in t)e[n]=t[n];return e}function P(e){for(var t={},n=0;n0,ne=X&&X.indexOf("edge/")>0;X&&X.indexOf("android");var ae=X&&/iphone|ipad|ipod|ios/.test(X);X&&/chrome\/\d+/.test(X),X&&/phantomjs/.test(X);var re=X&&X.match(/firefox\/(\d+)/),ie={}.watch,oe=!1;if(J)try{var se={};Object.defineProperty(se,"passive",{get:function(){oe=!0}}),window.addEventListener("test-passive",null,se)}catch{}var le,ue=function(){return void 0===le&&(le=!J&&typeof n.g<"u"&&n.g.process&&"server"===n.g.process.env.VUE_ENV),le},ce=J&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function de(e){return"function"==typeof e&&/native code/.test(e.toString())}var pe,he=typeof Symbol<"u"&&de(Symbol)&&typeof Reflect<"u"&&de(Reflect.ownKeys);pe=typeof Set<"u"&&de(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var me=null;function fe(e){void 0===e&&(e=null),e||me&&me._scope.off(),me=e,e&&e._scope.on()}var ge=function(){function e(e,t,n,a,r,i,o,s){this.tag=e,this.data=t,this.children=n,this.text=a,this.elm=r,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=o,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),ve=function(e){void 0===e&&(e="");var t=new ge;return t.text=e,t.isComment=!0,t};function _e(e){return new ge(void 0,void 0,void 0,String(e))}function Ae(e){var t=new ge(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var be=0,ye=[],Fe=function(){for(var e=0;e0&&(vt((a=_t(a,"".concat(t||"","_").concat(n)))[0])&&vt(i)&&(o[r]=_e(i.text+a[0].text),a.shift()),o.push.apply(o,a)):h(a)?vt(i)?o[r]=_e(i.text+a):""!==a&&o.push(_e(a)):vt(a)&&vt(i)?o[r]=_e(i.text+a.text):(p(e._isVList)&&d(a.tag)&&c(a.key)&&d(t)&&(a.key="__vlist".concat(t,"_").concat(n,"__")),o.push(a)));return o}function At(e,t){var n,a,r,i,o=null;if(u(e)||"string"==typeof e)for(o=new Array(e.length),n=0,a=e.length;n0,o=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(o&&a&&a!==l&&s===a.$key&&!i&&!a.$hasNormal)return a;for(var u in r={},t)t[u]&&"$"!==u[0]&&(r[u]=Lt(e,n,u,t[u]))}else r={};for(var c in n)c in r||(r[c]=zt(n,c));return t&&Object.isExtensible(t)&&(t._normalized=r),W(r,"$stable",o),W(r,"$key",s),W(r,"$hasNormal",i),r}function Lt(e,t,n,a){var r=function(){var t=me;fe(e);var n=arguments.length?a.apply(null,arguments):a({}),r=(n=n&&"object"==typeof n&&!u(n)?[n]:gt(n))&&n[0];return fe(t),n&&(!r||1===n.length&&r.isComment&&!Pt(r))?void 0:n};return a.proxy&&Object.defineProperty(t,n,{get:r,enumerable:!0,configurable:!0}),r}function zt(e,t){return function(){return e[t]}}function It(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};W(t,"_v_attr_proxy",!0),Yt(t,e.$attrs,l,e,"$attrs")}return e._attrsProxy},get listeners(){return e._listenersProxy||Yt(e._listenersProxy={},e.$listeners,l,e,"$listeners"),e._listenersProxy},get slots(){return function(e){return e._slotsProxy||Ut(e._slotsProxy={},e.$scopedSlots),e._slotsProxy}(e)},emit:j(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return Ve(e,t,n)}))}}}function Yt(e,t,n,a,r){var i=!1;for(var o in t)o in e?t[o]!==n[o]&&(i=!0):(i=!0,Zt(e,o,a,r));for(var o in e)o in t||(i=!0,delete e[o]);return i}function Zt(e,t,n,a){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[a][t]}})}function Ut(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}function Gt(){var e=me;return e._setupContext||(e._setupContext=It(e))}var Ht=null;function $t(e,t){return(e.__esModule||he&&"Module"===e[Symbol.toStringTag])&&(e=e.default),f(e)?t.extend(e):e}function qt(e){if(u(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&(Kn=function(){return Qn.now()})}var Jn=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function Xn(){var e,t;for(Wn=Kn(),qn=!0,Un.sort(Jn),Vn=0;VnVn&&Un[n].id>e.id;)n--;Un.splice(n+1,0,e)}else Un.push(e);$n||($n=!0,pn(Xn))}}function ta(e,t){if(e){for(var n=Object.create(null),a=he?Reflect.ownKeys(e):Object.keys(e),r=0;r-1)if(i&&!w(r,"default"))o=!1;else if(""===o||o===O(e)){var l=Ta(String,r.type);(l<0||s-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!function(e){return"[object RegExp]"===g.call(e)}(e)&&e.test(t)}function Ba(e,t){var n=e.cache,a=e.keys,r=e._vnode;for(var i in n){var o=n[i];if(o){var s=o.name;s&&!t(s)&&La(n,i,a,r)}}}function La(e,t,n,a){var r=e[t];r&&(!a||r.tag!==a.tag)&&r.componentInstance.$destroy(),e[t]=null,C(n,t)}Ma.prototype._init=function(e){var t=this;t._uid=Oa++,t._isVue=!0,t.__v_skip=!0,t._scope=new ut(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),a=t._parentVnode;n.parent=t.parent,n._parentVnode=a;var r=a.componentOptions;n.propsData=r.propsData,n._parentListeners=r.listeners,n._renderChildren=r.children,n._componentTag=r.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=va(ja(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Pn(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,a=n&&n.context;e.$slots=Mt(t._renderChildren,a),e.$scopedSlots=n?Bt(e.$parent,n.data.scopedSlots,e.$slots):l,e._c=function(t,n,a,r){return Kt(e,t,n,a,r,!1)},e.$createElement=function(t,n,a,r){return Kt(e,t,n,a,r,!0)};var r=n&&n.data;Pe(e,"$attrs",r&&r.attrs||l,null,!0),Pe(e,"$listeners",t._parentListeners||l,null,!0)}(t),Zn(t,"beforeCreate",void 0,!1),function(e){var t=ta(e.$options.inject,e);t&&(Oe(!1),Object.keys(t).forEach((function(n){Pe(e,n,t[n])})),Oe(!0))}(t),function(e){var t=e.$options;if(t.props&&function(e,t){var n=e.$options.propsData||{},a=e._props=Ie({}),r=e.$options._propKeys=[];!e.$parent||Oe(!1);var i=function(i){r.push(i);var o=Aa(i,t,n,e);Pe(a,i,o),i in e||ka(e,"_props",i)};for(var o in t)i(o);Oe(!0)}(e,t.props),function(e){var t=e.$options,n=t.setup;if(n){var a=e._setupContext=It(e);fe(e),ke();var r=Xt(n,null,[e._props||Ie({}),a],e,"setup");if(we(),fe(),m(r))t.render=r;else if(f(r))if(e._setupState=r,r.__sfc){var i=e._setupProxy={};for(var o in r)"__sfc"!==o&&Ve(i,r,o)}else for(var o in r)!V(o)&&Ve(e,r,o)}}(e),t.methods&&function(e,t){for(var n in e.$options.props,t)e[n]="function"!=typeof t[n]?B:j(t[n],e)}(e,t.methods),t.data)!function(e){var t=e.$options.data;t=e._data=m(t)?function(e,t){ke();try{return e.call(t,t)}catch(e){return Jt(e,t,"data()"),{}}finally{we()}}(t,e):t||{},v(t)||(t={});for(var n=Object.keys(t),a=e.$options.props,r=(e.$options.methods,n.length);r--;){var i=n[r];(!a||!w(a,i))&&(V(i)||ka(e,"_data",i))}var o=Re(t);o&&o.vmCount++}(e);else{var n=Re(e._data={});n&&n.vmCount++}t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),a=ue();for(var r in t){var i=t[r],o=m(i)?i:i.get;a||(n[r]=new On(e,o||B,B,wa)),!(r in e)&&Sa(e,r,i)}}(e,t.computed),t.watch&&t.watch!==ie&&function(e,t){for(var n in t){var a=t[n];if(u(a))for(var r=0;r1?M(n):n;for(var a=M(arguments,1),r='event handler for "'.concat(e,'"'),i=0,o=n.length;iparseInt(this.max)&&La(t,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)La(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Ba(e,(function(e){return Pa(t,e)}))})),this.$watch("exclude",(function(t){Ba(e,(function(e){return!Pa(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=qt(e),n=t&&t.componentOptions;if(n){var a=Ra(n),r=this.include,i=this.exclude;if(r&&(!a||!Pa(r,a))||i&&a&&Pa(i,a))return t;var o=this.cache,s=this.keys,l=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;o[l]?(t.componentInstance=o[l].componentInstance,C(s,l),s.push(l)):(this.vnodeToCache=t,this.keyToCache=l),t.data.keepAlive=!0}return t||e&&e[0]}},Ya={KeepAlive:Ia};!function(e){var t={get:function(){return q}};Object.defineProperty(e,"config",t),e.util={warn:ca,extend:R,mergeOptions:va,defineReactive:Pe},e.set=Be,e.delete=Le,e.nextTick=pn,e.observable=function(e){return Re(e),e},e.options=Object.create(null),H.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,R(e.options.components,Ya),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=M(arguments,1);return n.unshift(this),m(e.install)?e.install.apply(e,n):m(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=va(this.options,e),this}}(e),function(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,a=n.cid,r=e._Ctor||(e._Ctor={});if(r[a])return r[a];var i=ia(e)||ia(n.options),o=function(e){this._init(e)};return(o.prototype=Object.create(n.prototype)).constructor=o,o.cid=t++,o.options=va(n.options,e),o.super=n,o.options.props&&function(e){var t=e.options.props;for(var n in t)ka(e.prototype,"_props",n)}(o),o.options.computed&&function(e){var t=e.options.computed;for(var n in t)Sa(e.prototype,n,t[n])}(o),o.extend=n.extend,o.mixin=n.mixin,o.use=n.use,H.forEach((function(e){o[e]=n[e]})),i&&(o.options.components[i]=o),o.superOptions=n.options,o.extendOptions=e,o.sealedOptions=R({},o.options),r[a]=o,o}}(e),function(e){H.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&v(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&m(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(Ma),Object.defineProperty(Ma.prototype,"$isServer",{get:ue}),Object.defineProperty(Ma.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Ma,"FunctionalRenderContext",{value:na}),Ma.version=wn;var Za=F("style,class"),Ua=F("input,textarea,option,select,progress"),Ga=F("contenteditable,draggable,spellcheck"),Ha=F("events,caret,typing,plaintext-only"),$a=function(e,t){return Qa(t)||"false"===t?"false":"contenteditable"===e&&Ha(t)?t:"true"},qa=F("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Va="http://www.w3.org/1999/xlink",Wa=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Ka=function(e){return Wa(e)?e.slice(6,e.length):""},Qa=function(e){return null==e||!1===e};function Ja(e,t){return{staticClass:Xa(e.staticClass,t.staticClass),class:d(e.class)?[e.class,t.class]:t.class}}function Xa(e,t){return e?t?e+" "+t:e:t||""}function er(e){return Array.isArray(e)?function(e){for(var t,n="",a=0,r=e.length;a-1?Cr(e,t,n):qa(t)?Qa(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Ga(t)?e.setAttribute(t,$a(t,n)):Wa(t)?Qa(n)?e.removeAttributeNS(Va,Ka(t)):e.setAttributeNS(Va,t,n):Cr(e,t,n)}function Cr(e,t,n){if(Qa(n))e.removeAttribute(t);else{if(ee&&!te&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var a=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",a)};e.addEventListener("input",a),e.__ieph=!0}e.setAttribute(t,n)}}var kr={create:Fr,update:Fr};function wr(e,t){var n=t.elm,a=t.data,r=e.data;if(!(c(a.staticClass)&&c(a.class)&&(c(r)||c(r.staticClass)&&c(r.class)))){var i=function(e){for(var t=e.data,n=e,a=e;d(a.componentInstance);)(a=a.componentInstance._vnode)&&a.data&&(t=Ja(a.data,t));for(;d(n=n.parent);)n&&n.data&&(t=Ja(t,n.data));return function(e,t){return d(e)||d(t)?Xa(e,er(t)):""}(t.staticClass,t.class)}(t),o=n._transitionClasses;d(o)&&(i=Xa(i,er(o))),i!==n._prevClass&&(n.setAttribute("class",i),n._prevClass=i)}}var Sr,Er={create:wr,update:wr},Dr="__r",xr="__c";function Nr(e,t,n){var a=Sr;return function r(){null!==t.apply(null,arguments)&&Mr(e,r,n,a)}}var Or=an&&!(re&&Number(re[1])<=53);function jr(e,t,n,a){if(Or){var r=Wn,i=t;t=i._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=r||e.timeStamp<=0||e.target.ownerDocument!==document)return i.apply(this,arguments)}}Sr.addEventListener(e,t,oe?{capture:n,passive:a}:n)}function Mr(e,t,n,a){(a||Sr).removeEventListener(e,t._wrapper||t,n)}function Rr(e,t){if(!c(e.data.on)||!c(t.data.on)){var n=t.data.on||{},a=e.data.on||{};Sr=t.elm||e.elm,function(e){if(d(e[Dr])){var t=ee?"change":"input";e[t]=[].concat(e[Dr],e[t]||[]),delete e[Dr]}d(e[xr])&&(e.change=[].concat(e[xr],e.change||[]),delete e[xr])}(n),ht(n,a,jr,Mr,Nr,t.context),Sr=void 0}}var Pr,Br={create:Rr,update:Rr,destroy:function(e){return Rr(e,dr)}};function Lr(e,t){if(!c(e.data.domProps)||!c(t.data.domProps)){var n,a,r=t.elm,i=e.data.domProps||{},o=t.data.domProps||{};for(n in(d(o.__ob__)||p(o._v_attr_proxy))&&(o=t.data.domProps=R({},o)),i)n in o||(r[n]="");for(n in o){if(a=o[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),a===i[n])continue;1===r.childNodes.length&&r.removeChild(r.childNodes[0])}if("value"===n&&"PROGRESS"!==r.tagName){r._value=a;var s=c(a)?"":String(a);zr(r,s)&&(r.value=s)}else if("innerHTML"===n&&ar(r.tagName)&&c(r.innerHTML)){(Pr=Pr||document.createElement("div")).innerHTML="".concat(a,"");for(var l=Pr.firstChild;r.firstChild;)r.removeChild(r.firstChild);for(;l.firstChild;)r.appendChild(l.firstChild)}else if(a!==i[n])try{r[n]=a}catch{}}}}function zr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch{}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,a=e._vModifiers;if(d(a)){if(a.number)return y(n)!==y(t);if(a.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Ir={create:Lr,update:Lr},Yr=S((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var a=e.split(n);a.length>1&&(t[a[0].trim()]=a[1].trim())}})),t}));function Zr(e){var t=Ur(e.style);return e.staticStyle?R(e.staticStyle,t):t}function Ur(e){return Array.isArray(e)?P(e):"string"==typeof e?Yr(e):e}var Gr,Hr=/^--/,$r=/\s*!important$/,qr=function(e,t,n){if(Hr.test(t))e.style.setProperty(t,n);else if($r.test(n))e.style.setProperty(O(t),n.replace($r,""),"important");else{var a=Wr(t);if(Array.isArray(n))for(var r=0,i=n.length;r-1?t.split(Jr).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function ei(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(Jr).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),a=" "+t+" ";n.indexOf(a)>=0;)n=n.replace(a," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function ti(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&R(t,ni(e.name||"v")),R(t,e),t}if("string"==typeof e)return ni(e)}}var ni=S((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),ai=J&&!te,ri="transition",ii="animation",oi="transition",si="transitionend",li="animation",ui="animationend";ai&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(oi="WebkitTransition",si="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(li="WebkitAnimation",ui="webkitAnimationEnd"));var ci=J?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function di(e){ci((function(){ci(e)}))}function pi(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),Xr(e,t))}function hi(e,t){e._transitionClasses&&C(e._transitionClasses,t),ei(e,t)}function mi(e,t,n){var a=gi(e,t),r=a.type,i=a.timeout,o=a.propCount;if(!r)return n();var s=r===ri?si:ui,l=0,u=function(){e.removeEventListener(s,c),n()},c=function(t){t.target===e&&++l>=o&&u()};setTimeout((function(){l0&&(n=ri,c=o,d=i.length):t===ii?u>0&&(n=ii,c=u,d=l.length):d=(n=(c=Math.max(o,u))>0?o>u?ri:ii:null)?n===ri?i.length:l.length:0,{type:n,timeout:c,propCount:d,hasTransform:n===ri&&fi.test(a[oi+"Property"])}}function vi(e,t){for(;e.length1}function Ti(e,t){!0!==t.data.show&&Ai(t)}var Ci=J?{create:Ti,activate:Ti,remove:function(e,t){!0!==e.data.show?bi(e,t):t()}}:{},ki=function(e){var t,n,a={},r=e.modules,i=e.nodeOps;for(t=0;tm?A(e,c(n[v+1])?null:n[v+1].elm,n,h,v,a):h>v&&y(t,p,m)}(u,f,v,n,l):d(v)?(d(e.text)&&i.setTextContent(u,""),A(u,null,v,0,v.length-1,n)):d(f)?y(f,0,f.length-1):d(e.text)&&i.setTextContent(u,""):e.text!==t.text&&i.setTextContent(u,t.text),d(m)&&d(h=m.hook)&&d(h=h.postpatch)&&h(e,t)}}function w(e,t,n){if(p(n)&&d(e.parent))e.parent.data.pendingInsert=t;else for(var a=0;a-1,o.selected!==i&&(o.selected=i);else if(I(xi(o),a))return void(e.selectedIndex!==s&&(e.selectedIndex=s));r||(e.selectedIndex=-1)}}function Di(e,t){return t.every((function(t){return!I(t,e)}))}function xi(e){return"_value"in e?e._value:e.value}function Ni(e){e.target.composing=!0}function Oi(e){!e.target.composing||(e.target.composing=!1,ji(e.target,"input"))}function ji(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Mi(e){return!e.componentInstance||e.data&&e.data.transition?e:Mi(e.componentInstance._vnode)}var Ri={bind:function(e,t,n){var a=t.value,r=(n=Mi(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;a&&r?(n.data.show=!0,Ai(n,(function(){e.style.display=i}))):e.style.display=a?i:"none"},update:function(e,t,n){var a=t.value;!a!=!t.oldValue&&((n=Mi(n)).data&&n.data.transition?(n.data.show=!0,a?Ai(n,(function(){e.style.display=e.__vOriginalDisplay})):bi(n,(function(){e.style.display="none"}))):e.style.display=a?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,a,r){r||(e.style.display=e.__vOriginalDisplay)}},Pi={model:wi,show:Ri},Bi={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Li(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Li(qt(t.children)):e}function zi(e){var t={},n=e.$options;for(var a in n.propsData)t[a]=e[a];var r=n._parentListeners;for(var a in r)t[D(a)]=r[a];return t}function Ii(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Yi=function(e){return e.tag||Pt(e)},Zi=function(e){return"show"===e.name},Ui={name:"transition",props:Bi,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Yi)).length){var a=this.mode,r=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return r;var i=Li(r);if(!i)return r;if(this._leaving)return Ii(e,r);var o="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?o+"comment":o+i.tag:h(i.key)?0===String(i.key).indexOf(o)?i.key:o+i.key:i.key;var s=(i.data||(i.data={})).transition=zi(this),l=this._vnode,u=Li(l);if(i.data.directives&&i.data.directives.some(Zi)&&(i.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,u)&&!Pt(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var c=u.data.transition=R({},s);if("out-in"===a)return this._leaving=!0,mt(c,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Ii(e,r);if("in-out"===a){if(Pt(i))return l;var d,p=function(){d()};mt(s,"afterEnter",p),mt(s,"enterCancelled",p),mt(c,"delayLeave",(function(e){d=e}))}}return r}}},Gi=R({tag:String,moveClass:String},Bi);delete Gi.mode;var Hi={props:Gi,beforeMount:function(){var e=this,t=this._update;this._update=function(n,a){var r=Ln(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,r(),t.call(e,n,a)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),a=this.prevChildren=this.children,r=this.$slots.default||[],i=this.children=[],o=zi(this),s=0;s-1?ir[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:ir[e]=/HTMLUnknownElement/.test(t.toString())},R(Ma.options.directives,Pi),R(Ma.options.components,Wi),Ma.prototype.__patch__=J?ki:B,Ma.prototype.$mount=function(e,t){return function(e,t,n){var a;e.$el=t,e.$options.render||(e.$options.render=ve),Zn(e,"beforeMount"),a=function(){e._update(e._render(),n)},new On(e,a,B,{before:function(){e._isMounted&&!e._isDestroyed&&Zn(e,"beforeUpdate")}},!0),n=!1;var r=e._preWatchers;if(r)for(var i=0;i1)return n&&m(t)?t.call(a):t}},isProxy:function(e){return Ze(e)||Ge(e)},isReactive:Ze,isReadonly:Ge,isRef:$e,isShallow:Ue,markRaw:function(e){return Object.isExtensible(e)&&W(e,"__v_skip",!0),e},mergeDefaults:function(e,t){var n=u(e)?e.reduce((function(e,t){return e[t]={},e}),{}):e;for(var a in t){var r=n[a];r?u(r)||m(r)?n[a]={type:r,default:t[a]}:r.default=t[a]:null===r&&(n[a]={default:t[a]})}return n},nextTick:pn,onActivated:bn,onBeforeMount:mn,onBeforeUnmount:_n,onBeforeUpdate:gn,onDeactivated:yn,onErrorCaptured:function(e,t){void 0===t&&(t=me),kn(e,t)},onMounted:fn,onRenderTracked:Tn,onRenderTriggered:Cn,onScopeDispose:function(e){lt&<.cleanups.push(e)},onServerPrefetch:Fn,onUnmounted:An,onUpdated:vn,provide:function(e,t){me&&(ct(me)[e]=t)},proxyRefs:function(e){if(Ze(e))return e;for(var t={},n=Object.keys(e),a=0;a"u"}var uo=oo("ArrayBuffer");function co(e){return null!==e&&"object"==typeof e}function po(e){if("object"!==io(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}var ho=oo("Date"),mo=oo("File"),fo=oo("Blob"),go=oo("FileList");function vo(e){return"[object Function]"===ro.call(e)}var _o=oo("URLSearchParams");function Ao(e,t){if(!(null===e||typeof e>"u"))if("object"!=typeof e&&(e=[e]),so(e))for(var n=0,a=e.length;n0;)o[i=a[r]]||(t[i]=e[i],o[i]=!0);e=Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:io,kindOfTest:oo,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var a=e.indexOf(t,n);return-1!==a&&a===n},toArray:function(e){if(!e)return null;var t=e.length;if(lo(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},isTypedArray:bo,isFileList:go},Fo=yo;function To(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Co=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(Fo.isURLSearchParams(t))a=t.toString();else{var r=[];Fo.forEach(t,(function(e,t){null===e||typeof e>"u"||(Fo.isArray(e)?t+="[]":e=[e],Fo.forEach(e,(function(e){Fo.isDate(e)?e=e.toISOString():Fo.isObject(e)&&(e=JSON.stringify(e)),r.push(To(t)+"="+To(e))})))})),a=r.join("&")}if(a){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+a}return e},ko=yo;function wo(){this.handlers=[]}wo.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},wo.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},wo.prototype.forEach=function(e){ko.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var So=wo,Eo=yo,Do=yo;function xo(e,t,n,a,r){Error.call(this),this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),a&&(this.request=a),r&&(this.response=r)}Do.inherits(xo,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var No=xo.prototype,Oo={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach((function(e){Oo[e]={value:e}})),Object.defineProperties(xo,Oo),Object.defineProperty(No,"isAxiosError",{value:!0}),xo.from=function(e,t,n,a,r,i){var o=Object.create(No);return Do.toFlatObject(e,o,(function(e){return e!==Error.prototype})),xo.call(o,e.message,t,n,a,r),o.name=e.name,i&&Object.assign(o,i),o};var jo,Mo,Ro,Po,Bo,Lo,zo,Io,Yo,Zo,Uo,Go,Ho,$o,qo,Vo,Wo=xo,Ko={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Qo=yo,Jo=function(e,t){t=t||new FormData;var n=[];function a(e){return null===e?"":Qo.isDate(e)?e.toISOString():Qo.isArrayBuffer(e)||Qo.isTypedArray(e)?"function"==typeof Blob?new Blob([e]):r.from(e):e}return function e(r,i){if(Qo.isPlainObject(r)||Qo.isArray(r)){if(-1!==n.indexOf(r))throw Error("Circular reference detected in "+i);n.push(r),Qo.forEach(r,(function(n,r){if(!Qo.isUndefined(n)){var o,s=i?i+"."+r:r;if(n&&!i&&"object"==typeof n)if(Qo.endsWith(r,"{}"))n=JSON.stringify(n);else if(Qo.endsWith(r,"[]")&&(o=Qo.toArray(n)))return void o.forEach((function(e){!Qo.isUndefined(e)&&t.append(s,a(e))}));e(n,s)}})),n.pop()}else t.append(i,a(r))}(e),t},Xo=function(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t};function es(){if(Zo)return Yo;Zo=1;var e=Wo;function t(t){e.call(this,null==t?"canceled":t,e.ERR_CANCELED),this.name="CanceledError"}return yo.inherits(t,e,{__CANCEL__:!0}),Yo=t}var ts=yo,ns=function(e,t){Eo.forEach(e,(function(n,a){a!==t&&a.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[a])}))},as=Wo,rs=Jo,is={"Content-Type":"application/x-www-form-urlencoded"};function os(e,t){!ts.isUndefined(e)&&ts.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var ss={transitional:Ko,adapter:function(){var e;return(typeof XMLHttpRequest<"u"||typeof i<"u"&&"[object process]"===Object.prototype.toString.call(i))&&(e=function(){if($o)return Ho;$o=1;var e=yo,t=function(){if(Mo)return jo;Mo=1;var e=Wo;return jo=function(t,n,a){var r=a.config.validateStatus;a.status&&r&&!r(a.status)?n(new e("Request failed with status code "+a.status,[e.ERR_BAD_REQUEST,e.ERR_BAD_RESPONSE][Math.floor(a.status/100)-4],a.config,a.request,a)):t(a)}}(),n=function(){if(Po)return Ro;Po=1;var e=yo;return Ro=e.isStandardBrowserEnv()?{write:function(t,n,a,r,i,o){var s=[];s.push(t+"="+encodeURIComponent(n)),e.isNumber(a)&&s.push("expires="+new Date(a).toGMTString()),e.isString(r)&&s.push("path="+r),e.isString(i)&&s.push("domain="+i),!0===o&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}}(),a=Co,r=Xo,i=function(){if(Lo)return Bo;Lo=1;var e=yo,t=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];return Bo=function(n){var a,r,i,o={};return n&&e.forEach(n.split("\n"),(function(n){if(i=n.indexOf(":"),a=e.trim(n.substr(0,i)).toLowerCase(),r=e.trim(n.substr(i+1)),a){if(o[a]&&t.indexOf(a)>=0)return;o[a]="set-cookie"===a?(o[a]?o[a]:[]).concat([r]):o[a]?o[a]+", "+r:r}})),o}}(),o=function(){if(Io)return zo;Io=1;var e=yo;return zo=e.isStandardBrowserEnv()?function(){var t,n=/(msie|trident)/i.test(navigator.userAgent),a=document.createElement("a");function r(e){var t=e;return n&&(a.setAttribute("href",t),t=a.href),a.setAttribute("href",t),{href:a.href,protocol:a.protocol?a.protocol.replace(/:$/,""):"",host:a.host,search:a.search?a.search.replace(/^\?/,""):"",hash:a.hash?a.hash.replace(/^#/,""):"",hostname:a.hostname,port:a.port,pathname:"/"===a.pathname.charAt(0)?a.pathname:"/"+a.pathname}}return t=r(window.location.href),function(n){var a=e.isString(n)?r(n):n;return a.protocol===t.protocol&&a.host===t.host}}():function(){return!0}}(),s=Ko,l=Wo,u=es(),c=(Go||(Go=1,Uo=function(e){var t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}),Uo);return Ho=function(d){return new Promise((function(p,h){var m,f=d.data,g=d.headers,v=d.responseType;function _(){d.cancelToken&&d.cancelToken.unsubscribe(m),d.signal&&d.signal.removeEventListener("abort",m)}e.isFormData(f)&&e.isStandardBrowserEnv()&&delete g["Content-Type"];var A=new XMLHttpRequest;if(d.auth){var b=d.auth.username||"",y=d.auth.password?unescape(encodeURIComponent(d.auth.password)):"";g.Authorization="Basic "+btoa(b+":"+y)}var F=r(d.baseURL,d.url);function T(){if(A){var e="getAllResponseHeaders"in A?i(A.getAllResponseHeaders()):null,n={data:v&&"text"!==v&&"json"!==v?A.response:A.responseText,status:A.status,statusText:A.statusText,headers:e,config:d,request:A};t((function(e){p(e),_()}),(function(e){h(e),_()}),n),A=null}}if(A.open(d.method.toUpperCase(),a(F,d.params,d.paramsSerializer),!0),A.timeout=d.timeout,"onloadend"in A?A.onloadend=T:A.onreadystatechange=function(){!A||4!==A.readyState||0===A.status&&(!A.responseURL||0!==A.responseURL.indexOf("file:"))||setTimeout(T)},A.onabort=function(){!A||(h(new l("Request aborted",l.ECONNABORTED,d,A)),A=null)},A.onerror=function(){h(new l("Network Error",l.ERR_NETWORK,d,A,A)),A=null},A.ontimeout=function(){var e=d.timeout?"timeout of "+d.timeout+"ms exceeded":"timeout exceeded",t=d.transitional||s;d.timeoutErrorMessage&&(e=d.timeoutErrorMessage),h(new l(e,t.clarifyTimeoutError?l.ETIMEDOUT:l.ECONNABORTED,d,A)),A=null},e.isStandardBrowserEnv()){var C=(d.withCredentials||o(F))&&d.xsrfCookieName?n.read(d.xsrfCookieName):void 0;C&&(g[d.xsrfHeaderName]=C)}"setRequestHeader"in A&&e.forEach(g,(function(e,t){typeof f>"u"&&"content-type"===t.toLowerCase()?delete g[t]:A.setRequestHeader(t,e)})),e.isUndefined(d.withCredentials)||(A.withCredentials=!!d.withCredentials),v&&"json"!==v&&(A.responseType=d.responseType),"function"==typeof d.onDownloadProgress&&A.addEventListener("progress",d.onDownloadProgress),"function"==typeof d.onUploadProgress&&A.upload&&A.upload.addEventListener("progress",d.onUploadProgress),(d.cancelToken||d.signal)&&(m=function(e){!A||(h(!e||e&&e.type?new u:e),A.abort(),A=null)},d.cancelToken&&d.cancelToken.subscribe(m),d.signal&&(d.signal.aborted?m():d.signal.addEventListener("abort",m))),f||(f=null);var k=c(F);k&&-1===["http","https","file"].indexOf(k)?h(new l("Unsupported protocol "+k+":",l.ERR_BAD_REQUEST,d)):A.send(f)}))}}()),e}(),transformRequest:[function(e,t){if(ns(t,"Accept"),ns(t,"Content-Type"),ts.isFormData(e)||ts.isArrayBuffer(e)||ts.isBuffer(e)||ts.isStream(e)||ts.isFile(e)||ts.isBlob(e))return e;if(ts.isArrayBufferView(e))return e.buffer;if(ts.isURLSearchParams(e))return os(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();var n,a=ts.isObject(e),r=t&&t["Content-Type"];if((n=ts.isFileList(e))||a&&"multipart/form-data"===r){var i=this.env&&this.env.FormData;return rs(n?{"files[]":e}:e,i&&new i)}return a||"application/json"===r?(os(t,"application/json"),function(e,t,n){if(ts.isString(e))try{return(0,JSON.parse)(e),ts.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||ss.transitional,n=t&&t.silentJSONParsing,a=t&&t.forcedJSONParsing,r=!n&&"json"===this.responseType;if(r||a&&ts.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(r)throw"SyntaxError"===e.name?as.from(e,as.ERR_BAD_RESPONSE,this,null,this.response):e}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:(Vo||(Vo=1,qo=null),qo)},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};ts.forEach(["delete","get","head"],(function(e){ss.headers[e]={}})),ts.forEach(["post","put","patch"],(function(e){ss.headers[e]=ts.merge(is)}));var ls,us,cs=ss,ds=yo,ps=cs;function hs(){return us||(us=1,ls=function(e){return!(!e||!e.__CANCEL__)}),ls}var ms=yo,fs=function(e,t,n){var a=this||ps;return ds.forEach(n,(function(n){e=n.call(a,e,t)})),e},gs=hs(),vs=cs,_s=es();function As(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new _s}var bs,ys,Fs=yo,Ts=function(e,t){t=t||{};var n={};function a(e,t){return Fs.isPlainObject(e)&&Fs.isPlainObject(t)?Fs.merge(e,t):Fs.isPlainObject(t)?Fs.merge({},t):Fs.isArray(t)?t.slice():t}function r(n){return Fs.isUndefined(t[n])?Fs.isUndefined(e[n])?void 0:a(void 0,e[n]):a(e[n],t[n])}function i(e){if(!Fs.isUndefined(t[e]))return a(void 0,t[e])}function o(n){return Fs.isUndefined(t[n])?Fs.isUndefined(e[n])?void 0:a(void 0,e[n]):a(void 0,t[n])}function s(n){return n in t?a(e[n],t[n]):n in e?a(void 0,e[n]):void 0}var l={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:s};return Fs.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||r,a=t(e);Fs.isUndefined(a)&&t!==s||(n[e]=a)})),n};function Cs(){return ys||(ys=1,bs={version:"0.27.2"}),bs}var ks=Cs().version,ws=Wo,Ss={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ss[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var Es={};Ss.transitional=function(e,t,n){function r(e,t){return"[Axios v"+ks+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,i,o){if(!1===e)throw new ws(r(i," has been removed"+(t?" in "+t:"")),ws.ERR_DEPRECATED);return t&&!Es[i]&&(Es[i]=!0,a.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,o)}};var Ds,xs,Ns,Os,js,Ms,Rs={assertOptions:function(e,t,n){if("object"!=typeof e)throw new ws("options must be an object",ws.ERR_BAD_OPTION_VALUE);for(var a=Object.keys(e),r=a.length;r-- >0;){var i=a[r],o=t[i];if(o){var s=e[i],l=void 0===s||o(s,i,e);if(!0!==l)throw new ws("option "+i+" must be "+l,ws.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new ws("Unknown option "+i,ws.ERR_BAD_OPTION)}},validators:Ss},Ps=yo,Bs=Co,Ls=So,zs=function(e){return As(e),e.headers=e.headers||{},e.data=fs.call(e,e.data,e.headers,e.transformRequest),e.headers=ms.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),ms.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||vs.adapter)(e).then((function(t){return As(e),t.data=fs.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return gs(t)||(As(e),t&&t.response&&(t.response.data=fs.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Is=Ts,Ys=Xo,Zs=Rs,Us=Zs.validators;function Gs(e){this.defaults=e,this.interceptors={request:new Ls,response:new Ls}}Gs.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=Is(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n=t.transitional;void 0!==n&&Zs.assertOptions(n,{silentJSONParsing:Us.transitional(Us.boolean),forcedJSONParsing:Us.transitional(Us.boolean),clarifyTimeoutError:Us.transitional(Us.boolean)},!1);var a=[],r=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(r=r&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));var i,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!r){var s=[zs,void 0];for(Array.prototype.unshift.apply(s,a),s=s.concat(o),i=Promise.resolve(t);s.length;)i=i.then(s.shift(),s.shift());return i}for(var l=t;a.length;){var u=a.shift(),c=a.shift();try{l=u(l)}catch(e){c(e);break}}try{i=zs(l)}catch(e){return Promise.reject(e)}for(;o.length;)i=i.then(o.shift(),o.shift());return i},Gs.prototype.getUri=function(e){e=Is(this.defaults,e);var t=Ys(e.baseURL,e.url);return Bs(t,e.params,e.paramsSerializer)},Ps.forEach(["delete","get","head","options"],(function(e){Gs.prototype[e]=function(t,n){return this.request(Is(n||{},{method:e,url:t,data:(n||{}).data}))}})),Ps.forEach(["post","put","patch"],(function(e){function t(t){return function(n,a,r){return this.request(Is(r||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:a}))}}Gs.prototype[e]=t(),Gs.prototype[e+"Form"]=t(!0)}));var Hs=yo,$s=no,qs=Gs,Vs=Ts,Ws=function e(t){var n=new qs(t),a=$s(qs.prototype.request,n);return Hs.extend(a,qs.prototype,n),Hs.extend(a,n),a.create=function(n){return e(Vs(t,n))},a}(cs);Ws.Axios=qs,Ws.CanceledError=es(),Ws.CancelToken=function(){if(xs)return Ds;xs=1;var e=es();function t(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var n;this.promise=new Promise((function(e){n=e}));var a=this;this.promise.then((function(e){if(a._listeners){var t,n=a._listeners.length;for(t=0;ta.error("SEMVER",...e):()=>{};var el=Xs;!function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:n}=Qs,a=el,r=(t=e.exports={}).re=[],i=t.src=[],o=t.t={};let s=0;const l=(e,t,n)=>{const l=s++;a(e,l,t),o[e]=l,i[l]=t,r[l]=new RegExp(t,n?"g":void 0)};l("NUMERICIDENTIFIER","0|[1-9]\\d*"),l("NUMERICIDENTIFIERLOOSE","[0-9]+"),l("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),l("MAINVERSION",`(${i[o.NUMERICIDENTIFIER]})\\.(${i[o.NUMERICIDENTIFIER]})\\.(${i[o.NUMERICIDENTIFIER]})`),l("MAINVERSIONLOOSE",`(${i[o.NUMERICIDENTIFIERLOOSE]})\\.(${i[o.NUMERICIDENTIFIERLOOSE]})\\.(${i[o.NUMERICIDENTIFIERLOOSE]})`),l("PRERELEASEIDENTIFIER",`(?:${i[o.NUMERICIDENTIFIER]}|${i[o.NONNUMERICIDENTIFIER]})`),l("PRERELEASEIDENTIFIERLOOSE",`(?:${i[o.NUMERICIDENTIFIERLOOSE]}|${i[o.NONNUMERICIDENTIFIER]})`),l("PRERELEASE",`(?:-(${i[o.PRERELEASEIDENTIFIER]}(?:\\.${i[o.PRERELEASEIDENTIFIER]})*))`),l("PRERELEASELOOSE",`(?:-?(${i[o.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${i[o.PRERELEASEIDENTIFIERLOOSE]})*))`),l("BUILDIDENTIFIER","[0-9A-Za-z-]+"),l("BUILD",`(?:\\+(${i[o.BUILDIDENTIFIER]}(?:\\.${i[o.BUILDIDENTIFIER]})*))`),l("FULLPLAIN",`v?${i[o.MAINVERSION]}${i[o.PRERELEASE]}?${i[o.BUILD]}?`),l("FULL",`^${i[o.FULLPLAIN]}$`),l("LOOSEPLAIN",`[v=\\s]*${i[o.MAINVERSIONLOOSE]}${i[o.PRERELEASELOOSE]}?${i[o.BUILD]}?`),l("LOOSE",`^${i[o.LOOSEPLAIN]}$`),l("GTLT","((?:<|>)?=?)"),l("XRANGEIDENTIFIERLOOSE",`${i[o.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),l("XRANGEIDENTIFIER",`${i[o.NUMERICIDENTIFIER]}|x|X|\\*`),l("XRANGEPLAIN",`[v=\\s]*(${i[o.XRANGEIDENTIFIER]})(?:\\.(${i[o.XRANGEIDENTIFIER]})(?:\\.(${i[o.XRANGEIDENTIFIER]})(?:${i[o.PRERELEASE]})?${i[o.BUILD]}?)?)?`),l("XRANGEPLAINLOOSE",`[v=\\s]*(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:${i[o.PRERELEASELOOSE]})?${i[o.BUILD]}?)?)?`),l("XRANGE",`^${i[o.GTLT]}\\s*${i[o.XRANGEPLAIN]}$`),l("XRANGELOOSE",`^${i[o.GTLT]}\\s*${i[o.XRANGEPLAINLOOSE]}$`),l("COERCE",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?(?:$|[^\\d])`),l("COERCERTL",i[o.COERCE],!0),l("LONETILDE","(?:~>?)"),l("TILDETRIM",`(\\s*)${i[o.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",l("TILDE",`^${i[o.LONETILDE]}${i[o.XRANGEPLAIN]}$`),l("TILDELOOSE",`^${i[o.LONETILDE]}${i[o.XRANGEPLAINLOOSE]}$`),l("LONECARET","(?:\\^)"),l("CARETTRIM",`(\\s*)${i[o.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",l("CARET",`^${i[o.LONECARET]}${i[o.XRANGEPLAIN]}$`),l("CARETLOOSE",`^${i[o.LONECARET]}${i[o.XRANGEPLAINLOOSE]}$`),l("COMPARATORLOOSE",`^${i[o.GTLT]}\\s*(${i[o.LOOSEPLAIN]})$|^$`),l("COMPARATOR",`^${i[o.GTLT]}\\s*(${i[o.FULLPLAIN]})$|^$`),l("COMPARATORTRIM",`(\\s*)${i[o.GTLT]}\\s*(${i[o.LOOSEPLAIN]}|${i[o.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",l("HYPHENRANGE",`^\\s*(${i[o.XRANGEPLAIN]})\\s+-\\s+(${i[o.XRANGEPLAIN]})\\s*$`),l("HYPHENRANGELOOSE",`^\\s*(${i[o.XRANGEPLAINLOOSE]})\\s+-\\s+(${i[o.XRANGEPLAINLOOSE]})\\s*$`),l("STAR","(<|>)?=?\\s*\\*"),l("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),l("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(Js,Js.exports);const tl=["includePrerelease","loose","rtl"];var nl=e=>e?"object"!=typeof e?{loose:!0}:tl.filter((t=>e[t])).reduce(((e,t)=>(e[t]=!0,e)),{}):{};const al=/^[0-9]+$/,rl=(e,t)=>{const n=al.test(e),a=al.test(t);return n&&a&&(e=+e,t=+t),e===t?0:n&&!a?-1:a&&!n?1:erl(t,e)};const ol=el,{MAX_LENGTH:sl,MAX_SAFE_INTEGER:ll}=Qs,{re:ul,t:cl}=Js.exports,dl=nl,{compareIdentifiers:pl}=il;class hl{constructor(e,t){if(t=dl(t),e instanceof hl){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid Version: ${e}`);if(e.length>sl)throw new TypeError(`version is longer than ${sl} characters`);ol("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=e.trim().match(t.loose?ul[cl.LOOSE]:ul[cl.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>ll||this.major<0)throw new TypeError("Invalid major version");if(this.minor>ll||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>ll||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[e]&&(this.prerelease[e]++,e=-2);-1===e&&this.prerelease.push(0)}t&&(0===pl(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}}var ml=hl;const{MAX_LENGTH:fl}=Qs,{re:gl,t:vl}=Js.exports,_l=ml,Al=nl;const bl=(e,t)=>{if(t=Al(t),e instanceof _l)return e;if("string"!=typeof e||e.length>fl||!(t.loose?gl[vl.LOOSE]:gl[vl.FULL]).test(e))return null;try{return new _l(e,t)}catch{return null}};const yl=ml;var Fl=(e,t)=>new yl(e,t).major;const Tl=(typeof window.OC<"u"&&window.OC._eventBus&&typeof window._nc_event_bus>"u"&&(a.warn("found old event bus instance at OC._eventBus. Update your version!"),window._nc_event_bus=window.OC._eventBus),typeof window._nc_event_bus<"u"?new class{constructor(e){s(this,"bus"),"function"==typeof e.getVersion&&((e,t)=>{const n=bl(e,t);return n?n.version:null})(e.getVersion())?Fl(e.getVersion())!==Fl(this.getVersion())&&a.warn("Proxying an event bus of version "+e.getVersion()+" with "+this.getVersion()):a.warn("Proxying an event bus with an unknown or invalid version"),this.bus=e}getVersion(){return"3.0.2"}subscribe(e,t){this.bus.subscribe(e,t)}unsubscribe(e,t){this.bus.unsubscribe(e,t)}emit(e,t){this.bus.emit(e,t)}}(window._nc_event_bus):window._nc_event_bus=new class{constructor(){s(this,"handlers",new Map)}getVersion(){return"3.0.2"}subscribe(e,t){this.handlers.set(e,(this.handlers.get(e)||[]).concat(t))}unsubscribe(e,t){this.handlers.set(e,(this.handlers.get(e)||[]).filter((e=>e!=t)))}emit(e,t){(this.handlers.get(e)||[]).forEach((e=>{try{e(t)}catch(e){a.error("could not invoke event listener",e)}}))}}),Cl=document.getElementsByTagName("head")[0];let kl=Cl?Cl.getAttribute("data-requesttoken"):null;const wl=[];Tl.subscribe("csrf-token-update",(e=>{kl=e.token,wl.forEach((t=>{try{t(e.token)}catch(e){a.error("error updating CSRF token observer",e)}}))}));const Sl=(e,t)=>e?e.getAttribute(t):null,El=document.getElementsByTagName("head")[0];Sl(El,"data-user"),Sl(El,"data-user-displayname"),typeof OC>"u"||OC.isUserAdmin();var Dl,xl,Nl={},Ol={};function jl(){if(xl)return Dl;xl=1;var e=function(e){return e&&e.Math==Math&&e};return Dl=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof Qi&&Qi)||function(){return this}()||Function("return this")()}var Ml,Rl,Pl,Bl,Ll,zl,Il,Yl,Zl={};function Ul(){return Rl||(Rl=1,Ml=function(e){try{return!!e()}catch{return!0}}),Ml}function Gl(){if(Bl)return Pl;Bl=1;var e=Ul();return Pl=!e((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))}function Hl(){if(zl)return Ll;zl=1;var e=Ul();return Ll=!e((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))}function $l(){if(Yl)return Il;Yl=1;var e=Hl(),t=Function.prototype.call;return Il=e?t.bind(t):function(){return t.apply(t,arguments)},Il}var ql,Vl,Wl,Kl,Ql,Jl,Xl,eu,tu,nu,au,ru,iu,ou,su,lu,uu,cu,du,pu,hu,mu,fu,gu,vu,_u,Au,bu,yu,Fu,Tu,Cu,ku,wu,Su,Eu,Du,xu,Nu,Ou,ju,Mu,Ru,Pu,Bu,Lu={};function zu(){if(ql)return Lu;ql=1;var e={}.propertyIsEnumerable,t=Object.getOwnPropertyDescriptor,n=t&&!e.call({1:2},1);return Lu.f=n?function(e){var n=t(this,e);return!!n&&n.enumerable}:e,Lu}function Iu(){return Wl||(Wl=1,Vl=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}),Vl}function Yu(){if(Ql)return Kl;Ql=1;var e=Hl(),t=Function.prototype,n=t.call,a=e&&t.bind.bind(n,n);return Kl=function(t){return e?a(t):function(){return n.apply(t,arguments)}},Kl}function Zu(){if(Xl)return Jl;Xl=1;var e=Yu(),t=e({}.toString),n=e("".slice);return Jl=function(e){return n(t(e),8,-1)}}function Uu(){if(tu)return eu;tu=1;var e=Zu(),t=Yu();return eu=function(n){if("Function"===e(n))return t(n)}}function Gu(){if(au)return nu;au=1;var e=Uu(),t=Ul(),n=Zu(),a=Object,r=e("".split);return nu=t((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"==n(e)?r(e,""):a(e)}:a}function Hu(){return iu||(iu=1,ru=function(e){return null==e}),ru}function $u(){if(su)return ou;su=1;var e=Hu(),t=TypeError;return ou=function(n){if(e(n))throw t("Can't call method on "+n);return n}}function qu(){if(uu)return lu;uu=1;var e=Gu(),t=$u();return lu=function(n){return e(t(n))}}function Vu(){if(du)return cu;du=1;var e="object"==typeof document&&document.all;return cu={all:e,IS_HTMLDDA:typeof e>"u"&&void 0!==e}}function Wu(){if(hu)return pu;hu=1;var e=Vu(),t=e.all;return pu=e.IS_HTMLDDA?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}}function Ku(){if(fu)return mu;fu=1;var e=Wu(),t=Vu(),n=t.all;return mu=t.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:e(t)||t===n}:function(t){return"object"==typeof t?null!==t:e(t)}}function Qu(){if(vu)return gu;vu=1;var e=jl(),t=Wu();return gu=function(n,a){return arguments.length<2?function(e){return t(e)?e:void 0}(e[n]):e[n]&&e[n][a]},gu}function Ju(){if(Au)return _u;Au=1;var e=Uu();return _u=e({}.isPrototypeOf)}function Xu(){if(ku)return Cu;ku=1;var e=function(){if(Tu)return Fu;Tu=1;var e,t,n=jl(),a=function(){if(yu)return bu;yu=1;var e=Qu();return bu=e("navigator","userAgent")||""}(),r=n.process,i=n.Deno,o=r&&r.versions||i&&i.version,s=o&&o.v8;return s&&(t=(e=s.split("."))[0]>0&&e[0]<4?1:+(e[0]+e[1])),!t&&a&&(!(e=a.match(/Edge\/(\d+)/))||e[1]>=74)&&(e=a.match(/Chrome\/(\d+)/))&&(t=+e[1]),Fu=t}(),t=Ul();return Cu=!!Object.getOwnPropertySymbols&&!t((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&e&&e<41}))}function ec(){if(Su)return wu;Su=1;var e=Xu();return wu=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator}function tc(){if(Du)return Eu;Du=1;var e=Qu(),t=Wu(),n=Ju(),a=ec(),r=Object;return Eu=a?function(e){return"symbol"==typeof e}:function(a){var i=e("Symbol");return t(i)&&n(i.prototype,r(a))}}function nc(){if(ju)return Ou;ju=1;var e=Wu(),t=function(){if(Nu)return xu;Nu=1;var e=String;return xu=function(t){try{return e(t)}catch{return"Object"}}}(),n=TypeError;return Ou=function(a){if(e(a))return a;throw n(t(a)+" is not a function")}}function ac(){if(Ru)return Mu;Ru=1;var e=nc(),t=Hu();return Mu=function(n,a){var r=n[a];return t(r)?void 0:e(r)}}var rc,ic,oc,sc,lc,uc,cc,dc,pc,hc,mc,fc,gc,vc,_c,Ac,bc,yc,Fc,Tc,Cc,kc,wc,Sc,Ec={exports:{}};function Dc(){if(sc)return oc;sc=1;var e=jl(),t=Object.defineProperty;return oc=function(n,a){try{t(e,n,{value:a,configurable:!0,writable:!0})}catch{e[n]=a}return a}}function xc(){if(uc)return lc;uc=1;var e=jl(),t=Dc(),n="__core-js_shared__",a=e[n]||t(n,{});return lc=a}function Nc(){if(cc)return Ec.exports;cc=1;var e=(ic||(ic=1,rc=!1),rc),t=xc();return(Ec.exports=function(e,n){return t[e]||(t[e]=void 0!==n?n:{})})("versions",[]).push({version:"3.25.5",mode:e?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.25.5/LICENSE",source:"https://github.com/zloirock/core-js"}),Ec.exports}function Oc(){if(pc)return dc;pc=1;var e=$u(),t=Object;return dc=function(n){return t(e(n))}}function jc(){if(mc)return hc;mc=1;var e=Uu(),t=Oc(),n=e({}.hasOwnProperty);return hc=Object.hasOwn||function(e,a){return n(t(e),a)}}function Mc(){if(gc)return fc;gc=1;var e=Uu(),t=0,n=Math.random(),a=e(1..toString);return fc=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++t+n,36)}}function Rc(){if(_c)return vc;_c=1;var e=jl(),t=Nc(),n=jc(),a=Mc(),r=Xu(),i=ec(),o=t("wks"),s=e.Symbol,l=s&&s.for,u=i?s:s&&s.withoutSetter||a;return vc=function(e){if(!n(o,e)||!r&&"string"!=typeof o[e]){var t="Symbol."+e;r&&n(s,e)?o[e]=s[e]:o[e]=i&&l?l(t):u(t)}return o[e]}}function Pc(){if(Fc)return yc;Fc=1;var e=function(){if(bc)return Ac;bc=1;var e=$l(),t=Ku(),n=tc(),a=ac(),r=function(){if(Bu)return Pu;Bu=1;var e=$l(),t=Wu(),n=Ku(),a=TypeError;return Pu=function(r,i){var o,s;if("string"===i&&t(o=r.toString)&&!n(s=e(o,r))||t(o=r.valueOf)&&!n(s=e(o,r))||"string"!==i&&t(o=r.toString)&&!n(s=e(o,r)))return s;throw a("Can't convert object to primitive value")}}(),i=Rc(),o=TypeError,s=i("toPrimitive");return Ac=function(i,l){if(!t(i)||n(i))return i;var u,c=a(i,s);if(c){if(void 0===l&&(l="default"),u=e(c,i,l),!t(u)||n(u))return u;throw o("Can't convert object to primitive value")}return void 0===l&&(l="number"),r(i,l)}}(),t=tc();return yc=function(n){var a=e(n,"string");return t(a)?a:a+""}}function Bc(){if(Cc)return Tc;Cc=1;var e=jl(),t=Ku(),n=e.document,a=t(n)&&t(n.createElement);return Tc=function(e){return a?n.createElement(e):{}}}function Lc(){if(wc)return kc;wc=1;var e=Gl(),t=Ul(),n=Bc();return kc=!e&&!t((function(){return 7!=Object.defineProperty(n("div"),"a",{get:function(){return 7}}).a}))}function zc(){if(Sc)return Zl;Sc=1;var e=Gl(),t=$l(),n=zu(),a=Iu(),r=qu(),i=Pc(),o=jc(),s=Lc(),l=Object.getOwnPropertyDescriptor;return Zl.f=e?l:function(e,u){if(e=r(e),u=i(u),s)try{return l(e,u)}catch{}if(o(e,u))return a(!t(n.f,e,u),e[u])},Zl}var Ic,Yc,Zc,Uc,Gc,Hc,$c,qc={};function Vc(){if(Yc)return Ic;Yc=1;var e=Gl(),t=Ul();return Ic=e&&t((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))}function Wc(){if(Uc)return Zc;Uc=1;var e=Ku(),t=String,n=TypeError;return Zc=function(a){if(e(a))return a;throw n(t(a)+" is not an object")}}function Kc(){if(Gc)return qc;Gc=1;var e=Gl(),t=Lc(),n=Vc(),a=Wc(),r=Pc(),i=TypeError,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,l="enumerable",u="configurable",c="writable";return qc.f=e?n?function(e,t,n){if(a(e),t=r(t),a(n),"function"==typeof e&&"prototype"===t&&"value"in n&&c in n&&!n[c]){var i=s(e,t);i&&i[c]&&(e[t]=n.value,n={configurable:u in n?n[u]:i[u],enumerable:l in n?n[l]:i[l],writable:!1})}return o(e,t,n)}:o:function(e,n,s){if(a(e),n=r(n),a(s),t)try{return o(e,n,s)}catch{}if("get"in s||"set"in s)throw i("Accessors not supported");return"value"in s&&(e[n]=s.value),e},qc}function Qc(){if($c)return Hc;$c=1;var e=Gl(),t=Kc(),n=Iu();return Hc=e?function(e,a,r){return t.f(e,a,n(1,r))}:function(e,t,n){return e[t]=n,e}}var Jc,Xc,ed,td,nd,ad,rd,id,od,sd,ld,ud,cd,dd,pd,hd={exports:{}};function md(){if(Xc)return Jc;Xc=1;var e=Gl(),t=jc(),n=Function.prototype,a=e&&Object.getOwnPropertyDescriptor,r=t(n,"name"),i=r&&"something"===function(){}.name,o=r&&(!e||e&&a(n,"name").configurable);return Jc={EXISTS:r,PROPER:i,CONFIGURABLE:o}}function fd(){if(td)return ed;td=1;var e=Uu(),t=Wu(),n=xc(),a=e(Function.toString);return t(n.inspectSource)||(n.inspectSource=function(e){return a(e)}),ed=n.inspectSource}function gd(){if(id)return rd;id=1;var e=Nc(),t=Mc(),n=e("keys");return rd=function(e){return n[e]||(n[e]=t(e))}}function vd(){return sd||(sd=1,od={}),od}function _d(){if(ud)return ld;ud=1;var e,t,n,a=function(){if(ad)return nd;ad=1;var e=jl(),t=Wu(),n=e.WeakMap;return nd=t(n)&&/native code/.test(String(n))}(),r=jl(),i=Ku(),o=Qc(),s=jc(),l=xc(),u=gd(),c=vd(),d="Object already initialized",p=r.TypeError,h=r.WeakMap;if(a||l.state){var m=l.state||(l.state=new h);m.get=m.get,m.has=m.has,m.set=m.set,e=function(e,t){if(m.has(e))throw p(d);return t.facade=e,m.set(e,t),t},t=function(e){return m.get(e)||{}},n=function(e){return m.has(e)}}else{var f=u("state");c[f]=!0,e=function(e,t){if(s(e,f))throw p(d);return t.facade=e,o(e,f,t),t},t=function(e){return s(e,f)?e[f]:{}},n=function(e){return s(e,f)}}return ld={set:e,get:t,has:n,enforce:function(a){return n(a)?t(a):e(a,{})},getterFor:function(e){return function(n){var a;if(!i(n)||(a=t(n)).type!==e)throw p("Incompatible receiver, "+e+" required");return a}}}}function Ad(){if(pd)return dd;pd=1;var e=Wu(),t=Kc(),n=function(){if(cd)return hd.exports;cd=1;var e=Ul(),t=Wu(),n=jc(),a=Gl(),r=md().CONFIGURABLE,i=fd(),o=_d(),s=o.enforce,l=o.get,u=Object.defineProperty,c=a&&!e((function(){return 8!==u((function(){}),"length",{value:8}).length})),d=String(String).split("String"),p=hd.exports=function(e,t,i){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),i&&i.getter&&(t="get "+t),i&&i.setter&&(t="set "+t),(!n(e,"name")||r&&e.name!==t)&&(a?u(e,"name",{value:t,configurable:!0}):e.name=t),c&&i&&n(i,"arity")&&e.length!==i.arity&&u(e,"length",{value:i.arity});try{i&&n(i,"constructor")&&i.constructor?a&&u(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch{}var o=s(e);return n(o,"source")||(o.source=d.join("string"==typeof t?t:"")),e};return Function.prototype.toString=p((function(){return t(this)&&l(this).source||i(this)}),"toString"),hd.exports}(),a=Dc();return dd=function(r,i,o,s){s||(s={});var l=s.enumerable,u=void 0!==s.name?s.name:i;if(e(o)&&n(o,u,s),s.global)l?r[i]=o:a(i,o);else{try{s.unsafe?r[i]&&(l=!0):delete r[i]}catch{}l?r[i]=o:t.f(r,i,{value:o,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return r}}var bd,yd,Fd,Td,Cd,kd,wd,Sd,Ed,Dd,xd,Nd,Od,jd,Md,Rd,Pd,Bd={};function Ld(){if(Td)return Fd;Td=1;var e=function(){if(yd)return bd;yd=1;var e=Math.ceil,t=Math.floor;return bd=Math.trunc||function(n){var a=+n;return(a>0?t:e)(a)}}();return Fd=function(t){var n=+t;return n!=n||0===n?0:e(n)}}function zd(){if(Sd)return wd;Sd=1;var e=Ld(),t=Math.min;return wd=function(n){return n>0?t(e(n),9007199254740991):0}}function Id(){if(Dd)return Ed;Dd=1;var e=zd();return Ed=function(t){return e(t.length)}}function Yd(){if(Nd)return xd;Nd=1;var e=qu(),t=function(){if(kd)return Cd;kd=1;var e=Ld(),t=Math.max,n=Math.min;return Cd=function(a,r){var i=e(a);return i<0?t(i+r,0):n(i,r)}}(),n=Id(),a=function(a){return function(r,i,o){var s,l=e(r),u=n(l),c=t(o,u);if(a&&i!=i){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((a||c in l)&&l[c]===i)return a||c||0;return!a&&-1}};return xd={includes:a(!0),indexOf:a(!1)}}function Zd(){if(jd)return Od;jd=1;var e=Uu(),t=jc(),n=qu(),a=Yd().indexOf,r=vd(),i=e([].push);return Od=function(e,o){var s,l=n(e),u=0,c=[];for(s in l)!t(r,s)&&t(l,s)&&i(c,s);for(;o.length>u;)t(l,s=o[u++])&&(~a(c,s)||i(c,s));return c}}function Ud(){return Rd||(Rd=1,Md=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),Md}var Gd,Hd,$d,qd,Vd,Wd,Kd,Qd,Jd,Xd,ep={};function tp(){return Gd||(Gd=1,ep.f=Object.getOwnPropertySymbols),ep}function np(){if(Jd)return Qd;Jd=1;var e=jl(),t=zc().f,n=Qc(),a=Ad(),r=Dc(),i=function(){if(Vd)return qd;Vd=1;var e=jc(),t=function(){if($d)return Hd;$d=1;var e=Qu(),t=Uu(),n=function(){if(Pd)return Bd;Pd=1;var e=Zd(),t=Ud().concat("length","prototype");return Bd.f=Object.getOwnPropertyNames||function(n){return e(n,t)},Bd}(),a=tp(),r=Wc(),i=t([].concat);return Hd=e("Reflect","ownKeys")||function(e){var t=n.f(r(e)),o=a.f;return o?i(t,o(e)):t}}(),n=zc(),a=Kc();return qd=function(r,i,o){for(var s=t(i),l=a.f,u=n.f,c=0;cp;)for(var f,g=l(arguments[p++]),v=h?d(r(g),h(g)):r(g),_=v.length,A=0;_>A;)f=v[A++],(!e||n(m,g,f))&&(u[f]=g[f]);return u}:u,op}();return e({target:"Object",stat:!0,arity:2,forced:Object.assign!==t},{assign:t}),up}var pp,hp,mp,fp,gp,vp,_p,Ap,bp,yp,Fp={};function Tp(){if(hp)return pp;hp=1;var e={};return e[Rc()("toStringTag")]="z",pp="[object z]"===String(e)}function Cp(){if(fp)return mp;fp=1;var e=Tp(),t=Wu(),n=Zu(),a=Rc()("toStringTag"),r=Object,i="Arguments"==n(function(){return arguments}());return mp=e?n:function(e){var o,s,l;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(s=function(e,t){try{return e[t]}catch{}}(o=r(e),a))?s:i?n(o):"Object"==(l=n(o))&&t(o.callee)?"Arguments":l}}function kp(){if(vp)return gp;vp=1;var e=Cp(),t=String;return gp=function(n){if("Symbol"===e(n))throw TypeError("Cannot convert a Symbol value to a string");return t(n)}}function wp(){if(Ap)return _p;Ap=1;var e=Wc();return _p=function(){var t=e(this),n="";return t.hasIndices&&(n+="d"),t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.dotAll&&(n+="s"),t.unicode&&(n+="u"),t.unicodeSets&&(n+="v"),t.sticky&&(n+="y"),n}}var Sp,Ep,Dp,xp,Np,Op,jp,Mp,Rp,Pp,Bp,Lp,zp={};function Ip(){if(Bp)return Pp;Bp=1;var e,t,n=$l(),a=Uu(),r=kp(),i=wp(),o=function(){if(yp)return bp;yp=1;var e=Ul(),t=jl().RegExp,n=e((function(){var e=t("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),a=n||e((function(){return!t("a","y").sticky})),r=n||e((function(){var e=t("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));return bp={BROKEN_CARET:r,MISSED_STICKY:a,UNSUPPORTED_Y:n}}(),s=Nc(),l=function(){if(Np)return xp;Np=1;var e,t=Wc(),n=function(){if(Sp)return zp;Sp=1;var e=Gl(),t=Vc(),n=Kc(),a=Wc(),r=qu(),i=cp();return zp.f=e&&!t?Object.defineProperties:function(e,t){a(e);for(var o,s=r(t),l=i(t),u=l.length,c=0;u>c;)n.f(e,o=l[c++],s[o]);return e},zp}(),a=Ud(),r=vd(),i=function(){if(Dp)return Ep;Dp=1;var e=Qu();return Ep=e("document","documentElement")}(),o=Bc(),s=gd(),l="prototype",u="script",c=s("IE_PROTO"),d=function(){},p=function(e){return"<"+u+">"+e+""},h=function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{e=new ActiveXObject("htmlfile")}catch{}m=typeof document<"u"?document.domain&&e?h(e):function(){var e,t=o("iframe"),n="java"+u+":";return t.style.display="none",i.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F}():h(e);for(var t=a.length;t--;)delete m[l][a[t]];return m()};return r[c]=!0,xp=Object.create||function(e,a){var r;return null!==e?(d[l]=t(e),r=new d,d[l]=null,r[c]=e):r=m(),void 0===a?r:n.f(r,a)}}(),u=_d().get,c=function(){if(jp)return Op;jp=1;var e=Ul(),t=jl().RegExp;return Op=e((function(){var e=t(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)}))}(),d=function(){if(Rp)return Mp;Rp=1;var e=Ul(),t=jl().RegExp;return Mp=e((function(){var e=t("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))}(),p=s("native-string-replace",String.prototype.replace),h=RegExp.prototype.exec,m=h,f=a("".charAt),g=a("".indexOf),v=a("".replace),_=a("".slice),A=(t=/b*/g,n(h,e=/a/,"a"),n(h,t,"a"),0!==e.lastIndex||0!==t.lastIndex),b=o.BROKEN_CARET,y=void 0!==/()??/.exec("")[1];return(A||y||b||c||d)&&(m=function(e){var t,a,o,s,c,d,F,T=this,C=u(T),k=r(e),w=C.raw;if(w)return w.lastIndex=T.lastIndex,t=n(m,w,k),T.lastIndex=w.lastIndex,t;var S=C.groups,E=b&&T.sticky,D=n(i,T),x=T.source,N=0,O=k;if(E&&(D=v(D,"y",""),-1===g(D,"g")&&(D+="g"),O=_(k,T.lastIndex),T.lastIndex>0&&(!T.multiline||T.multiline&&"\n"!==f(k,T.lastIndex-1))&&(x="(?: "+x+")",O=" "+O,N++),a=new RegExp("^(?:"+x+")",D)),y&&(a=new RegExp("^"+x+"$(?!\\s)",D)),A&&(o=T.lastIndex),s=n(h,E?a:T,O),E?s?(s.input=_(s.input,N),s[0]=_(s[0],N),s.index=T.lastIndex,T.lastIndex+=s[0].length):T.lastIndex=0:A&&s&&(T.lastIndex=T.global?s.index+s[0].length:o),y&&s&&s.length>1&&n(p,s[0],a,(function(){for(c=1;c=h?e?"":void 0:(u=i(d,p))<55296||u>56319||p+1===h||(c=i(d,p+1))<56320||c>57343?e?r(d,p):u:e?o(d,p,p+2):c-56320+(u-55296<<10)+65536}};return $p={codeAt:s(!1),charAt:s(!0)}}().charAt;return Vp=function(t,n,a){return n+(a?e(t,n).length:1)}}(),h=ac(),m=function(){if(Qp)return Kp;Qp=1;var e=Uu(),t=Oc(),n=Math.floor,a=e("".charAt),r=e("".replace),i=e("".slice),o=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;return Kp=function(e,l,u,c,d,p){var h=u+e.length,m=c.length,f=s;return void 0!==d&&(d=t(d),f=o),r(p,f,(function(t,r){var o;switch(a(r,0)){case"$":return"$";case"&":return e;case"`":return i(l,0,u);case"'":return i(l,h);case"<":o=d[i(r,1,-1)];break;default:var s=+r;if(0===s)return t;if(s>m){var p=n(s/10);return 0===p?t:p<=m?void 0===c[p-1]?a(r,1):c[p-1]+a(r,1):t}o=c[s-1]}return void 0===o?"":o}))}}(),f=function(){if(Xp)return Jp;Xp=1;var e=$l(),t=Wc(),n=Wu(),a=Zu(),r=Ip(),i=TypeError;return Jp=function(o,s){var l=o.exec;if(n(l)){var u=e(l,o,s);return null!==u&&t(u),u}if("RegExp"===a(o))return e(r,o,s);throw i("RegExp#exec called on incompatible receiver")}}(),g=Rc()("replace"),v=Math.max,_=Math.min,A=n([].concat),b=n([].push),y=n("".indexOf),F=n("".slice),T=function(e){return void 0===e?e:String(e)},C="$0"==="a".replace(/./,"$0"),k=!!/./[g]&&""===/./[g]("a","$0");return a("replace",(function(n,a,r){var C=k?"$":"$0";return[function(e,n){var r=d(this),i=s(e)?void 0:h(e,g);return i?t(i,e,r,n):t(a,c(r),e,n)},function(t,n){var s=i(this),d=c(t);if("string"==typeof n&&-1===y(n,C)&&-1===y(n,"$<")){var h=r(a,s,d,n);if(h.done)return h.value}var g=o(n);g||(n=c(n));var k=s.global;if(k){var w=s.unicode;s.lastIndex=0}for(var S=[];;){var E=f(s,d);if(null===E||(b(S,E),!k))break;""===c(E[0])&&(s.lastIndex=p(d,u(s.lastIndex),w))}for(var D="",x=0,N=0;N=x&&(D+=F(d,x,j)+L,x=j+O.length)}return D+F(d,x)}]}),!!r((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!C||k),th}var ah,rh,ih,oh={};function sh(){if(ih)return oh;ih=1;var e=Tp(),t=Ad(),n=function(){if(rh)return ah;rh=1;var e=Tp(),t=Cp();return ah=e?{}.toString:function(){return"[object "+t(this)+"]"}}();return e||t(Object.prototype,"toString",n,{unsafe:!0}),oh}var lh,uh,ch,dh={};function ph(){if(ch)return dh;ch=1;var e=md().PROPER,t=Ad(),n=Wc(),a=kp(),r=Ul(),i=function(){if(uh)return lh;uh=1;var e=$l(),t=jc(),n=Ju(),a=wp(),r=RegExp.prototype;return lh=function(i){var o=i.flags;return void 0!==o||"flags"in r||t(i,"flags")||!n(r,i)?o:e(a,i)}}(),o="toString",s=RegExp.prototype[o],l=r((function(){return"/a/b"!=s.call({source:"a",flags:"b"})})),u=e&&s.name!=o;return(l||u)&&t(RegExp.prototype,o,(function(){var e=n(this);return"/"+a(e.source)+"/"+a(i(e))}),{unsafe:!0}),dh}var hh,mh,fh,gh,vh={};function _h(){if(mh)return hh;mh=1;var e=Ul();return hh=function(t,n){var a=[][t];return!!a&&e((function(){a.call(null,n||function(){return 1},1)}))}}function Ah(){if(gh)return Nl;gh=1,ap(),Object.defineProperty(Nl,"__esModule",{value:!0}),Nl.linkTo=Nl.imagePath=Nl.getRootUrl=Nl.generateUrl=Nl.generateRemoteUrl=Nl.generateOcsUrl=Nl.generateFilePath=void 0,dp(),Yp(),nh(),sh(),ph(),function(){if(fh)return vh;fh=1;var e=np(),t=Uu(),n=Yd().indexOf,a=_h(),r=t([].indexOf),i=!!r&&1/r([1],1,-0)<0,o=a("indexOf");e({target:"Array",proto:!0,forced:i||!o},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return i?r(this,e,t)||0:n(this,e,t)}})}(),Nl.linkTo=function(e,n){return t(e,"",n)},Nl.generateRemoteUrl=function(e){return window.location.protocol+"//"+window.location.host+function(e){return n()+"/remote.php/"+e}(e)},Nl.generateOcsUrl=function(t,a,r){var i=1===Object.assign({ocsVersion:2},r||{}).ocsVersion?1:2;return window.location.protocol+"//"+window.location.host+n()+"/ocs/v"+i+".php"+e(t,a,r)};var e=function(e,t,n){var a,r=Object.assign({escape:!0},n||{});return"/"!==e.charAt(0)&&(e="/"+e),a=(a=t||{})||{},e.replace(/{([^{}]*)}/g,(function(e,t){var n=a[t];return r.escape?encodeURIComponent("string"==typeof n||"number"==typeof n?n.toString():e):"string"==typeof n||"number"==typeof n?n.toString():e}))};Nl.generateUrl=function(t,a,r){var i,o,s,l=Object.assign({noRewrite:!1},r||{});return!0!==(null===(i=window)||void 0===i||null===(o=i.OC)||void 0===o||null===(s=o.config)||void 0===s?void 0:s.modRewriteWorking)||l.noRewrite?n()+"/index.php"+e(t,a,r):n()+e(t,a,r)},Nl.imagePath=function(e,n){return-1===n.indexOf(".")?t(e,"img",n+".svg"):t(e,"img",n)};var t=function(e,t,a){var r,i,o,s=-1!==(null===(r=window)||void 0===r||null===(i=r.OC)||void 0===i||null===(o=i.coreApps)||void 0===o?void 0:o.indexOf(e)),l=n();if("php"!==a.substring(a.length-3)||s)if("php"===a.substring(a.length-3)||s)l+="settings"!==e&&"core"!==e&&"search"!==e||"ajax"!==t?"/":"/index.php/",s||(l+="apps/"),""!==e&&(l+=e+="/"),t&&(l+=t+"/"),l+=a;else{var u,c,d;l=null===(u=window)||void 0===u||null===(c=u.OC)||void 0===c||null===(d=c.appswebroots)||void 0===d?void 0:d[e],t&&(l+="/"+t+"/"),"/"!==l.substring(l.length-1)&&(l+="/"),l+=a}else l+="/index.php/apps/"+e,"index.php"!==a&&(l+="/",t&&(l+=encodeURI(t+"/")),l+=a);return l};Nl.generateFilePath=t;var n=function(){var e,t;return(null===(e=window)||void 0===e||null===(t=e.OC)||void 0===t?void 0:t.webroot)||""};return Nl.getRootUrl=n,Nl}var bh=Ah();const yh=Symbol("csrf-retry"),Fh=Symbol("retryDelay");var Th;const Ch=Ks.create({headers:{requesttoken:null!=(Th=kl)?Th:""}}),kh=Object.assign(Ch,{CancelToken:Ks.CancelToken,isCancel:Ks.isCancel});kh.interceptors.response.use((e=>e),(e=>async t=>{var n;const{config:r,response:i,request:o}=t,s=null==o?void 0:o.responseURL;if(412===(null==i?void 0:i.status)&&"CSRF check failed"===(null==(n=null==i?void 0:i.data)?void 0:n.message)&&void 0===r[yh]){a.warn(`Request to ${s} failed because of a CSRF mismatch. Fetching a new token`);const{data:{token:t}}=await e.get(bh.generateUrl("/csrftoken"));return a.debug(`New request token ${t} fetched`),e.defaults.headers.requesttoken=t,e({...r,headers:{...r.headers,requesttoken:t},[yh]:!0})}return Promise.reject(t)})(kh)),kh.interceptors.response.use((e=>e),(e=>async t=>{var n;const{config:r,response:i,request:o}=t,s=null==o?void 0:o.responseURL,l=null==i?void 0:i.status,u=null==i?void 0:i.headers;if(503===l&&"1"===u["x-nextcloud-maintenance-mode"]&&r.retryIfMaintenanceMode&&(!r[Fh]||r[Fh]<=32)){const t=2*(null!=(n=r[Fh])?n:1);return a.warn(`Request to ${s} failed because of maintenance mode. Retrying in ${t}s`),await new Promise(((e,n)=>{setTimeout(e,1e3*t)})),e({...r,[Fh]:t})}return Promise.reject(t)})(kh)),kh.interceptors.response.use((e=>e),(async e=>{var t;const{config:n,response:r,request:i}=e,o=null==i?void 0:i.responseURL;return 401===(null==r?void 0:r.status)&&"Current user is not logged in"===(null==(t=null==r?void 0:r.data)?void 0:t.message)&&n.reloadExpiredSession&&(null==window?void 0:window.location)&&(a.error(`Request to ${o} failed because the user session expired. Reloading the page …`),window.location.reload()),Promise.reject(e)})),wl.push((e=>Ch.defaults.headers.requesttoken=e));const wh=Object.freeze(Object.defineProperty({__proto__:null,default:kh},Symbol.toStringTag,{value:"Module"}));var Sh={exports:{}};const Eh=Xi(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));!function(e,t){var n;self,n=()=>(()=>{var e={5108:(e,t,n)=>{var a=n(6464),r=n(9084);function i(){return(new Date).getTime()}var o,s=Array.prototype.slice,l={};o=void 0!==n.g&&n.g.console?n.g.console:typeof window<"u"&&window.console?window.console:{};for(var u=[[function(){},"log"],[function(){o.log.apply(o,arguments)},"info"],[function(){o.log.apply(o,arguments)},"warn"],[function(){o.warn.apply(o,arguments)},"error"],[function(e){l[e]=i()},"time"],[function(e){var t=l[e];if(!t)throw new Error("No such label: "+e);delete l[e];var n=i()-t;o.log(e+": "+n+"ms")},"timeEnd"],[function(){var e=new Error;e.name="Trace",e.message=a.format.apply(null,arguments),o.error(e.stack)},"trace"],[function(e){o.log(a.inspect(e)+"\n")},"dir"],[function(e){if(!e){var t=s.call(arguments,1);r.ok(!1,a.format.apply(null,t))}},"assert"]],c=0;c{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-61417734]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-61417734]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition:background-color .1s linear !important;transition:border .1s linear;background-color:var(--color-primary-element-lighter),var(--color-primary-element-light);color:var(--color-primary-light-text)}.button-vue *[data-v-61417734]{cursor:pointer}.button-vue[data-v-61417734]:focus{outline:none}.button-vue[data-v-61417734]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-61417734]{cursor:default}.button-vue[data-v-61417734]:hover:not(:disabled){background-color:var(--color-primary-light-hover)}.button-vue[data-v-61417734]:active{background-color:var(--color-primary-element-lighter),var(--color-primary-element-light)}.button-vue__wrapper[data-v-61417734]{display:inline-flex;align-items:center;justify-content:space-around}.button-vue__icon[data-v-61417734]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-61417734]{font-weight:bold;margin-bottom:1px;padding:2px 0}.button-vue--icon-only[data-v-61417734]{width:44px !important}.button-vue--text-only[data-v-61417734]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-61417734]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-61417734]{padding:0 16px 0 4px}.button-vue--wide[data-v-61417734]{width:100%}.button-vue[data-v-61417734]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-61417734]{outline:2px solid var(--color-primary-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-61417734]{background-color:var(--color-primary-element);color:var(--color-primary-text)}.button-vue--vue-primary[data-v-61417734]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-61417734]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-61417734]{color:var(--color-primary-light-text);background-color:var(--color-primary-light)}.button-vue--vue-secondary[data-v-61417734]:hover:not(:disabled){color:var(--color-primary-light-text);background-color:var(--color-primary-light-hover)}.button-vue--vue-tertiary[data-v-61417734]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-61417734]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-61417734]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-61417734]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-61417734]{color:var(--color-primary-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-61417734]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-61417734]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-61417734]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-61417734]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-61417734]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-61417734]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-61417734]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-61417734]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-61417734]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-61417734]:active{background-color:var(--color-error)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcButton/NcButton.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAIA,kBAAA,CACA,iDAAA,CACA,4BAAA,CAkBA,wFAAA,CACA,qCAAA,CAxBA,+BACC,cAAA,CAOD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCMiB,CDJjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,iDAAA,CAKD,oCACC,wFAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,4BAAA,CAGD,mCACC,WCpCe,CDqCf,UCrCe,CDsCf,eCtCe,CDuCf,cCvCe,CDwCf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,2CAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,+BAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,qCAAA,CACA,2CAAA,CACA,iEACC,qCAAA,CACA,iDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,+BAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n\n.button-vue {\n\tposition: relative;\n\twidth: fit-content;\n\toverflow: hidden;\n\tborder: 0;\n\tpadding: 0;\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\tmin-height: $clickable-area;\n\tmin-width: $clickable-area;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t// Cursor pointer on element and all children\n\tcursor: pointer;\n\t& * {\n\t\tcursor: pointer;\n\t}\n\tborder-radius: math.div($clickable-area, 2);\n\ttransition: background-color 0.1s linear !important;\n\ttransition: border 0.1s linear;\n\n\t// No outline feedback for focus. Handled with a toggled class in js (see data)\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\t& * {\n\t\t\tcursor: default;\n\t\t}\n\t\topacity: $opacity_disabled;\n\t\t// Gives a wash out effect\n\t\tfilter: saturate($opacity_normal);\n\t}\n\n\t// Default button type\n\tbackground-color: var(--color-primary-element-lighter), var(--color-primary-element-light);\n\tcolor: var(--color-primary-light-text);\n\t&:hover:not(:disabled) {\n\t\tbackground-color: var(--color-primary-light-hover);\n\t}\n\n\t// Back to the default color for this button when active\n\t// TODO: add ripple effect\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-lighter), var(--color-primary-element-light);\n\t}\n\n\t&__wrapper {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: space-around;\n\t}\n\n\t&__icon {\n\t\theight: $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-height: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t&__text {\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1px;\n\t\tpadding: 2px 0;\n\t}\n\n\t// Icon-only button\n\t&--icon-only {\n\t\twidth: $clickable-area !important;\n\t}\n\n\t// Text-only button\n\t&--text-only {\n\t\tpadding: 0 12px;\n\t\t& .button-vue__text {\n\t\t\tmargin-left: 4px;\n\t\t\tmargin-right: 4px;\n\t\t}\n\t}\n\n\t// Icon and text button\n\t&--icon-and-text {\n\t\tpadding: 0 16px 0 4px;\n\t}\n\n\t// Wide button spans the whole width of the container\n\t&--wide {\n\t\twidth: 100%;\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t&.button-vue--vue-tertiary-on-primary {\n\t\t\toutline: 2px solid var(--color-primary-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Button types\n\n\t// Primary\n\t&--vue-primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tcolor: var(--color-primary-text);\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-primary-element-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Secondary\n\t&--vue-secondary {\n\t\tcolor: var(--color-primary-light-text);\n\t\tbackground-color: var(--color-primary-light);\n\t\t&:hover:not(:disabled) {\n\t\t\tcolor: var(--color-primary-light-text);\n\t\t\tbackground-color: var(--color-primary-light-hover);\n\t\t}\n\t}\n\n\t// Tertiary\n\t&--vue-tertiary {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Tertiary, no background\n\t&--vue-tertiary-no-background {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Tertiary on primary color (like the header)\n\t&--vue-tertiary-on-primary {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: transparent;\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Success\n\t&--vue-success {\n\t\tbackground-color: var(--color-success);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// : add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-success);\n\t\t}\n\t}\n\n\t// Warning\n\t&--vue-warning {\n\t\tbackground-color: var(--color-warning);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-warning);\n\t\t}\n\t}\n\n\t// Error\n\t&--vue-error {\n\t\tbackground-color: var(--color-error);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-error);\n\t\t}\n\t}\n}\n\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},3645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",a=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),a&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),a&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,a,r,i){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(a)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=i),n&&(c[2]&&(c[1]="@media ".concat(c[2]," {").concat(c[1],"}")),c[2]=n),r&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=r):c[4]="".concat(r)),t.push(c))}},t}},7537:e=>{e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var a=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),i="/*# ".concat(r," */");return[t].concat([i]).join("\n")}return[t].join("\n")}},3379:e=>{var t=[];function n(e){for(var n=-1,a=0;a{var t={};e.exports=function(e,n){var a=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch{n=null}t[e]=n}return t[e]}(e);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(n)}},9216:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7795:e=>{e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var a="";n.supports&&(a+="@supports (".concat(n.supports,") {")),n.media&&(a+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(a+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),a+=n.css,r&&(a+="}"),n.media&&(a+="}"),n.supports&&(a+="}");var i=n.sourceMap;i&&typeof btoa<"u"&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleTagTransform(a,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},2102:()=>{},1900:(e,t,n)=>{function a(e,t,n,a,r,i,o,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||typeof __VUE_SSR_CONTEXT__>"u"||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}n.d(t,{Z:()=>a})},9084:e=>{e.exports=Eh},6464:e=>{e.exports=Eh}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var i=t[a]={id:a,exports:{}};return e[a](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch{if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;var a={};return(()=>{n.r(a),n.d(a,{default:()=>w});var e=n(5108);function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t-1},lm.prototype.set=function(e,t){var n=this.__data__,a=cm(n,e);return a<0?n.push([e,t]):n[a][1]=t,this},um.prototype.clear=function(){this.__data__={hash:new sm,map:new(am||lm),string:new sm}},um.prototype.delete=function(e){return dm(this,e).delete(e)},um.prototype.get=function(e){return dm(this,e).get(e)},um.prototype.has=function(e){return dm(this,e).has(e)},um.prototype.set=function(e,t){return dm(this,e).set(e,t),this};var hm=fm((function(e){e=function(e){return null==e?"":function(e){if("string"==typeof e)return e;if(Am(e))return om?om.call(e):"";var t=e+"";return"0"==t&&1/e==-jh?"-0":t}(e)}(e);var t=[];return zh.test(e)&&t.push(""),e.replace(Ih,(function(e,n,a,r){t.push(a?r.replace(Yh,"$1"):n||e)})),t}));function mm(e){if("string"==typeof e||Am(e))return e;var t=e+"";return"0"==t&&1/e==-jh?"-0":t}function fm(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=t?t.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var o=e.apply(this,a);return n.cache=i.set(r,o),o};return n.cache=new(fm.Cache||um),n}function gm(e,t){return e===t||e!=e&&t!=t}fm.Cache=um;var vm=Array.isArray;function _m(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Am(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&Xh.call(e)==Ph}var bm=function(e,t,n){var a=null==e?void 0:function(e,t){t=function(e,t){if(vm(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Am(e))||Lh.test(e)||!Bh.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:function(e){return vm(e)?e:hm(e)}(t);for(var n=0,a=t.length;null!=e&&n 1)",pluralsFunc:function(e){return e>1}},af:{name:"Afrikaans",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ak:{name:"Akan",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},am:{name:"Amharic",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},an:{name:"Aragonese",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ar:{name:"Arabic",examples:[{plural:0,sample:0},{plural:1,sample:1},{plural:2,sample:2},{plural:3,sample:3},{plural:4,sample:11},{plural:5,sample:100}],nplurals:6,pluralsText:"nplurals = 6; plural = (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)",pluralsFunc:function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5}},arn:{name:"Mapudungun",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},ast:{name:"Asturian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ay:{name:"Aymará",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},az:{name:"Azerbaijani",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},be:{name:"Belarusian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}},bg:{name:"Bulgarian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},bn:{name:"Bengali",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},bo:{name:"Tibetan",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},br:{name:"Breton",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},brx:{name:"Bodo",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},bs:{name:"Bosnian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}},ca:{name:"Catalan",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},cgg:{name:"Chiga",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},cs:{name:"Czech",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)",pluralsFunc:function(e){return 1===e?0:e>=2&&e<=4?1:2}},csb:{name:"Kashubian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return 1===e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}},cy:{name:"Welsh",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:3},{plural:3,sample:8}],nplurals:4,pluralsText:"nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3)",pluralsFunc:function(e){return 1===e?0:2===e?1:8!==e&&11!==e?2:3}},da:{name:"Danish",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},de:{name:"German",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},doi:{name:"Dogri",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},dz:{name:"Dzongkha",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},el:{name:"Greek",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},en:{name:"English",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},eo:{name:"Esperanto",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},es:{name:"Spanish",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},et:{name:"Estonian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},eu:{name:"Basque",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},fa:{name:"Persian",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},ff:{name:"Fulah",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},fi:{name:"Finnish",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},fil:{name:"Filipino",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},fo:{name:"Faroese",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},fr:{name:"French",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},fur:{name:"Friulian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},fy:{name:"Frisian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ga:{name:"Irish",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:3},{plural:3,sample:7},{plural:4,sample:11}],nplurals:5,pluralsText:"nplurals = 5; plural = (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)",pluralsFunc:function(e){return 1===e?0:2===e?1:e<7?2:e<11?3:4}},gd:{name:"Scottish Gaelic",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:3},{plural:3,sample:20}],nplurals:4,pluralsText:"nplurals = 4; plural = ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3)",pluralsFunc:function(e){return 1===e||11===e?0:2===e||12===e?1:e>2&&e<20?2:3}},gl:{name:"Galician",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},gu:{name:"Gujarati",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},gun:{name:"Gun",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},ha:{name:"Hausa",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},he:{name:"Hebrew",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},hi:{name:"Hindi",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},hne:{name:"Chhattisgarhi",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},hr:{name:"Croatian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}},hu:{name:"Hungarian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},hy:{name:"Armenian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},id:{name:"Indonesian",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},is:{name:"Icelandic",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n % 10 !== 1 || n % 100 === 11)",pluralsFunc:function(e){return e%10!=1||e%100==11}},it:{name:"Italian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ja:{name:"Japanese",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},jbo:{name:"Lojban",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},jv:{name:"Javanese",examples:[{plural:0,sample:0},{plural:1,sample:1}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 0)",pluralsFunc:function(e){return 0!==e}},ka:{name:"Georgian",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},kk:{name:"Kazakh",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},km:{name:"Khmer",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},kn:{name:"Kannada",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ko:{name:"Korean",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},ku:{name:"Kurdish",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},kw:{name:"Cornish",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:3},{plural:3,sample:4}],nplurals:4,pluralsText:"nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)",pluralsFunc:function(e){return 1===e?0:2===e?1:3===e?2:3}},ky:{name:"Kyrgyz",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},lb:{name:"Letzeburgesch",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ln:{name:"Lingala",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},lo:{name:"Lao",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},lt:{name:"Lithuanian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:10}],nplurals:3,pluralsText:"nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2}},lv:{name:"Latvian",examples:[{plural:2,sample:0},{plural:0,sample:1},{plural:1,sample:2}],nplurals:3,pluralsText:"nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)",pluralsFunc:function(e){return e%10==1&&e%100!=11?0:0!==e?1:2}},mai:{name:"Maithili",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},mfe:{name:"Mauritian Creole",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},mg:{name:"Malagasy",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},mi:{name:"Maori",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},mk:{name:"Macedonian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n === 1 || n % 10 === 1 ? 0 : 1)",pluralsFunc:function(e){return 1===e||e%10==1?0:1}},ml:{name:"Malayalam",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},mn:{name:"Mongolian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},mni:{name:"Manipuri",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},mnk:{name:"Mandinka",examples:[{plural:0,sample:0},{plural:1,sample:1},{plural:2,sample:2}],nplurals:3,pluralsText:"nplurals = 3; plural = (n === 0 ? 0 : n === 1 ? 1 : 2)",pluralsFunc:function(e){return 0===e?0:1===e?1:2}},mr:{name:"Marathi",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ms:{name:"Malay",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},mt:{name:"Maltese",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:11},{plural:3,sample:20}],nplurals:4,pluralsText:"nplurals = 4; plural = (n === 1 ? 0 : n === 0 || ( n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20 ) ? 2 : 3)",pluralsFunc:function(e){return 1===e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3}},my:{name:"Burmese",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},nah:{name:"Nahuatl",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},nap:{name:"Neapolitan",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},nb:{name:"Norwegian Bokmal",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ne:{name:"Nepali",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},nl:{name:"Dutch",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},nn:{name:"Norwegian Nynorsk",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},no:{name:"Norwegian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},nso:{name:"Northern Sotho",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},oc:{name:"Occitan",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},or:{name:"Oriya",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},pa:{name:"Punjabi",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},pap:{name:"Papiamento",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},pl:{name:"Polish",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return 1===e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}},pms:{name:"Piemontese",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ps:{name:"Pashto",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},pt:{name:"Portuguese",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},rm:{name:"Romansh",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ro:{name:"Romanian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:20}],nplurals:3,pluralsText:"nplurals = 3; plural = (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2)",pluralsFunc:function(e){return 1===e?0:0===e||e%100>0&&e%100<20?1:2}},ru:{name:"Russian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}},rw:{name:"Kinyarwanda",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},sah:{name:"Yakut",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},sat:{name:"Santali",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},sco:{name:"Scots",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},sd:{name:"Sindhi",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},se:{name:"Northern Sami",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},si:{name:"Sinhala",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},sk:{name:"Slovak",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)",pluralsFunc:function(e){return 1===e?0:e>=2&&e<=4?1:2}},sl:{name:"Slovenian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:3},{plural:3,sample:5}],nplurals:4,pluralsText:"nplurals = 4; plural = (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)",pluralsFunc:function(e){return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3}},so:{name:"Somali",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},son:{name:"Songhay",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},sq:{name:"Albanian",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},sr:{name:"Serbian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}},su:{name:"Sundanese",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},sv:{name:"Swedish",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},sw:{name:"Swahili",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},ta:{name:"Tamil",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},te:{name:"Telugu",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},tg:{name:"Tajik",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},th:{name:"Thai",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},ti:{name:"Tigrinya",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},tk:{name:"Turkmen",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},tr:{name:"Turkish",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},tt:{name:"Tatar",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},ug:{name:"Uyghur",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},uk:{name:"Ukrainian",examples:[{plural:0,sample:1},{plural:1,sample:2},{plural:2,sample:5}],nplurals:3,pluralsText:"nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)",pluralsFunc:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}},ur:{name:"Urdu",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},uz:{name:"Uzbek",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},vi:{name:"Vietnamese",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},wa:{name:"Walloon",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n > 1)",pluralsFunc:function(e){return e>1}},wo:{name:"Wolof",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}},yo:{name:"Yoruba",examples:[{plural:0,sample:1},{plural:1,sample:2}],nplurals:2,pluralsText:"nplurals = 2; plural = (n !== 1)",pluralsFunc:function(e){return 1!==e}},zh:{name:"Chinese",examples:[{plural:0,sample:1}],nplurals:1,pluralsText:"nplurals = 1; plural = 0",pluralsFunc:function(){return 0}}},Fm=Tm;function Tm(e){e=e||{},this.catalogs={},this.locale="",this.domain="messages",this.listeners=[],this.sourceLocale="",e.sourceLocale&&("string"==typeof e.sourceLocale?this.sourceLocale=e.sourceLocale:this.warn("The `sourceLocale` option should be a string")),this.debug="debug"in e&&!0===e.debug}Tm.prototype.on=function(e,t){this.listeners.push({eventName:e,callback:t})},Tm.prototype.off=function(e,t){this.listeners=this.listeners.filter((function(n){return!(n.eventName===e&&n.callback===t)}))},Tm.prototype.emit=function(e,t){for(var n=0;n"u"?(a.warn("No dayNames found"),["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]):window.dayNames},wm.getDayNamesMin=function(){return typeof window.dayNamesMin>"u"?(a.warn("No dayNamesMin found"),["Su","Mo","Tu","We","Th","Fr","Sa"]):window.dayNamesMin},wm.getDayNamesShort=function(){return typeof window.dayNamesShort>"u"?(a.warn("No dayNamesShort found"),["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."]):window.dayNamesShort},wm.getFirstDay=function(){return typeof window.firstDay>"u"?(a.warn("No firstDay found"),1):window.firstDay},wm.getLanguage=function(){return document.documentElement.lang||"en"},wm.getLocale=e,wm.getMonthNames=function(){return typeof window.monthNames>"u"?(a.warn("No monthNames found"),["January","February","March","April","May","June","July","August","September","October","November","December"]):window.monthNames},wm.getMonthNamesShort=function(){return typeof window.monthNamesShort>"u"?(a.warn("No monthNamesShort found"),["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."]):window.monthNamesShort},wm.translate=function(e,t,n,r,i){return typeof OC>"u"?(a.warn("No OC found"),t):OC.L10N.translate(e,t,n,r,i)},wm.translatePlural=function(e,t,n,r,i,o){return typeof OC>"u"?(a.warn("No OC found"),t):OC.L10N.translatePlural(e,t,n,r,i,o)},Yp(),nh(),wm}();function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return this.subtitudePlaceholders(this.gt.gettext(e),t)}},{key:"ngettext",value:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.subtitudePlaceholders(this.gt.ngettext(e,t,n).replace(/%n/g,n.toString()),a)}}]),e}();return Nh}function Em(e){return e.split("-")[0]}function Dm(e){return e.split("-")[1]}function xm(e){return["top","bottom"].includes(Em(e))?"x":"y"}function Nm(e){return"y"===e?"height":"width"}function Om(e){let{reference:t,floating:n,placement:a}=e;const r=t.x+t.width/2-n.width/2,i=t.y+t.height/2-n.height/2;let o;switch(Em(a)){case"top":o={x:r,y:t.y-n.height};break;case"bottom":o={x:r,y:t.y+t.height};break;case"right":o={x:t.x+t.width,y:i};break;case"left":o={x:t.x-n.width,y:i};break;default:o={x:t.x,y:t.y}}const s=xm(a),l=Nm(s);switch(Dm(a)){case"start":o[s]=o[s]-(t[l]/2-n[l]/2);break;case"end":o[s]=o[s]+(t[l]/2-n[l]/2)}return o}function jm(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Mm(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function Rm(e,t){void 0===t&&(t={});const{x:n,y:a,platform:r,rects:i,elements:o,strategy:s}=e,{boundary:l="clippingParents",rootBoundary:u="viewport",elementContext:c="floating",altBoundary:d=!1,padding:p=0}=t,h=jm(p),m=o[d?"floating"===c?"reference":"floating":c],f=await r.getClippingClientRect({element:await r.isElement(m)?m:m.contextElement||await r.getDocumentElement({element:o.floating}),boundary:l,rootBoundary:u}),g=Mm(await r.convertOffsetParentRelativeRectToViewportRelativeRect({rect:"floating"===c?{...i.floating,x:n,y:a}:i.reference,offsetParent:await r.getOffsetParent({element:o.floating}),strategy:s}));return{top:f.top-g.top+h.top,bottom:g.bottom-f.bottom+h.bottom,left:f.left-g.left+h.left,right:g.right-f.right+h.right}}const Pm=Math.min,Bm=Math.max;function Lm(e,t,n){return Bm(e,Pm(t,n))}const zm={left:"right",right:"left",bottom:"top",top:"bottom"};function Im(e){return e.replace(/left|right|bottom|top/g,(e=>zm[e]))}function Ym(e,t){const n="start"===Dm(e),a=xm(e),r=Nm(a);let i="x"===a?n?"right":"left":n?"bottom":"top";return t.reference[r]>t.floating[r]&&(i=Im(i)),{main:i,cross:Im(i)}}const Zm={start:"end",end:"start"};function Um(e){return e.replace(/start|end/g,(e=>Zm[e]))}const Gm=["top","right","bottom","left"].reduce(((e,t)=>e.concat(t,t+"-start",t+"-end")),[]);function Hm(e){return"[object Window]"===(null==e?void 0:e.toString())}function $m(e){if(null==e)return window;if(!Hm(e)){const t=e.ownerDocument;return t&&t.defaultView||window}return e}function qm(e){return $m(e).getComputedStyle(e)}function Vm(e){return Hm(e)?"":e?(e.nodeName||"").toLowerCase():""}function Wm(e){return e instanceof $m(e).HTMLElement}function Km(e){return e instanceof $m(e).Element}function Qm(e){return e instanceof $m(e).ShadowRoot||e instanceof ShadowRoot}function Jm(e){const{overflow:t,overflowX:n,overflowY:a}=qm(e);return/auto|scroll|overlay|hidden/.test(t+a+n)}function Xm(e){return["table","td","th"].includes(Vm(e))}function ef(e){const t=navigator.userAgent.toLowerCase().includes("firefox"),n=qm(e);return"none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||["transform","perspective"].includes(n.willChange)||t&&"filter"===n.willChange||t&&!!n.filter&&"none"!==n.filter}const tf=Math.min,nf=Math.max,af=Math.round;function rf(e,t){void 0===t&&(t=!1);const n=e.getBoundingClientRect();let a=1,r=1;return t&&Wm(e)&&(a=e.offsetWidth>0&&af(n.width)/e.offsetWidth||1,r=e.offsetHeight>0&&af(n.height)/e.offsetHeight||1),{width:n.width/a,height:n.height/r,top:n.top/r,right:n.right/a,bottom:n.bottom/r,left:n.left/a,x:n.left/a,y:n.top/r}}function of(e){return((function(e){return e instanceof $m(e).Node}(e)?e.ownerDocument:e.document)||window.document).documentElement}function sf(e){return Hm(e)?{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}:{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function lf(e){return rf(of(e)).left+sf(e).scrollLeft}function uf(e,t,n){const a=Wm(t),r=of(t),i=rf(e,a&&function(e){const t=rf(e);return af(t.width)!==e.offsetWidth||af(t.height)!==e.offsetHeight}(t));let o={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(a||!a&&"fixed"!==n)if(("body"!==Vm(t)||Jm(r))&&(o=sf(t)),Wm(t)){const e=rf(t,!0);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else r&&(s.x=lf(r));return{x:i.left+o.scrollLeft-s.x,y:i.top+o.scrollTop-s.y,width:i.width,height:i.height}}function cf(e){return"html"===Vm(e)?e:e.assignedSlot||e.parentNode||(Qm(e)?e.host:null)||of(e)}function df(e){return Wm(e)&&"fixed"!==getComputedStyle(e).position?e.offsetParent:null}function pf(e){const t=$m(e);let n=df(e);for(;n&&Xm(n)&&"static"===getComputedStyle(n).position;)n=df(n);return n&&("html"===Vm(n)||"body"===Vm(n)&&"static"===getComputedStyle(n).position&&!ef(n))?t:n||function(e){let t=cf(e);for(;Wm(t)&&!["html","body"].includes(Vm(t));){if(ef(t))return t;t=t.parentNode}return null}(e)||t}function hf(e){return{width:e.offsetWidth,height:e.offsetHeight}}function mf(e){return["html","body","#document"].includes(Vm(e))?e.ownerDocument.body:Wm(e)&&Jm(e)?e:mf(cf(e))}function ff(e,t){var n;void 0===t&&(t=[]);const a=mf(e),r=a===(null==(n=e.ownerDocument)?void 0:n.body),i=$m(a),o=r?[i].concat(i.visualViewport||[],Jm(a)?a:[]):a,s=t.concat(o);return r?s:s.concat(ff(cf(o)))}function gf(e,t){return"viewport"===t?Mm(function(e){const t=$m(e),n=of(e),a=t.visualViewport;let r=n.clientWidth,i=n.clientHeight,o=0,s=0;return a&&(r=a.width,i=a.height,Math.abs(t.innerWidth/a.scale-a.width)<.01&&(o=a.offsetLeft,s=a.offsetTop)),{width:r,height:i,x:o,y:s}}(e)):Km(t)?function(e){const t=rf(e),n=t.top+e.clientTop,a=t.left+e.clientLeft;return{top:n,left:a,x:a,y:n,right:a+e.clientWidth,bottom:n+e.clientHeight,width:e.clientWidth,height:e.clientHeight}}(t):Mm(function(e){var t;const n=of(e),a=sf(e),r=null==(t=e.ownerDocument)?void 0:t.body,i=nf(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),o=nf(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0);let s=-a.scrollLeft+lf(e);const l=-a.scrollTop;return"rtl"===qm(r||n).direction&&(s+=nf(n.clientWidth,r?r.clientWidth:0)-i),{width:i,height:o,x:s,y:l}}(of(e)))}function vf(e){const t=ff(cf(e)),n=["absolute","fixed"].includes(qm(e).position)&&Wm(e)?pf(e):e;return Km(n)?t.filter((e=>Km(e)&&function(e,t){const n=null==t.getRootNode?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&Qm(n)){let n=t;do{if(n&&e===n)return!0;n=n.parentNode||n.host}while(n)}return!1}(e,n)&&"body"!==Vm(e))):[]}const _f={getElementRects:e=>{let{reference:t,floating:n,strategy:a}=e;return{reference:uf(t,pf(n),a),floating:{...hf(n),x:0,y:0}}},convertOffsetParentRelativeRectToViewportRelativeRect:e=>function(e){let{rect:t,offsetParent:n,strategy:a}=e;const r=Wm(n),i=of(n);if(n===i)return t;let o={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((r||!r&&"fixed"!==a)&&(("body"!==Vm(n)||Jm(i))&&(o=sf(n)),Wm(n))){const e=rf(n,!0);s.x=e.x+n.clientLeft,s.y=e.y+n.clientTop}return{...t,x:t.x-o.scrollLeft+s.x,y:t.y-o.scrollTop+s.y}}(e),getOffsetParent:e=>{let{element:t}=e;return pf(t)},isElement:e=>Km(e),getDocumentElement:e=>{let{element:t}=e;return of(t)},getClippingClientRect:e=>function(e){let{element:t,boundary:n,rootBoundary:a}=e;const r=[..."clippingParents"===n?vf(t):[].concat(n),a],i=r[0],o=r.reduce(((e,n)=>{const a=gf(t,n);return e.top=nf(a.top,e.top),e.right=tf(a.right,e.right),e.bottom=tf(a.bottom,e.bottom),e.left=nf(a.left,e.left),e}),gf(t,i));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}(e),getDimensions:e=>{let{element:t}=e;return hf(t)},getClientRects:e=>{let{element:t}=e;return t.getClientRects()}};var Af=Object.defineProperty,bf=Object.defineProperties,yf=Object.getOwnPropertyDescriptors,Ff=Object.getOwnPropertySymbols,Tf=Object.prototype.hasOwnProperty,Cf=Object.prototype.propertyIsEnumerable,kf=(e,t,n)=>t in e?Af(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wf=(e,t)=>{for(var n in t||(t={}))Tf.call(t,n)&&kf(e,n,t[n]);if(Ff)for(var n of Ff(t))Cf.call(t,n)&&kf(e,n,t[n]);return e},Sf=(e,t)=>bf(e,yf(t)),Ef=(e,t)=>{var n={};for(var a in e)Tf.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&Ff)for(var a of Ff(e))t.indexOf(a)<0&&Cf.call(e,a)&&(n[a]=e[a]);return n};function Df(e,t){for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&("object"==typeof t[n]&&e[n]?Df(e[n],t[n]):e[n]=t[n])}const xf={disabled:!1,distance:5,skidding:0,container:"body",boundary:void 0,instantMove:!1,disposeTimeout:5e3,popperTriggers:[],strategy:"absolute",preventOverflow:!0,flip:!0,shift:!0,overflowPadding:0,arrowPadding:0,arrowOverflow:!0,themes:{tooltip:{placement:"top",triggers:["hover","focus","touch"],hideTriggers:e=>[...e,"click"],delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:"..."},dropdown:{placement:"bottom",triggers:["click"],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:"dropdown",triggers:["hover","focus"],popperTriggers:["hover","focus"],delay:{show:0,hide:400}}}};function Nf(e,t){let n,a=xf.themes[e]||{};do{n=a[t],typeof n>"u"?a.$extend?a=xf.themes[a.$extend]||{}:(a=null,n=xf[t]):a=null}while(a);return n}function Of(e){const t=[e];let n=xf.themes[e]||{};do{n.$extend?(t.push(n.$extend),n=xf.themes[n.$extend]||{}):n=null}while(n);return t}let jf=!1;if(typeof window<"u"){jf=!1;try{const e=Object.defineProperty({},"passive",{get(){jf=!0}});window.addEventListener("test",null,e)}catch{}}let Mf=!1;typeof window<"u"&&typeof navigator<"u"&&(Mf=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);const Rf=["auto","top","bottom","left","right"].reduce(((e,t)=>e.concat([t,`${t}-start`,`${t}-end`])),[]),Pf={hover:"mouseenter",focus:"focus",click:"click",touch:"touchstart"},Bf={hover:"mouseleave",focus:"blur",click:"click",touch:"touchend"};function Lf(e,t){const n=e.indexOf(t);-1!==n&&e.splice(n,1)}function zf(){return new Promise((e=>requestAnimationFrame((()=>{requestAnimationFrame(e)}))))}const If=[];let Yf=null;const Zf={};function Uf(e){let t=Zf[e];return t||(t=Zf[e]=[]),t}let Gf=function(){};function Hf(e){return function(){return Nf(this.$props.theme,e)}}typeof window<"u"&&(Gf=window.Element);const $f="__floating-vue__popper";var qf=()=>({name:"VPopper",props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,required:!0},popperNode:{type:Function,required:!0},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:Hf("disabled")},positioningDisabled:{type:Boolean,default:Hf("positioningDisabled")},placement:{type:String,default:Hf("placement"),validator:e=>Rf.includes(e)},delay:{type:[String,Number,Object],default:Hf("delay")},distance:{type:[Number,String],default:Hf("distance")},skidding:{type:[Number,String],default:Hf("skidding")},triggers:{type:Array,default:Hf("triggers")},showTriggers:{type:[Array,Function],default:Hf("showTriggers")},hideTriggers:{type:[Array,Function],default:Hf("hideTriggers")},popperTriggers:{type:Array,default:Hf("popperTriggers")},popperShowTriggers:{type:[Array,Function],default:Hf("popperShowTriggers")},popperHideTriggers:{type:[Array,Function],default:Hf("popperHideTriggers")},container:{type:[String,Object,Gf,Boolean],default:Hf("container")},boundary:{type:[String,Gf],default:Hf("boundary")},strategy:{type:String,validator:e=>["absolute","fixed"].includes(e),default:Hf("strategy")},autoHide:{type:[Boolean,Function],default:Hf("autoHide")},handleResize:{type:Boolean,default:Hf("handleResize")},instantMove:{type:Boolean,default:Hf("instantMove")},eagerMount:{type:Boolean,default:Hf("eagerMount")},popperClass:{type:[String,Array,Object],default:Hf("popperClass")},computeTransformOrigin:{type:Boolean,default:Hf("computeTransformOrigin")},autoMinSize:{type:Boolean,default:Hf("autoMinSize")},autoSize:{type:[Boolean,String],default:Hf("autoSize")},autoMaxSize:{type:Boolean,default:Hf("autoMaxSize")},autoBoundaryMaxSize:{type:Boolean,default:Hf("autoBoundaryMaxSize")},preventOverflow:{type:Boolean,default:Hf("preventOverflow")},overflowPadding:{type:[Number,String],default:Hf("overflowPadding")},arrowPadding:{type:[Number,String],default:Hf("arrowPadding")},arrowOverflow:{type:Boolean,default:Hf("arrowOverflow")},flip:{type:Boolean,default:Hf("flip")},shift:{type:Boolean,default:Hf("shift")},shiftCrossAxis:{type:Boolean,default:Hf("shiftCrossAxis")},noAutoFocus:{type:Boolean,default:Hf("noAutoFocus")}},provide(){return{[$f]:{parentPopper:this}}},inject:{[$f]:{default:null}},data(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0},result:{x:0,y:0,placement:"",strategy:this.strategy,arrow:{x:0,y:0,centerOffset:0},transformOrigin:null},shownChildren:new Set,lastAutoHide:!0}},computed:{popperId(){return null!=this.ariaId?this.ariaId:this.randomId},shouldMountContent(){return this.eagerMount||this.isMounted},slotData(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:"function"==typeof this.autoHide?this.lastAutoHide:this.autoHide,show:this.show,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:Sf(wf({},this.classes),{popperClass:this.popperClass}),result:this.positioningDisabled?null:this.result}},parentPopper(){var e;return null==(e=this[$f])?void 0:e.parentPopper},hasPopperShowTriggerHover(){var e,t;return(null==(e=this.popperTriggers)?void 0:e.includes("hover"))||(null==(t=this.popperShowTriggers)?void 0:t.includes("hover"))}},watch:wf(wf({shown:"$_autoShowHide",disabled(e){e?this.dispose():this.init()},async container(){this.isShown&&(this.$_ensureTeleport(),await this.$_computePosition())}},["triggers","positioningDisabled"].reduce(((e,t)=>(e[t]="$_refreshListeners",e)),{})),["placement","distance","skidding","boundary","strategy","overflowPadding","arrowPadding","preventOverflow","shift","shiftCrossAxis","flip"].reduce(((e,t)=>(e[t]="$_computePosition",e)),{})),created(){this.$_isDisposed=!0,this.randomId=`popper_${[Math.random(),Date.now()].map((e=>e.toString(36).substring(2,10))).join("_")}`,this.autoMinSize&&a.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'),this.autoMaxSize&&a.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.")},mounted(){this.init(),this.$_detachPopperNode()},activated(){this.$_autoShowHide()},deactivated(){this.hide()},beforeDestroy(){this.dispose()},methods:{show({event:e=null,skipDelay:t=!1,force:n=!1}={}){var a,r;(null==(a=this.parentPopper)?void 0:a.lockedChild)&&this.parentPopper.lockedChild!==this||(this.$_pendingHide=!1,(n||!this.disabled)&&((null==(r=this.parentPopper)?void 0:r.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.$_scheduleShow(e,t),this.$emit("show"),this.$_showFrameLocked=!0,requestAnimationFrame((()=>{this.$_showFrameLocked=!1}))),this.$emit("update:shown",!0))},hide({event:e=null,skipDelay:t=!1,skipAiming:n=!1}={}){var a;if(!this.$_hideInProgress){if(this.shownChildren.size>0)return void(this.$_pendingHide=!0);if(!n&&this.hasPopperShowTriggerHover&&this.$_isAimingPopper())return void(this.parentPopper&&(this.parentPopper.lockedChild=this,clearTimeout(this.parentPopper.lockedChildTimer),this.parentPopper.lockedChildTimer=setTimeout((()=>{this.parentPopper.lockedChild===this&&(this.parentPopper.lockedChild.hide({skipDelay:t}),this.parentPopper.lockedChild=null)}),1e3)));(null==(a=this.parentPopper)?void 0:a.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.$_pendingHide=!1,this.$_scheduleHide(e,t),this.$emit("hide"),this.$emit("update:shown",!1)}},init(){!this.$_isDisposed||(this.$_isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_referenceNode=this.referenceNode(),this.$_targetNodes=this.targetNodes().filter((e=>e.nodeType===e.ELEMENT_NODE)),this.$_popperNode=this.popperNode(),this.$_innerNode=this.$_popperNode.querySelector(".v-popper__inner"),this.$_arrowNode=this.$_popperNode.querySelector(".v-popper__arrow-container"),this.$_swapTargetAttrs("title","data-original-title"),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show())},dispose(){this.$_isDisposed||(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.$_detachPopperNode(),this.isMounted=!1,this.isShown=!1,this.$_updateParentShownChildren(!1),this.$_swapTargetAttrs("data-original-title","title"),this.$emit("dispose"))},async onResize(){this.isShown&&(await this.$_computePosition(),this.$emit("resize"))},async $_computePosition(){var e;if(this.$_isDisposed||this.positioningDisabled)return;const t={strategy:this.strategy,middleware:[]};(this.distance||this.skidding)&&t.middleware.push(function(e){return void 0===e&&(e=0),{name:"offset",options:e,fn(t){const{x:n,y:a,placement:r,rects:i}=t,o=function(e){let{placement:t,rects:n,value:a}=e;const r=Em(t),i=["left","top"].includes(r)?-1:1,o="function"==typeof a?a({...n,placement:t}):a,{mainAxis:s,crossAxis:l}="number"==typeof o?{mainAxis:o,crossAxis:0}:{mainAxis:0,crossAxis:0,...o};return"x"===xm(r)?{x:l,y:s*i}:{x:s*i,y:l}}({placement:r,rects:i,value:e});return{x:n+o.x,y:a+o.y,data:o}}}}({mainAxis:this.distance,crossAxis:this.skidding}));const n=this.placement.startsWith("auto");if(n?t.middleware.push(function(e){return void 0===e&&(e={}),{name:"autoPlacement",options:e,async fn(t){var n,a,r,i,o,s;const{x:l,y:u,rects:c,middlewareData:d,placement:p}=t,{alignment:h=null,allowedPlacements:m=Gm,autoAlignment:f=!0,...g}=e;if(null!=(n=d.autoPlacement)&&n.skip)return{};const v=function(e,t,n){return(e?[...n.filter((t=>Dm(t)===e)),...n.filter((t=>Dm(t)!==e))]:n.filter((e=>Em(e)===e))).filter((n=>!e||Dm(n)===e||!!t&&Um(n)!==n))}(h,f,m),_=await Rm(t,g),A=null!=(a=null==(r=d.autoPlacement)?void 0:r.index)?a:0,b=v[A],{main:y,cross:F}=Ym(b,c);if(p!==b)return{x:l,y:u,reset:{placement:v[0]}};const T=[_[Em(b)],_[y],_[F]],C=[...null!=(i=null==(o=d.autoPlacement)?void 0:o.overflows)?i:[],{placement:b,overflows:T}],k=v[A+1];if(k)return{data:{index:A+1,overflows:C},reset:{placement:k}};const w=C.slice().sort(((e,t)=>e.overflows[0]-t.overflows[0])),S=null==(s=w.find((e=>{let{overflows:t}=e;return t.every((e=>e<=0))})))?void 0:s.placement;return{data:{skip:!0},reset:{placement:null!=S?S:w[0].placement}}}}}({alignment:null!=(e=this.placement.split("-")[1])?e:""})):t.placement=this.placement,this.preventOverflow&&(this.shift&&t.middleware.push(function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:a,placement:r}=t,{mainAxis:i=!0,crossAxis:o=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=e,u={x:n,y:a},c=await Rm(t,l),d=xm(Em(r)),p=function(e){return"x"===e?"y":"x"}(d);let h=u[d],m=u[p];if(i){const e="y"===d?"bottom":"right";h=Lm(h+c["y"===d?"top":"left"],h,h-c[e])}if(o){const e="y"===p?"bottom":"right";m=Lm(m+c["y"===p?"top":"left"],m,m-c[e])}const f=s.fn({...t,[d]:h,[p]:m});return{...f,data:{x:f.x-n,y:f.y-a}}}}}({padding:this.overflowPadding,boundary:this.boundary,crossAxis:this.shiftCrossAxis})),!n&&this.flip&&t.middleware.push(function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,a;const{placement:r,middlewareData:i,rects:o,initialPlacement:s}=t;if(null!=(n=i.flip)&&n.skip)return{};const{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:c,fallbackStrategy:d="bestFit",flipAlignment:p=!0,...h}=e,m=Em(r),f=c||(m!==s&&p?function(e){const t=Im(e);return[Um(e),t,Um(t)]}(s):[Im(s)]),g=[s,...f],v=await Rm(t,h),_=[];let A=(null==(a=i.flip)?void 0:a.overflows)||[];if(l&&_.push(v[m]),u){const{main:e,cross:t}=Ym(r,o);_.push(v[e],v[t])}if(A=[...A,{placement:r,overflows:_}],!_.every((e=>e<=0))){var b,y;const e=(null!=(b=null==(y=i.flip)?void 0:y.index)?b:0)+1,t=g[e];if(t)return{data:{index:e,overflows:A},reset:{placement:t}};let n="bottom";switch(d){case"bestFit":{var F;const e=null==(F=A.slice().sort(((e,t)=>e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)-t.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)))[0])?void 0:F.placement;e&&(n=e);break}case"initialPlacement":n=s}return{data:{skip:!0},reset:{placement:n}}}return{}}}}({padding:this.overflowPadding,boundary:this.boundary}))),t.middleware.push((e=>({name:"arrow",options:e,async fn(t){const{element:n,padding:a=0}=null!=e?e:{},{x:r,y:i,placement:o,rects:s,platform:l}=t;if(null==n)return{};const u=jm(a),c={x:r,y:i},d=xm(Em(o)),p=Nm(d),h=await l.getDimensions({element:n}),m="y"===d?"top":"left",f="y"===d?"bottom":"right",g=s.reference[p]+s.reference[d]-c[d]-s.floating[p],v=c[d]-s.reference[d],_=await l.getOffsetParent({element:n}),A=_?"y"===d?_.clientHeight||0:_.clientWidth||0:0,b=g/2-v/2,y=u[m],F=A-h[p]-u[f],T=A/2-h[p]/2+b,C=Lm(y,T,F);return{data:{[d]:C,centerOffset:T-C}}}}))({element:this.$_arrowNode,padding:this.arrowPadding})),this.arrowOverflow&&t.middleware.push({name:"arrowOverflow",fn:({placement:e,rects:t,middlewareData:n})=>{let a;const{centerOffset:r}=n.arrow;return a=e.startsWith("top")||e.startsWith("bottom")?Math.abs(r)>t.reference.width/2:Math.abs(r)>t.reference.height/2,{data:{overflow:a}}}}),this.autoMinSize||this.autoSize){const e=this.autoSize?this.autoSize:this.autoMinSize?"min":null;t.middleware.push({name:"autoSize",fn:({rects:t,placement:n,middlewareData:a})=>{var r;if(null!=(r=a.autoSize)&&r.skip)return{};let i,o;return n.startsWith("top")||n.startsWith("bottom")?i=t.reference.width:o=t.reference.height,this.$_innerNode.style["min"===e?"minWidth":"max"===e?"maxWidth":"width"]=null!=i?`${i}px`:null,this.$_innerNode.style["min"===e?"minHeight":"max"===e?"maxHeight":"height"]=null!=o?`${o}px`:null,{data:{skip:!0},reset:{rects:!0}}}})}(this.autoMaxSize||this.autoBoundaryMaxSize)&&(this.$_innerNode.style.maxWidth=null,this.$_innerNode.style.maxHeight=null,t.middleware.push(function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n;const{placement:a,rects:r,middlewareData:i}=t,{apply:o,...s}=e;if(null!=(n=i.size)&&n.skip)return{};const l=await Rm(t,s),u=Em(a),c="end"===Dm(a);let d,p;"top"===u||"bottom"===u?(d=u,p=c?"left":"right"):(p=u,d=c?"top":"bottom");const h=Bm(l.left,0),m=Bm(l.right,0),f=Bm(l.top,0),g=Bm(l.bottom,0),v={height:r.floating.height-(["left","right"].includes(a)?2*(0!==f||0!==g?f+g:Bm(l.top,l.bottom)):l[d]),width:r.floating.width-(["top","bottom"].includes(a)?2*(0!==h||0!==m?h+m:Bm(l.left,l.right)):l[p])};return null==o||o({...v,...r}),{data:{skip:!0},reset:{rects:!0}}}}}({boundary:this.boundary,padding:this.overflowPadding,apply:({width:e,height:t})=>{this.$_innerNode.style.maxWidth=null!=e?`${e}px`:null,this.$_innerNode.style.maxHeight=null!=t?`${t}px`:null}})));const a=await((e,t,n)=>(async(e,t,n)=>{const{placement:a="bottom",strategy:r="absolute",middleware:i=[],platform:o}=n;let s=await o.getElementRects({reference:e,floating:t,strategy:r}),{x:l,y:u}=Om({...s,placement:a}),c=a,d={};for(let n=0;n0?this.$_pendingHide=!0:(this.$_updateParentShownChildren(!1),this.$_hideInProgress=!0,clearTimeout(this.$_scheduleTimer),this.isShown&&(Yf=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay("hide")))},$_computeDelay(e){const t=this.delay;return parseInt(t&&t[e]||t||0)},async $_applyShow(e=!1){clearTimeout(this.$_disposeTimer),clearTimeout(this.$_scheduleTimer),this.skipTransition=e,!this.isShown&&(this.$_ensureTeleport(),await zf(),await this.$_computePosition(),await this.$_applyShowEffect(),this.positioningDisabled||this.$_registerEventListeners([...ff(this.$_referenceNode),...ff(this.$_popperNode)],"scroll",(()=>{this.$_computePosition()})))},async $_applyShowEffect(){if(this.$_hideInProgress)return;if(this.computeTransformOrigin){const e=this.$_referenceNode.getBoundingClientRect(),t=this.$_popperNode.querySelector(".v-popper__wrapper"),n=t.parentNode.getBoundingClientRect(),a=e.x+e.width/2-(n.left+t.offsetLeft),r=e.y+e.height/2-(n.top+t.offsetTop);this.result.transformOrigin=`${a}px ${r}px`}this.isShown=!0,this.$_applyAttrsToTarget({"aria-describedby":this.popperId,"data-popper-shown":""});const e=this.showGroup;if(e){let t;for(let n=0;n0)return this.$_pendingHide=!0,void(this.$_hideInProgress=!1);if(clearTimeout(this.$_scheduleTimer),!this.isShown)return;this.skipTransition=e,Lf(If,this),0===If.length&&document.body.classList.remove("v-popper--some-open");for(const e of Of(this.theme)){const t=Uf(e);Lf(t,this),0===t.length&&document.body.classList.remove(`v-popper--some-open--${e}`)}Yf===this&&(Yf=null),this.isShown=!1,this.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),clearTimeout(this.$_disposeTimer);const t=Nf(this.theme,"disposeTimeout");null!==t&&(this.$_disposeTimer=setTimeout((()=>{this.$_popperNode&&(this.$_detachPopperNode(),this.isMounted=!1)}),t)),this.$_removeEventListeners("scroll"),this.$emit("apply-hide"),this.classes.showFrom=!1,this.classes.showTo=!1,this.classes.hideFrom=!0,this.classes.hideTo=!1,await zf(),this.classes.hideFrom=!1,this.classes.hideTo=!0},$_autoShowHide(){this.shown?this.show():this.hide()},$_ensureTeleport(){if(this.$_isDisposed)return;let e=this.container;if("string"==typeof e?e=window.document.querySelector(e):!1===e&&(e=this.$_targetNodes[0].parentNode),!e)throw new Error("No container for popover: "+this.container);e.appendChild(this.$_popperNode),this.isMounted=!0},$_addEventListeners(){const e=e=>{this.isShown&&!this.$_hideInProgress||(e.usedByTooltip=!0,!this.$_preventShow&&this.show({event:e}))};this.$_registerTriggerListeners(this.$_targetNodes,Pf,this.triggers,this.showTriggers,e),this.$_registerTriggerListeners([this.$_popperNode],Pf,this.popperTriggers,this.popperShowTriggers,e);const t=e=>t=>{t.usedByTooltip||this.hide({event:t,skipAiming:e})};this.$_registerTriggerListeners(this.$_targetNodes,Bf,this.triggers,this.hideTriggers,t(!1)),this.$_registerTriggerListeners([this.$_popperNode],Bf,this.popperTriggers,this.popperHideTriggers,t(!0))},$_registerEventListeners(e,t,n){this.$_events.push({targetNodes:e,eventType:t,handler:n}),e.forEach((e=>e.addEventListener(t,n,jf?{passive:!0}:void 0)))},$_registerTriggerListeners(e,t,n,a,r){let i=n;null!=a&&(i="function"==typeof a?a(i):a),i.forEach((n=>{const a=t[n];a&&this.$_registerEventListeners(e,a,r)}))},$_removeEventListeners(e){const t=[];this.$_events.forEach((n=>{const{targetNodes:a,eventType:r,handler:i}=n;e&&e!==r?t.push(n):a.forEach((e=>e.removeEventListener(r,i)))})),this.$_events=t},$_refreshListeners(){this.$_isDisposed||(this.$_removeEventListeners(),this.$_addEventListeners())},$_handleGlobalClose(e,t=!1){this.$_showFrameLocked||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),t&&(this.$_preventShow=!0,setTimeout((()=>{this.$_preventShow=!1}),300)))},$_detachPopperNode(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs(e,t){for(const n of this.$_targetNodes){const a=n.getAttribute(e);a&&(n.removeAttribute(e),n.setAttribute(t,a))}},$_applyAttrsToTarget(e){for(const t of this.$_targetNodes)for(const n in e){const a=e[n];null==a?t.removeAttribute(n):t.setAttribute(n,a)}},$_updateParentShownChildren(e){let t=this.parentPopper;for(;t;)e?t.shownChildren.add(this.randomId):(t.shownChildren.delete(this.randomId),t.$_pendingHide&&t.hide()),t=t.parentPopper},$_isAimingPopper(){const e=this.$el.getBoundingClientRect();if(eg>=e.left&&eg<=e.right&&tg>=e.top&&tg<=e.bottom){const e=this.$_popperNode.getBoundingClientRect(),t=eg-Jf,n=tg-Xf,a=e.left+e.width/2-Jf+(e.top+e.height/2)-Xf+e.width+e.height,r=Jf+t*a,i=Xf+n*a;return ng(Jf,Xf,r,i,e.left,e.top,e.left,e.bottom)||ng(Jf,Xf,r,i,e.left,e.top,e.right,e.top)||ng(Jf,Xf,r,i,e.right,e.top,e.right,e.bottom)||ng(Jf,Xf,r,i,e.left,e.bottom,e.right,e.bottom)}return!1}},render(){return this.$scopedSlots.default(this.slotData)[0]}});function Vf(e){for(let t=0;t=0;a--){const r=If[a];try{const a=r.$_containsGlobalTarget=Kf(r,e);r.$_pendingHide=!1,requestAnimationFrame((()=>{if(r.$_pendingHide=!1,!n[r.randomId]&&Qf(r,a,e)){if(r.$_handleGlobalClose(e,t),!e.closeAllPopover&&e.closePopover&&a){let e=r.parentPopper;for(;e;)n[e.randomId]=!0,e=e.parentPopper;return}let i=r.parentPopper;for(;i&&Qf(i,i.$_containsGlobalTarget,e);)i.$_handleGlobalClose(e,t),i=i.parentPopper}}))}catch{}}}function Kf(e,t){const n=e.popperNode();return e.$_mouseDownContains||n.contains(t.target)}function Qf(e,t,n){return n.closeAllPopover||n.closePopover&&t||function(e,t){if("function"==typeof e.autoHide){const n=e.autoHide(t);return e.lastAutoHide=n,n}return e.autoHide}(e,n)&&!t}typeof document<"u"&&typeof window<"u"&&(Mf?(document.addEventListener("touchstart",Vf,!jf||{passive:!0,capture:!0}),document.addEventListener("touchend",(function(e){Wf(e,!0)}),!jf||{passive:!0,capture:!0})):(window.addEventListener("mousedown",Vf,!0),window.addEventListener("click",(function(e){Wf(e)}),!0)),window.addEventListener("resize",(function(e){for(let t=0;t=0&&l<=1&&u>=0&&u<=1}var ag;function rg(){rg.init||(rg.init=!0,ag=-1!==function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var n=e.indexOf("rv:");return parseInt(e.substring(n+3,e.indexOf(".",n)),10)}var a=e.indexOf("Edge/");return a>0?parseInt(e.substring(a+5,e.indexOf(".",a)),10):-1}())}typeof window<"u"&&window.addEventListener("mousemove",(e=>{Jf=eg,Xf=tg,eg=e.clientX,tg=e.clientY}),jf?{passive:!0}:void 0);var ig={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},mounted:function(){var e=this;rg(),this.$nextTick((function(){e._w=e.$el.offsetWidth,e._h=e.$el.offsetHeight,e.emitOnMount&&e.emitSize()}));var t=document.createElement("object");this._resizeObject=t,t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex",-1),t.onload=this.addResizeHandlers,t.type="text/html",ag&&this.$el.appendChild(t),t.data="about:blank",ag||this.$el.appendChild(t)},beforeDestroy:function(){this.removeResizeHandlers()},methods:{compareAndNotify:function(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize:function(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!ag&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}},og=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})};og._withStripped=!0;var sg=function(e,t,n,a,r,i,o,s,l,u){"boolean"!=typeof o&&(s,s=o,o=!1);var c,d="function"==typeof n?n.options:n;if(e&&e.render&&(d.render=e.render,d.staticRenderFns=e.staticRenderFns,d._compiled=!0),a&&(d._scopeId=a),c)if(d.functional){var p=d.render;d.render=function(e,t){return c.call(t),p(e,t)}}else{var h=d.beforeCreate;d.beforeCreate=h?[].concat(h,c):[c]}return n}({render:og,staticRenderFns:[]},0,ig,"data-v-8859cc6c",0,0,!1,void 0),lg={version:"1.0.1",install:function(e){e.component("resize-observer",sg),e.component("ResizeObserver",sg)}},ug=null;typeof window<"u"?ug=window.Vue:typeof n.g<"u"&&(ug=n.g.Vue),ug&&ug.use(lg);var cg={computed:{themeClass(){return function(e){const t=[e];let n=xf.themes[e]||{};do{n.$extend&&!n.$resetCss?(t.push(n.$extend),n=xf.themes[n.$extend]||{}):n=null}while(n);return t.map((e=>`v-popper--theme-${e}`))}(this.theme)}}},dg={name:"VPopperContent",components:{ResizeObserver:sg},mixins:[cg],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object,result:Object},methods:{toPx:e=>null==e||isNaN(e)?null:`${e}px`}};function pg(e,t,n,a,r,i,o,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),o?(l=function(e){!(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)&&typeof __VUE_SSR_CONTEXT__<"u"&&(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}const hg={};var mg=pg(dg,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{ref:"popover",staticClass:"v-popper__popper",class:[e.themeClass,e.classes.popperClass,{"v-popper__popper--shown":e.shown,"v-popper__popper--hidden":!e.shown,"v-popper__popper--show-from":e.classes.showFrom,"v-popper__popper--show-to":e.classes.showTo,"v-popper__popper--hide-from":e.classes.hideFrom,"v-popper__popper--hide-to":e.classes.hideTo,"v-popper__popper--skip-transition":e.skipTransition,"v-popper__popper--arrow-overflow":e.result&&e.result.arrow.overflow,"v-popper__popper--no-positioning":!e.result}],style:e.result?{position:e.result.strategy,transform:"translate3d("+Math.round(e.result.x)+"px,"+Math.round(e.result.y)+"px,0)"}:void 0,attrs:{id:e.popperId,"aria-hidden":e.shown?"false":"true",tabindex:e.autoHide?0:void 0,"data-popper-placement":e.result?e.result.placement:void 0},on:{keyup:function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;e.autoHide&&e.$emit("hide")}}},[n("div",{staticClass:"v-popper__backdrop",on:{click:function(t){e.autoHide&&e.$emit("hide")}}}),n("div",{staticClass:"v-popper__wrapper",style:e.result?{transformOrigin:e.result.transformOrigin}:void 0},[n("div",{ref:"inner",staticClass:"v-popper__inner"},[e.mounted?[n("div",[e._t("default")],2),e.handleResize?n("ResizeObserver",{on:{notify:function(t){return e.$emit("resize",t)}}}):e._e()]:e._e()],2),n("div",{ref:"arrow",staticClass:"v-popper__arrow-container",style:e.result?{left:e.toPx(e.result.arrow.x),top:e.toPx(e.result.arrow.y)}:void 0},[n("div",{staticClass:"v-popper__arrow-outer"}),n("div",{staticClass:"v-popper__arrow-inner"})])])])}),[],!1,(function(e){for(let e in hg)this[e]=hg[e]}),null,null,null),fg=mg.exports,gg={methods:{show(...e){return this.$refs.popper.show(...e)},hide(...e){return this.$refs.popper.hide(...e)},dispose(...e){return this.$refs.popper.dispose(...e)},onResize(...e){return this.$refs.popper.onResize(...e)}}},vg={name:"VPopperWrapper",components:{Popper:qf(),PopperContent:fg},mixins:[gg,cg],inheritAttrs:!1,props:{theme:{type:String,default(){return this.$options.vPopperTheme}}},methods:{getTargetNodes(){return Array.from(this.$refs.reference.children).filter((e=>e!==this.$refs.popperContent.$el))}}};const _g={};var Ag=pg(vg,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Popper",e._g(e._b({ref:"popper",attrs:{theme:e.theme,"target-nodes":e.getTargetNodes,"reference-node":function(){return e.$refs.reference},"popper-node":function(){return e.$refs.popperContent.$el}},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.popperId,r=t.isShown,i=t.shouldMountContent,o=t.skipTransition,s=t.autoHide,l=t.show,u=t.hide,c=t.handleResize,d=t.onResize,p=t.classes,h=t.result;return[n("div",{ref:"reference",staticClass:"v-popper",class:[e.themeClass,{"v-popper--shown":r}]},[e._t("default",null,{shown:r,show:l,hide:u}),n("PopperContent",{ref:"popperContent",attrs:{"popper-id":a,theme:e.theme,shown:r,mounted:i,"skip-transition":o,"auto-hide":s,"handle-resize":c,classes:p,result:h},on:{hide:u,resize:d}},[e._t("popper",null,{shown:r,hide:u})],2)],2)]}}],null,!0)},"Popper",e.$attrs,!1),e.$listeners))}),[],!1,(function(e){for(let e in _g)this[e]=_g[e]}),null,null,null),bg=Ag.exports,yg=Sf(wf({},bg),{name:"VDropdown",vPopperTheme:"dropdown"});const Fg={};var Tg=pg(yg,void 0,void 0,!1,(function(e){for(let e in Fg)this[e]=Fg[e]}),null,null,null).exports,Cg=Sf(wf({},bg),{name:"VMenu",vPopperTheme:"menu"});const kg={};var wg=pg(Cg,void 0,void 0,!1,(function(e){for(let e in kg)this[e]=kg[e]}),null,null,null).exports,Sg=Sf(wf({},bg),{name:"VTooltip",vPopperTheme:"tooltip"});const Eg={};var Dg=pg(Sg,void 0,void 0,!1,(function(e){for(let e in Eg)this[e]=Eg[e]}),null,null,null).exports,xg={name:"VTooltipDirective",components:{Popper:qf(),PopperContent:fg},mixins:[gg],inheritAttrs:!1,props:{theme:{type:String,default:"tooltip"},html:{type:Boolean,default(){return Nf(this.theme,"html")}},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default(){return Nf(this.theme,"loadingContent")}}},data:()=>({asyncContent:null}),computed:{isContentAsync(){return"function"==typeof this.content},loading(){return this.isContentAsync&&null==this.asyncContent},finalContent(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler(){this.fetchContent(!0)},immediate:!0},async finalContent(e){await this.$nextTick(),this.$refs.popper.onResize()}},created(){this.$_fetchId=0},methods:{fetchContent(e){if("function"==typeof this.content&&this.$_isShown&&(e||!this.$_loading&&null==this.asyncContent)){this.asyncContent=null,this.$_loading=!0;const e=++this.$_fetchId,t=this.content(this);t.then?t.then((t=>this.onResult(e,t))):this.onResult(e,t)}},onResult(e,t){e===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=t)},onShow(){this.$_isShown=!0,this.fetchContent()},onHide(){this.$_isShown=!1}}};const Ng={};var Og=pg(xg,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Popper",e._g(e._b({ref:"popper",attrs:{theme:e.theme,"popper-node":function(){return e.$refs.popperContent.$el}},on:{"apply-show":e.onShow,"apply-hide":e.onHide},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.popperId,r=t.isShown,i=t.shouldMountContent,o=t.skipTransition,s=t.autoHide,l=t.hide,u=t.handleResize,c=t.onResize,d=t.classes,p=t.result;return[n("PopperContent",{ref:"popperContent",class:{"v-popper--tooltip-loading":e.loading},attrs:{"popper-id":a,theme:e.theme,shown:r,mounted:i,"skip-transition":o,"auto-hide":s,"handle-resize":u,classes:d,result:p},on:{hide:l,resize:c}},[e.html?n("div",{domProps:{innerHTML:e._s(e.finalContent)}}):n("div",{domProps:{textContent:e._s(e.finalContent)}})])]}}])},"Popper",e.$attrs,!1),e.$listeners))}),[],!1,(function(e){for(let e in Ng)this[e]=Ng[e]}),null,null,null),jg=Og.exports;const Mg="v-popper--has-tooltip";function Rg(e,t,n){let a;const r=typeof t;return a="string"===r?{content:t}:t&&"object"===r?t:{content:!1},a.placement=function(e,t){let n=e.placement;if(!n&&t)for(const e of Rf)t[e]&&(n=e);return n||(n=Nf(e.theme||"tooltip","placement")),n}(a,n),a.targetNodes=()=>[e],a.referenceNode=()=>e,a}function Pg(e,t,n){const a=Rg(e,t,n),r=e.$_popper=new Ma({mixins:[gg],data:()=>({options:a}),render(e){const t=this.options,{theme:n,html:a,content:r,loadingContent:i}=t,o=Ef(t,["theme","html","content","loadingContent"]);return e(jg,{props:{theme:n,html:a,content:r,loadingContent:i},attrs:o,ref:"popper"})},devtools:{hide:!0}}),i=document.createElement("div");return document.body.appendChild(i),r.$mount(i),e.classList&&e.classList.add(Mg),r}function Bg(e){e.$_popper&&(e.$_popper.$destroy(),delete e.$_popper,delete e.$_popperOldShown),e.classList&&e.classList.remove(Mg)}function Lg(e,{value:t,oldValue:n,modifiers:a}){const r=Rg(e,t,a);if(!r.content||Nf(r.theme||"tooltip","disabled"))Bg(e);else{let n;e.$_popper?(n=e.$_popper,n.options=r):n=Pg(e,t,a),typeof t.shown<"u"&&t.shown!==e.$_popperOldShown&&(e.$_popperOldShown=t.shown,t.shown?n.show():n.hide())}}var zg={bind:Lg,update:Lg,unbind(e){Bg(e)}};function Ig(e){e.addEventListener("click",Zg),e.addEventListener("touchstart",Ug,!!jf&&{passive:!0})}function Yg(e){e.removeEventListener("click",Zg),e.removeEventListener("touchstart",Ug),e.removeEventListener("touchend",Gg),e.removeEventListener("touchcancel",Hg)}function Zg(e){const t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function Ug(e){if(1===e.changedTouches.length){const t=e.currentTarget;t.$_vclosepopover_touch=!0;const n=e.changedTouches[0];t.$_vclosepopover_touchPoint=n,t.addEventListener("touchend",Gg),t.addEventListener("touchcancel",Hg)}}function Gg(e){const t=e.currentTarget;if(t.$_vclosepopover_touch=!1,1===e.changedTouches.length){const n=e.changedTouches[0],a=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(n.screenY-a.screenY)<20&&Math.abs(n.screenX-a.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function Hg(e){e.currentTarget.$_vclosepopover_touch=!1}var $g={bind(e,{value:t,modifiers:n}){e.$_closePopoverModifiers=n,(typeof t>"u"||t)&&Ig(e)},update(e,{value:t,oldValue:n,modifiers:a}){e.$_closePopoverModifiers=a,t!==n&&(typeof t>"u"||t?Ig(e):Yg(e))},unbind(e){Yg(e)}};const qg=xf,Vg=zg,Wg=$g,Kg=Tg,Qg=wg,Jg=qf,Xg=fg,ev=gg,tv=bg,nv=cg,av=Dg,rv=jg;function iv(e,t={}){e.$_vTooltipInstalled||(e.$_vTooltipInstalled=!0,Df(xf,t),e.directive("tooltip",zg),e.directive("close-popper",$g),e.component("v-tooltip",Dg),e.component("VTooltip",Dg),e.component("v-dropdown",Tg),e.component("VDropdown",Tg),e.component("v-menu",wg),e.component("VMenu",wg))}const ov={version:"1.0.0-beta.19",install:iv,options:xf};let sv=null;typeof window<"u"?sv=window.Vue:typeof n.g<"u"&&(sv=n.g.Vue),sv&&sv.use(ov);const lv=Object.freeze(Object.defineProperty({__proto__:null,Dropdown:Kg,HIDE_EVENT_MAP:Bf,Menu:Qg,Popper:Jg,PopperContent:Xg,PopperMethods:ev,PopperWrapper:tv,SHOW_EVENT_MAP:Pf,ThemeClass:nv,Tooltip:av,TooltipDirective:rv,VClosePopper:Wg,VTooltip:Vg,createTooltip:Pg,default:ov,destroyTooltip:Bg,hideAllPoppers:function(){for(let e=0;esummary:first-of-type","details"],dv=cv.join(","),pv=typeof Element>"u",hv=pv?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,mv=!pv&&Element.prototype.getRootNode?function(e){return e.getRootNode()}:function(e){return e.ownerDocument},fv=function(e,t,n){var a=Array.prototype.slice.apply(e.querySelectorAll(dv));return t&&hv.call(e,dv)&&a.unshift(e),a.filter(n)},gv=function e(t,n,a){for(var r=[],i=Array.from(t);i.length;){var o=i.shift();if("SLOT"===o.tagName){var s=o.assignedElements(),l=e(s.length?s:o.children,!0,a);a.flatten?r.push.apply(r,l):r.push({scopeParent:o,candidates:l})}else{hv.call(o,dv)&&a.filter(o)&&(n||!t.includes(o))&&r.push(o);var u=o.shadowRoot||"function"==typeof a.getShadowRoot&&a.getShadowRoot(o),c=!a.shadowRootFilter||a.shadowRootFilter(o);if(u&&c){var d=e(!0===u?o.children:u.children,!0,a);a.flatten?r.push.apply(r,d):r.push({scopeParent:o,candidates:d})}else i.unshift.apply(i,o.children)}}return r},vv=function(e,t){return e.tabIndex<0&&(t||/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||e.isContentEditable)&&isNaN(parseInt(e.getAttribute("tabindex"),10))?0:e.tabIndex},_v=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Av=function(e){return"INPUT"===e.tagName},bv=function(e){var t=e.getBoundingClientRect(),n=t.width,a=t.height;return 0===n&&0===a},yv=function(e,t){return!(t.disabled||function(e){return Av(e)&&"hidden"===e.type}(t)||function(e,t){var n=t.displayCheck,a=t.getShadowRoot;if("hidden"===getComputedStyle(e).visibility)return!0;var r=hv.call(e,"details>summary:first-of-type")?e.parentElement:e;if(hv.call(r,"details:not([open]) *"))return!0;if(n&&"full"!==n&&"legacy-full"!==n){if("non-zero-area"===n)return bv(e)}else{if("function"==typeof a){for(var i=e;e;){var o=e.parentElement,s=mv(e);if(o&&!o.shadowRoot&&!0===a(o))return bv(e);e=e.assignedSlot?e.assignedSlot:o||s===e.ownerDocument?o:s.host}e=i}if(function(e){for(var t,n=mv(e).host,a=!!(null!==(t=n)&&void 0!==t&&t.ownerDocument.contains(n)||e.ownerDocument.contains(e));!a&&n;){var r;a=!(null===(r=n=mv(n).host)||void 0===r||!r.ownerDocument.contains(n))}return a}(e))return!e.getClientRects().length;if("legacy-full"!==n)return!0}return!1}(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n=0)},Cv=function e(t){var n=[],a=[];return t.forEach((function(t,r){var i=!!t.scopeParent,o=i?t.scopeParent:t,s=vv(o,i),l=i?e(t.candidates):o;0===s?i?n.push.apply(n,l):n.push(o):a.push({documentOrder:r,tabIndex:s,item:t,isScope:i,content:l})})),a.sort(_v).reduce((function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e}),[]).concat(n)},kv=function(e,t){var n;return n=(t=t||{}).getShadowRoot?gv([e],t.includeContainer,{filter:Fv.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Tv}):fv(e,t.includeContainer,Fv.bind(null,t)),Cv(n)},wv=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==hv.call(e,dv)&&Fv(t,e)},Sv=cv.concat("iframe").join(","),Ev=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==hv.call(e,Sv)&&yv(t,e)};function Dv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function xv(e){for(var t=1;t1?t-1:0),a=1;a1?n-1:0),o=1;o=0)e=a.activeElement;else{var t=o.tabbableGroups[0];e=t&&t.firstTabbableNode||u("fallbackFocus")}if(!e)throw new Error("Your focus-trap needs to have at least one focusable element");return e},d=function(){if(o.containerGroups=o.containers.map((function(e){var t=kv(e,i.tabbableOptions),n=function(e,t){return(t=t||{}).getShadowRoot?gv([e],t.includeContainer,{filter:yv.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):fv(e,t.includeContainer,yv.bind(null,t))}(e,i.tabbableOptions);return{container:e,tabbableNodes:t,focusableNodes:n,firstTabbableNode:t.length>0?t[0]:null,lastTabbableNode:t.length>0?t[t.length-1]:null,nextTabbableNode:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=n.findIndex((function(t){return t===e}));if(!(a<0))return t?n.slice(a+1).find((function(e){return wv(e,i.tabbableOptions)})):n.slice(0,a).reverse().find((function(e){return wv(e,i.tabbableOptions)}))}}})),o.tabbableGroups=o.containerGroups.filter((function(e){return e.tabbableNodes.length>0})),o.tabbableGroups.length<=0&&!u("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times")},p=function e(t){if(!1!==t&&t!==a.activeElement){if(!t||!t.focus)return void e(c());t.focus({preventScroll:!!i.preventScroll}),o.mostRecentlyFocusedNode=t,function(e){return e.tagName&&"input"===e.tagName.toLowerCase()&&"function"==typeof e.select}(t)&&t.select()}},h=function(e){var t=u("setReturnFocus",e);return t||!1!==t&&e},m=function(e){var t=Lv(e);if(!(l(t)>=0)){if(Bv(i.clickOutsideDeactivates,e))return void n.deactivate({returnFocus:i.returnFocusOnDeactivate&&!Ev(t,i.tabbableOptions)});Bv(i.allowOutsideClick,e)||e.preventDefault()}},f=function(e){var t=Lv(e),n=l(t)>=0;n||t instanceof Document?n&&(o.mostRecentlyFocusedNode=t):(e.stopImmediatePropagation(),p(o.mostRecentlyFocusedNode||c()))},g=function(e){if(function(e){return"Escape"===e.key||"Esc"===e.key||27===e.keyCode}(e)&&!1!==Bv(i.escapeDeactivates,e))return e.preventDefault(),void n.deactivate();(i.isKeyForward(e)||i.isKeyBackward(e))&&function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Lv(e);d();var a=null;if(o.tabbableGroups.length>0){var r=l(n),s=r>=0?o.containerGroups[r]:void 0;if(r<0)a=t?o.tabbableGroups[o.tabbableGroups.length-1].lastTabbableNode:o.tabbableGroups[0].firstTabbableNode;else if(t){var c=Pv(o.tabbableGroups,(function(e){var t=e.firstTabbableNode;return n===t}));if(c<0&&(s.container===n||Ev(n,i.tabbableOptions)&&!wv(n,i.tabbableOptions)&&!s.nextTabbableNode(n,!1))&&(c=r),c>=0){var h=0===c?o.tabbableGroups.length-1:c-1;a=o.tabbableGroups[h].lastTabbableNode}else Ov(e)||(a=s.nextTabbableNode(n,!1))}else{var m=Pv(o.tabbableGroups,(function(e){var t=e.lastTabbableNode;return n===t}));if(m<0&&(s.container===n||Ev(n,i.tabbableOptions)&&!wv(n,i.tabbableOptions)&&!s.nextTabbableNode(n))&&(m=r),m>=0){var f=m===o.tabbableGroups.length-1?0:m+1;a=o.tabbableGroups[f].firstTabbableNode}else Ov(e)||(a=s.nextTabbableNode(n))}}else a=u("fallbackFocus");a&&(Ov(e)&&e.preventDefault(),p(a))}(e,i.isKeyBackward(e))},v=function(e){var t=Lv(e);l(t)>=0||Bv(i.clickOutsideDeactivates,e)||Bv(i.allowOutsideClick,e)||(e.preventDefault(),e.stopImmediatePropagation())},_=function(){if(o.active)return function(e,t){if(e.length>0){var n=e[e.length-1];n!==t&&n.pause()}var a=e.indexOf(t);-1===a||e.splice(a,1),e.push(t)}(r,n),o.delayInitialFocusTimer=i.delayInitialFocus?Rv((function(){p(c())})):p(c()),a.addEventListener("focusin",f,!0),a.addEventListener("mousedown",m,{capture:!0,passive:!1}),a.addEventListener("touchstart",m,{capture:!0,passive:!1}),a.addEventListener("click",v,{capture:!0,passive:!1}),a.addEventListener("keydown",g,{capture:!0,passive:!1}),n},A=function(){if(o.active)return a.removeEventListener("focusin",f,!0),a.removeEventListener("mousedown",m,!0),a.removeEventListener("touchstart",m,!0),a.removeEventListener("click",v,!0),a.removeEventListener("keydown",g,!0),n};return(n={get active(){return o.active},get paused(){return o.paused},activate:function(e){if(o.active)return this;var t=s(e,"onActivate"),n=s(e,"onPostActivate"),r=s(e,"checkCanFocusTrap");r||d(),o.active=!0,o.paused=!1,o.nodeFocusedBeforeActivation=a.activeElement,t&&t();var i=function(){r&&d(),_(),n&&n()};return r?(r(o.containers.concat()).then(i,i),this):(i(),this)},deactivate:function(e){if(!o.active)return this;var t=xv({onDeactivate:i.onDeactivate,onPostDeactivate:i.onPostDeactivate,checkCanReturnFocus:i.checkCanReturnFocus},e);clearTimeout(o.delayInitialFocusTimer),o.delayInitialFocusTimer=void 0,A(),o.active=!1,o.paused=!1,function(e,t){var n=e.indexOf(t);-1!==n&&e.splice(n,1),e.length>0&&e[e.length-1].unpause()}(r,n);var a=s(t,"onDeactivate"),l=s(t,"onPostDeactivate"),u=s(t,"checkCanReturnFocus"),c=s(t,"returnFocus","returnFocusOnDeactivate");a&&a();var d=function(){Rv((function(){c&&p(h(o.nodeFocusedBeforeActivation)),l&&l()}))};return c&&u?(u(h(o.nodeFocusedBeforeActivation)).then(d,d),this):(d(),this)},pause:function(){return o.paused||!o.active||(o.paused=!0,A()),this},unpause:function(){return o.paused&&o.active?(o.paused=!1,d(),_(),this):this},updateContainerElements:function(e){var t=[].concat(e).filter(Boolean);return o.containers=t.map((function(e){return"string"==typeof e?a.querySelector(e):e})),o.active&&d(),this}}).updateContainerElements(e),n}},Symbol.toStringTag,{value:"Module"})));var Yv,Zv={exports:{}};function Uv(){return Yv||(Yv=1,function(e){!function(t,n,a,r){var i,o=["","webkit","Moz","MS","ms","o"],s=n.createElement("div"),l="function",u=Math.round,c=Math.abs,d=Date.now;function p(e,t,n){return setTimeout(A(e,n),t)}function h(e,t,n){return!!Array.isArray(e)&&(m(e,n[t],n),!0)}function m(e,t,n){var a;if(e)if(e.forEach)e.forEach(t,n);else if(e.length!==r)for(a=0;a\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",i=t.console&&(t.console.warn||t.console.log);return i&&i.call(t.console,r,a),e.apply(this,arguments)}}i="function"!=typeof Object.assign?function(e){if(e===r||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n-1}function w(e){return e.trim().split(/\s+/g)}function S(e,t,n){if(e.indexOf&&!n)return e.indexOf(t);for(var a=0;an[t]})):a.sort()),a}function x(e,t){for(var n,a,i=t[0].toUpperCase()+t.slice(1),s=0;s1&&!n.firstMultiple?n.firstMultiple=ee(t):1===i&&(n.firstMultiple=!1);var o=n.firstInput,s=n.firstMultiple,l=s?s.center:o.center,u=t.center=te(a);t.timeStamp=d(),t.deltaTime=t.timeStamp-o.timeStamp,t.angle=ie(l,u),t.distance=re(l,u),function(e,t){var n=t.center,a=e.offsetDelta||{},r=e.prevDelta||{},i=e.prevInput||{};(t.eventType===z||i.eventType===I)&&(r=e.prevDelta={x:i.deltaX||0,y:i.deltaY||0},a=e.offsetDelta={x:n.x,y:n.y}),t.deltaX=r.x+(n.x-a.x),t.deltaY=r.y+(n.y-a.y)}(n,t),t.offsetDirection=ae(t.deltaX,t.deltaY);var p=ne(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=p.x,t.overallVelocityY=p.y,t.overallVelocity=c(p.x)>c(p.y)?p.x:p.y,t.scale=s?function(e,t){return re(t[0],t[1],Q)/re(e[0],e[1],Q)}(s.pointers,a):1,t.rotation=s?function(e,t){return ie(t[1],t[0],Q)+ie(e[1],e[0],Q)}(s.pointers,a):0,t.maxPointers=n.prevInput?t.pointers.length>n.prevInput.maxPointers?t.pointers.length:n.prevInput.maxPointers:t.pointers.length,function(e,t){var n,a,i,o,s=e.lastInterval||t,l=t.timeStamp-s.timeStamp;if(t.eventType!=Y&&(l>L||s.velocity===r)){var u=t.deltaX-s.deltaX,d=t.deltaY-s.deltaY,p=ne(l,u,d);a=p.x,i=p.y,n=c(p.x)>c(p.y)?p.x:p.y,o=ae(u,d),e.lastInterval=t}else n=s.velocity,a=s.velocityX,i=s.velocityY,o=s.direction;t.velocity=n,t.velocityX=a,t.velocityY=i,t.direction=o}(n,t);var h=e.element;C(t.srcEvent.target,h)&&(h=t.srcEvent.target),t.target=h}(e,n),e.emit("hammer.input",n),e.recognize(n),e.session.prevInput=n}function ee(e){for(var t=[],n=0;n=c(t)?e<0?U:G:t<0?H:$}function re(e,t,n){n||(n=K);var a=t[n[0]]-e[n[0]],r=t[n[1]]-e[n[1]];return Math.sqrt(a*a+r*r)}function ie(e,t,n){n||(n=K);var a=t[n[0]]-e[n[0]],r=t[n[1]]-e[n[1]];return 180*Math.atan2(r,a)/Math.PI}J.prototype={handler:function(){},init:function(){this.evEl&&F(this.element,this.evEl,this.domHandler),this.evTarget&&F(this.target,this.evTarget,this.domHandler),this.evWin&&F(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&T(this.element,this.evEl,this.domHandler),this.evTarget&&T(this.target,this.evTarget,this.domHandler),this.evWin&&T(O(this.element),this.evWin,this.domHandler)}};var oe={mousedown:z,mousemove:2,mouseup:I},se="mousedown",le="mousemove mouseup";function ue(){this.evEl=se,this.evWin=le,this.pressed=!1,J.apply(this,arguments)}_(ue,J,{handler:function(e){var t=oe[e.type];t&z&&0===e.button&&(this.pressed=!0),2&t&&1!==e.which&&(t=I),this.pressed&&(t&I&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:B,srcEvent:e}))}});var ce={pointerdown:z,pointermove:2,pointerup:I,pointercancel:Y,pointerout:Y},de={2:P,3:"pen",4:B,5:"kinect"},pe="pointerdown",he="pointermove pointerup pointercancel";function me(){this.evEl=pe,this.evWin=he,J.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(pe="MSPointerDown",he="MSPointerMove MSPointerUp MSPointerCancel"),_(me,J,{handler:function(e){var t=this.store,n=!1,a=e.type.toLowerCase().replace("ms",""),r=ce[a],i=de[e.pointerType]||e.pointerType,o=i==P,s=S(t,e.pointerId,"pointerId");r&z&&(0===e.button||o)?s<0&&(t.push(e),s=t.length-1):r&(I|Y)&&(n=!0),!(s<0)&&(t[s]=e,this.callback(this.manager,r,{pointers:t,changedPointers:[e],pointerType:i,srcEvent:e}),n&&t.splice(s,1))}});var fe={touchstart:z,touchmove:2,touchend:I,touchcancel:Y};function ge(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,J.apply(this,arguments)}function ve(e,t){var n=E(e.touches),a=E(e.changedTouches);return t&(I|Y)&&(n=D(n.concat(a),"identifier",!0)),[n,a]}_(ge,J,{handler:function(e){var t=fe[e.type];if(t===z&&(this.started=!0),this.started){var n=ve.call(this,e,t);t&(I|Y)&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:P,srcEvent:e})}}});var _e={touchstart:z,touchmove:2,touchend:I,touchcancel:Y},Ae="touchstart touchmove touchend touchcancel";function be(){this.evTarget=Ae,this.targetIds={},J.apply(this,arguments)}function ye(e,t){var n=E(e.touches),a=this.targetIds;if(t&(2|z)&&1===n.length)return a[n[0].identifier]=!0,[n,n];var r,i,o=E(e.changedTouches),s=[],l=this.target;if(i=n.filter((function(e){return C(e.target,l)})),t===z)for(r=0;r-1&&a.splice(e,1)}),Fe)}}function we(e){for(var t=e.srcEvent.clientX,n=e.srcEvent.clientY,a=0;a-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){var t=this,n=this.state;function a(n){t.manager.emit(n,e)}n<8&&a(t.options.event+Ie(n)),a(t.options.event),e.additionalEvent&&a(e.additionalEvent),n>=8&&a(t.options.event+Ie(n))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=Le},canEmit:function(){for(var e=0;et.threshold&&r&t.direction},attrTest:function(e){return Ue.prototype.attrTest.call(this,e)&&(2&this.state||!(2&this.state)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=Ye(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}}),_(He,Ue,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Oe]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||2&this.state)},emit:function(e){if(1!==e.scale){var t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}}),_($e,ze,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[xe]},process:function(e){var t=this.options,n=e.pointers.length===t.pointers,a=e.distancet.time;if(this._input=e,!a||!n||e.eventType&(I|Y)&&!r)this.reset();else if(e.eventType&z)this.reset(),this._timer=p((function(){this.state=8,this.tryEmit()}),t.time,this);else if(e.eventType&I)return 8;return Le},reset:function(){clearTimeout(this._timer)},emit:function(e){8===this.state&&(e&&e.eventType&I?this.manager.emit(this.options.event+"up",e):(this._input.timeStamp=d(),this.manager.emit(this.options.event,this._input)))}}),_(qe,Ue,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Oe]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||2&this.state)}}),_(Ve,Ue,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:q|V,pointers:1},getTouchAction:function(){return Ge.prototype.getTouchAction.call(this)},attrTest:function(e){var t,n=this.options.direction;return n&(q|V)?t=e.overallVelocity:n&q?t=e.overallVelocityX:n&V&&(t=e.overallVelocityY),this._super.attrTest.call(this,e)&&n&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&c(t)>this.options.velocity&&e.eventType&I},emit:function(e){var t=Ye(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}}),_(We,ze,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Ne]},process:function(e){var t=this.options,n=e.pointers.length===t.pointers,a=e.distance(()=>{var e={3525:(e,t,n)=>{n.d(t,{default:()=>I});var a=n(8557),r=n(2963),i=n(336),o=n(1205),s=n(932),l=n(2734),u=n.n(l),c=n(1441),d=n.n(c);function p(e){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function m(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,a=new Array(t);n0&&void 0!==arguments[0])||arguments[0];this.opened&&(this.opened=!1,this.$refs.popover.clearFocusTrap({returnFocus:e}),this.$emit("update:open",!1),this.$emit("close"),this.opened=!1,this.focusIndex=0,this.$refs.menuButton.$el.focus())},onOpen:function(e){var t=this;this.$nextTick((function(){t.focusFirstAction(e)}))},onMouseFocusAction:function(e){if(document.activeElement!==e.target){var t=e.target.closest("li");if(t){var n=t.querySelector(_);if(n){var a=g(this.$refs.menu.querySelectorAll(_)).indexOf(n);a>-1&&(this.focusIndex=a,this.focusAction())}}}},onKeydown:function(e){(38===e.keyCode||9===e.keyCode&&e.shiftKey)&&this.focusPreviousAction(e),(40===e.keyCode||9===e.keyCode&&!e.shiftKey)&&this.focusNextAction(e),33===e.keyCode&&this.focusFirstAction(e),34===e.keyCode&&this.focusLastAction(e),27===e.keyCode&&(this.closeMenu(),e.preventDefault())},removeCurrentActive:function(){var e=this.$refs.menu.querySelector("li.active");e&&e.classList.remove("active")},focusAction:function(){var e=this.$refs.menu.querySelectorAll(_)[this.focusIndex];if(e){this.removeCurrentActive();var t=e.closest("li.action");e.focus(),t&&t.classList.add("active")}},focusPreviousAction:function(e){this.opened&&(0===this.focusIndex?this.closeMenu():(this.preventIfEvent(e),this.focusIndex=this.focusIndex-1),this.focusAction())},focusNextAction:function(e){if(this.opened){var t=this.$refs.menu.querySelectorAll(_).length-1;this.focusIndex===t?this.closeMenu():(this.preventIfEvent(e),this.focusIndex=this.focusIndex+1),this.focusAction()}},focusFirstAction:function(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=0,this.focusAction())},focusLastAction:function(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=this.$refs.menu.querySelectorAll(_).length-1,this.focusAction())},preventIfEvent:function(e){e&&(e.preventDefault(),e.stopPropagation())},onFocus:function(e){this.$emit("focus",e)},onBlur:function(e){this.$emit("blur",e)}},render:function(e){var t=this,n=(this.$slots.default||[]).filter((function(e){var t;return null==e||null===(t=e.componentOptions)||void 0===t?void 0:t.tag})),a=n.filter(this.isValidSingleAction);if(this.forceMenu&&a.length>0&&this.inline>0&&(u().util.warn("Specifying forceMenu will ignore any inline actions rendering."),a=[]),0!==n.length){var r=function(n){var a,r,i,o,s,l,u,c,d,p,h,f,g,v,_,A,b,y,F,T,C,k,w,S=(null==n||null===(a=n.data)||void 0===a||null===(r=a.scopedSlots)||void 0===r||null===(i=r.icon())||void 0===i?void 0:i[0])||e("span",{class:["icon",null==n||null===(o=n.componentOptions)||void 0===o||null===(s=o.propsData)||void 0===s?void 0:s.icon]}),E=t.forceTitle?t.menuTitle:"",D=null==n||null===(l=n.componentOptions)||void 0===l||null===(u=l.listeners)||void 0===u?void 0:u.click;return e("NcButton",{class:["action-item action-item--single",null==n||null===(c=n.data)||void 0===c?void 0:c.staticClass,null==n||null===(d=n.data)||void 0===d?void 0:d.class],attrs:{"aria-label":(null==n||null===(p=n.componentOptions)||void 0===p||null===(h=p.propsData)||void 0===h?void 0:h.ariaLabel)||(null==n||null===(f=n.componentOptions)||void 0===f||null===(g=f.children)||void 0===g||null===(v=g[0])||void 0===v?void 0:v.text),title:null==n||null===(_=n.componentOptions)||void 0===_||null===(A=_.propsData)||void 0===A?void 0:A.title},ref:null==n||null===(b=n.data)||void 0===b?void 0:b.ref,props:m({type:t.type||(E?"secondary":"tertiary"),disabled:t.disabled||(null==n||null===(y=n.componentOptions)||void 0===y||null===(F=y.propsData)||void 0===F?void 0:F.disabled)},null==n||null===(T=n.componentOptions)||void 0===T?void 0:T.propsData),directives:[{name:"tooltip",value:null==n||null===(C=n.componentOptions)||void 0===C||null===(k=C.children)||void 0===k||null===(w=k[0])||void 0===w?void 0:w.text,modifiers:{auto:!0}}],on:m({focus:t.onFocus,blur:t.onBlur},!!D&&{click:function(e){D&&D(e)}})},[e("template",{slot:"icon"},[S]),E])},i=function(n){var a,r,i=(null===(a=t.$slots.icon)||void 0===a?void 0:a[0])||(t.defaultIcon?e("span",{class:["icon",t.defaultIcon]}):e("DotsHorizontal",{props:{size:20}}));return e("NcPopover",{ref:"popover",props:{delay:0,handleResize:!0,shown:t.opened,placement:t.placement,boundary:t.boundariesElement,container:t.container,popoverBaseClass:"action-item__popper",setReturnFocus:null===(r=t.$refs.menuButton)||void 0===r?void 0:r.$el},attrs:{delay:0,handleResize:!0,shown:t.opened,placement:t.placement,boundary:t.boundariesElement,container:t.container,popoverBaseClass:"action-item__popper"},on:{show:t.openMenu,"after-show":t.onOpen,hide:t.closeMenu}},[e("NcButton",{class:"action-item__menutoggle",props:{type:t.triggerBtnType,disabled:t.disabled},slot:"trigger",ref:"menuButton",attrs:{"aria-haspopup":"menu","aria-label":t.ariaLabel,"aria-controls":t.opened?t.randomId:null,"aria-expanded":t.opened.toString()},on:{focus:t.onFocus,blur:t.onBlur}},[e("template",{slot:"icon"},[i]),t.menuTitle]),e("div",{class:{open:t.opened},attrs:{tabindex:"-1"},on:{keydown:t.onKeydown,mousemove:t.onMouseFocusAction},ref:"menu"},[e("ul",{attrs:{id:t.randomId,tabindex:"-1",role:"menu"}},[n])])])};if(1===n.length&&1===a.length&&!this.forceMenu)return r(a[0]);if(a.length>0&&this.inline>0){var o=a.slice(0,this.inline),s=n.filter((function(e){return!o.includes(e)}));return e("div",{class:["action-items","action-item--".concat(this.triggerBtnType)]},[].concat(g(o.map(r)),[s.length>0?e("div",{class:["action-item",{"action-item--open":this.opened}]},[i(s)]):null]))}return e("div",{class:["action-item action-item--default-popover","action-item--".concat(this.triggerBtnType),{"action-item--open":this.opened}]},[i(n)])}}};var b=n(3379),y=n.n(b),F=n(7795),T=n.n(F),C=n(569),k=n.n(C),w=n(3565),S=n.n(w),E=n(9216),D=n.n(E),x=n(4589),N=n.n(x),O=n(5166),j={};j.styleTagTransform=N(),j.setAttributes=S(),j.insert=k().bind(null,"head"),j.domAPI=T(),j.insertStyleElement=D(),y()(O.Z,j),O.Z&&O.Z.locals&&O.Z.locals;var M=n(2472),R={};R.styleTagTransform=N(),R.setAttributes=S(),R.insert=k().bind(null,"head"),R.domAPI=T(),R.insertStyleElement=D(),y()(M.Z,R),M.Z&&M.Z.locals&&M.Z.locals;var P=n(1900),B=n(5727),L=n.n(B),z=(0,P.Z)(A,void 0,void 0,!1,null,"259567dc",null);"function"==typeof L()&&L()(z);const I=z.exports},8557:(e,t,n)=>{n.d(t,{default:()=>S});var a=n(5108);function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t{n.d(t,{default:()=>x});var a=n(9454),r=n(4505),i=n(1206),o=n(5108);function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(){l=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch{c=function(e,t,n){return e[t]=n}}function d(e,t,n,r){var i=t&&t.prototype instanceof m?t:m,o=Object.create(i.prototype),s=new S(r||[]);return a(o,"_invoke",{value:T(e,n,s)}),o}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=d;var h={};function m(){}function f(){}function g(){}var v={};c(v,i,(function(){return this}));var _=Object.getPrototypeOf,A=_&&_(_(E([])));A&&A!==t&&n.call(A,i)&&(v=A);var b=g.prototype=m.prototype=Object.create(v);function y(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function F(e,t){function r(a,i,o,l){var u=p(e[a],e,i);if("throw"!==u.type){var c=u.arg,d=c.value;return d&&"object"==s(d)&&n.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,o,l)}),(function(e){r("throw",e,o,l)})):t.resolve(d).then((function(e){c.value=e,o(c)}),(function(e){return r("throw",e,o,l)}))}l(u.arg)}var i;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return i=i?i.then(a,a):a()}})}function T(e,t,n){var a="suspendedStart";return function(r,i){if("executing"===a)throw new Error("Generator is already running");if("completed"===a){if("throw"===r)throw i;return{value:void 0,done:!0}}for(n.method=r,n.arg=i;;){var o=n.delegate;if(o){var s=C(o,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===a)throw a="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a="executing";var l=p(e,t,n);if("normal"===l.type){if(a=n.done?"completed":"suspendedYield",l.arg===h)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(a="completed",n.method="throw",n.arg=l.arg)}}}function C(e,t){var n=t.method,a=e.iterator[n];if(void 0===a)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),h;var r=p(a,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,h;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function E(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,r=function t(){for(;++a=0;--r){var i=this.tryEntries[r],o=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(s&&l){if(this.prev=0;--a){var r=this.tryEntries[a];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if("throw"===a.type){var r=a.arg;w(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),h}},e}function u(e,t,n,a,r,i,o){try{var s=e[i](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(a,r)}const c={name:"NcPopover",components:{Dropdown:a.Dropdown},props:{popoverBaseClass:{type:String,default:""},focusTrap:{type:Boolean,default:!0},setReturnFocus:{required:!1}},emits:["after-show","after-hide"],beforeDestroy:function(){this.clearFocusTrap()},methods:{useFocusTrap:function(){var e,t=this;return(e=l().mark((function e(){var n,a,o;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$nextTick();case 2:if(t.focusTrap){e.next=4;break}return e.abrupt("return");case 4:if(o=null===(n=t.$refs.popover)||void 0===n||null===(a=n.$refs.popperContent)||void 0===a?void 0:a.$el){e.next=7;break}return e.abrupt("return");case 7:t.$focusTrap=(0,r.createFocusTrap)(o,{escapeDeactivates:!1,allowOutsideClick:!0,setReturnFocus:t.setReturnFocus,trapStack:(0,i.L)()}),t.$focusTrap.activate();case 9:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(a,r){var i=e.apply(t,n);function o(e){u(i,a,r,o,s,"next",e)}function s(e){u(i,a,r,o,s,"throw",e)}o(void 0)}))})()},clearFocusTrap:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var t;null===(t=this.$focusTrap)||void 0===t||t.deactivate(e),this.$focusTrap=null}catch(e){o.warn(e)}},afterShow:function(){var e=this;this.$nextTick((function(){e.$emit("after-show"),e.useFocusTrap()}))},afterHide:function(){this.$emit("after-hide"),this.clearFocusTrap()}}},d=c;var p=n(3379),h=n.n(p),m=n(7795),f=n.n(m),g=n(569),v=n.n(g),_=n(3565),A=n.n(_),b=n(9216),y=n.n(b),F=n(4589),T=n.n(F),C=n(978),k={};k.styleTagTransform=T(),k.setAttributes=A(),k.insert=v().bind(null,"head"),k.domAPI=f(),k.insertStyleElement=y(),h()(C.Z,k),C.Z&&C.Z.locals&&C.Z.locals;var w=n(1900),S=n(2405),E=n.n(S),D=(0,w.Z)(d,(function(){var e=this;return(0,e._self._c)("Dropdown",e._g(e._b({ref:"popover",attrs:{distance:10,"arrow-padding":10,"no-auto-focus":!0,"popper-class":e.popoverBaseClass},on:{"apply-show":e.afterShow,"apply-hide":e.afterHide},scopedSlots:e._u([{key:"popper",fn:function(){return[e._t("default")]},proxy:!0}],null,!0)},"Dropdown",e.$attrs,!1),e.$listeners),[e._t("trigger")],2)}),[],!1,null,null,null);"function"==typeof E()&&E()(D);const x=D.exports},336:(e,t,n)=>{n.d(t,{default:()=>_});var a=n(9454),r=n(3379),i=n.n(r),o=n(7795),s=n.n(o),l=n(569),u=n.n(l),c=n(3565),d=n.n(c),p=n(9216),h=n.n(p),m=n(4589),f=n.n(m),g=n(8384),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=u().bind(null,"head"),v.domAPI=s(),v.insertStyleElement=h(),i()(g.Z,v),g.Z&&g.Z.locals&&g.Z.locals,a.options.themes.tooltip.html=!1,a.options.themes.tooltip.delay={show:500,hide:200},a.options.themes.tooltip.distance=10,a.options.themes.tooltip["arrow-padding"]=3;const _=a.VTooltip},932:(e,t,n)=>{n.d(t,{n:()=>i,t:()=>o});var a=(0,n(754).getGettextBuilder)().detectLocale();[{locale:"ar",translations:{"{tag} (invisible)":"{tag} (غير مرئي)","{tag} (restricted)":"{tag} (مقيد)",Actions:"الإجراءات",Activities:"النشاطات","Animals & Nature":"الحيوانات والطبيعة","Anything shared with the same group of people will show up here":"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا","Avatar of {displayName}":"صورة {displayName} الرمزية","Avatar of {displayName}, {status}":"صورة {displayName} الرمزية، {status}","Cancel changes":"إلغاء التغييرات","Change title":"تغيير العنوان",Choose:"إختيار","Clear text":"مسح النص",Close:"أغلق","Close modal":"قفل الشرط","Close navigation":"إغلاق المتصفح","Close sidebar":"قفل الشريط الجانبي","Confirm changes":"تأكيد التغييرات",Custom:"مخصص","Edit item":"تعديل عنصر","Error getting related resources":"خطأ في تحصيل مصادر ذات صلة","External documentation for {title}":"الوثائق الخارجية لـ{title}",Favorite:"مفضلة",Flags:"الأعلام","Food & Drink":"الطعام والشراب","Frequently used":"كثيرا ما تستخدم",Global:"عالمي","Go back to the list":"العودة إلى القائمة","Hide password":"إخفاء كلمة السر","Message limit of {count} characters reached":"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف","More items …":"عناصر أخرى ...",Next:"التالي","No emoji found":"لم يتم العثور على أي رمز تعبيري","No results":"ليس هناك أية نتيجة",Objects:"الأشياء",Open:"فتح",'Open link to "{resourceTitle}"':'فتح رابط إلى "{resourceTitle}"',"Open navigation":"فتح المتصفح","Password is secure":"كلمة السر مُؤمّنة","Pause slideshow":"إيقاف العرض مؤقتًا","People & Body":"الناس والجسم","Pick an emoji":"اختر رمزًا تعبيريًا","Please select a time zone:":"الرجاء تحديد المنطقة الزمنية:",Previous:"السابق","Related resources":"مصادر ذات صلة",Search:"بحث","Search results":"نتائج البحث","Select a tag":"اختر علامة",Settings:"الإعدادات","Settings navigation":"إعدادات المتصفح","Show password":"أعرض كلمة السر","Smileys & Emotion":"الوجوه و الرموز التعبيرية","Start slideshow":"بدء العرض",Submit:"إرسال",Symbols:"الرموز","Travel & Places":"السفر والأماكن","Type to search time zone":"اكتب للبحث عن منطقة زمنية","Unable to search the group":"تعذر البحث في المجموعة","Undo changes":"التراجع عن التغييرات","Write message, @ to mention someone, : for emoji autocompletion …":"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ..."}},{locale:"br",translations:{"{tag} (invisible)":"{tag} (diwelus)","{tag} (restricted)":"{tag} (bevennet)",Actions:"Oberioù",Activities:"Oberiantizoù","Animals & Nature":"Loened & Natur",Choose:"Dibab",Close:"Serriñ",Custom:"Personelañ",Flags:"Bannieloù","Food & Drink":"Boued & Evajoù","Frequently used":"Implijet alies",Next:"Da heul","No emoji found":"Emoji ebet kavet","No results":"Disoc'h ebet",Objects:"Traoù","Pause slideshow":"Arsav an diaporama","People & Body":"Tud & Korf","Pick an emoji":"Choaz un emoji",Previous:"A-raok",Search:"Klask","Search results":"Disoc'hoù an enklask","Select a tag":"Choaz ur c'hlav",Settings:"Arventennoù","Smileys & Emotion":"Smileyioù & Fromoù","Start slideshow":"Kregiñ an diaporama",Symbols:"Arouezioù","Travel & Places":"Beaj & Lec'hioù","Unable to search the group":"Dibosupl eo klask ar strollad"}},{locale:"ca",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringit)",Actions:"Accions",Activities:"Activitats","Animals & Nature":"Animals i natura","Anything shared with the same group of people will show up here":"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancel·la els canvis","Change title":"Canviar títol",Choose:"Tria","Clear text":"Netejar text",Close:"Tanca","Close modal":"Tancar el mode","Close navigation":"Tanca la navegació","Close sidebar":"Tancar la barra lateral","Confirm changes":"Confirmeu els canvis",Custom:"Personalitzat","Edit item":"Edita l'element","Error getting related resources":"Error obtenint els recursos relacionats","External documentation for {title}":"Documentació externa per a {title}",Favorite:"Preferit",Flags:"Marques","Food & Drink":"Menjar i begudes","Frequently used":"Utilitzats recentment",Global:"Global","Go back to the list":"Torna a la llista","Hide password":"Amagar contrasenya","Message limit of {count} characters reached":"S'ha arribat al límit de {count} caràcters per missatge","More items …":"Més artícles...",Next:"Següent","No emoji found":"No s'ha trobat cap emoji","No results":"Sense resultats",Objects:"Objectes",Open:"Obrir",'Open link to "{resourceTitle}"':'Obrir enllaç a "{resourceTitle}"',"Open navigation":"Obre la navegació","Password is secure":"Contrasenya segura
","Pause slideshow":"Atura la presentació","People & Body":"Persones i cos","Pick an emoji":"Trieu un emoji","Please select a time zone:":"Seleccioneu una zona horària:",Previous:"Anterior","Related resources":"Recursos relacionats",Search:"Cerca","Search results":"Resultats de cerca","Select a tag":"Seleccioneu una etiqueta",Settings:"Paràmetres","Settings navigation":"Navegació d'opcions","Show password":"Mostrar contrasenya","Smileys & Emotion":"Cares i emocions","Start slideshow":"Inicia la presentació",Submit:"Envia",Symbols:"Símbols","Travel & Places":"Viatges i llocs","Type to search time zone":"Escriviu per cercar la zona horària","Unable to search the group":"No es pot cercar el grup","Undo changes":"Desfés els canvis",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escriu missatge, fes servir "@" per esmentar algú, fes servir ":" per autocompletar emojis...'}},{locale:"cs_CZ",translations:{"{tag} (invisible)":"{tag} (neviditelné)","{tag} (restricted)":"{tag} (omezené)",Actions:"Akce",Activities:"Aktivity","Animals & Nature":"Zvířata a příroda","Anything shared with the same group of people will show up here":"Cokoli nasdíleného stejné skupině lidí se zobrazí zde","Avatar of {displayName}":"Zástupný obrázek uživatele {displayName}","Avatar of {displayName}, {status}":"Zástupný obrázek uživatele {displayName}, {status}","Cancel changes":"Zrušit změny","Change title":"Změnit nadpis",Choose:"Zvolit","Clear text":"Čitelný text",Close:"Zavřít","Close modal":"Zavřít dialogové okno","Close navigation":"Zavřít navigaci","Close sidebar":"Zavřít postranní panel","Confirm changes":"Potvrdit změny",Custom:"Uživatelsky určené","Edit item":"Upravit položku","Error getting related resources":"Chyba při získávání souvisejících prostředků","Error parsing svg":"Chyba při zpracovávání svg","External documentation for {title}":"Externí dokumentace k {title}",Favorite:"Oblíbené",Flags:"Příznaky","Food & Drink":"Jídlo a pití","Frequently used":"Často používané",Global:"Globální","Go back to the list":"Jít zpět na seznam","Hide password":"Skrýt heslo","Message limit of {count} characters reached":"Dosaženo limitu počtu ({count}) znaků zprávy","More items …":"Další položky…",Next:"Následující","No emoji found":"Nenalezeno žádné emoji","No results":"Nic nenalezeno",Objects:"Objekty",Open:"Otevřít",'Open link to "{resourceTitle}"':"Otevřít odkaz na „{resourceTitle}“","Open navigation":"Otevřít navigaci","Password is secure":"Heslo je bezpečné","Pause slideshow":"Pozastavit prezentaci","People & Body":"Lidé a tělo","Pick an emoji":"Vybrat emoji","Please select a time zone:":"Vyberte časovou zónu:",Previous:"Předchozí","Related resources":"Související prostředky",Search:"Hledat","Search results":"Výsledky hledání","Select a tag":"Vybrat štítek",Settings:"Nastavení","Settings navigation":"Pohyb po nastavení","Show password":"Zobrazit heslo","Smileys & Emotion":"Úsměvy a emoce","Start slideshow":"Spustit prezentaci",Submit:"Odeslat",Symbols:"Symboly","Travel & Places":"Cestování a místa","Type to search time zone":"Psaním vyhledejte časovou zónu","Unable to search the group":"Nedaří se hledat skupinu","Undo changes":"Vzít změny zpět",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…"}},{locale:"da",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (begrænset)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr & Natur","Anything shared with the same group of people will show up here":"Alt der deles med samme gruppe af personer vil vises her","Avatar of {displayName}":"Avatar af {displayName}","Avatar of {displayName}, {status}":"Avatar af {displayName}, {status}","Cancel changes":"Annuller ændringer","Change title":"Ret titel",Choose:"Vælg","Clear text":"Ryd tekst",Close:"Luk","Close modal":"Luk vindue","Close navigation":"Luk navigation","Close sidebar":"Luk sidepanel","Confirm changes":"Bekræft ændringer",Custom:"Brugerdefineret","Edit item":"Rediger emne","Error getting related resources":"Kunne ikke hente tilknyttede data","External documentation for {title}":"Ekstern dokumentation for {title}",Favorite:"Favorit",Flags:"Flag","Food & Drink":"Mad & Drikke","Frequently used":"Ofte brugt",Global:"Global","Go back to the list":"Tilbage til listen","Hide password":"Skjul kodeord","Message limit of {count} characters reached":"Begrænsning på {count} tegn er nået","More items …":"Mere ...",Next:"Videre","No emoji found":"Ingen emoji fundet","No results":"Ingen resultater",Objects:"Objekter",Open:"Åbn",'Open link to "{resourceTitle}"':'Åbn link til "{resourceTitle}"',"Open navigation":"Åbn navigation","Password is secure":"Kodeordet er sikkert","Pause slideshow":"Suspender fremvisning","People & Body":"Mennesker & Menneskekroppen","Pick an emoji":"Vælg en emoji","Please select a time zone:":"Vælg venligst en tidszone:",Previous:"Forrige","Related resources":"Relaterede emner",Search:"Søg","Search results":"Søgeresultater","Select a tag":"Vælg et mærke",Settings:"Indstillinger","Settings navigation":"Naviger i indstillinger","Show password":"Vis kodeord","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start fremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Rejser & Rejsemål","Type to search time zone":"Indtast for at søge efter tidszone","Unable to search the group":"Kan ikke søge på denne gruppe","Undo changes":"Fortryd ændringer","Write message, @ to mention someone, : for emoji autocompletion …":"Skriv besked, bruge @ til at nævne personer, : til emoji valg ..."}},{locale:"de",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Gegenstände",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick a date":"Ein Datum auswählen","Pick a date and a time":"Datum und Uhrzeit auswählen","Pick a month":"Einen Monat auswählen","Pick a time":"Eine Uhrzeit auswählen","Pick a week":"Eine Woche auswählen","Pick a year":"Ein Jahr auswählen","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte wählen Sie eine Zeitzone:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um Zeitzone zu suchen","Unable to search the group":"Die Gruppe konnte nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen","Write message, @ to mention someone, : for emoji autocompletion …":"Nachricht schreiben, @, um jemanden zu erwähnen, : für die automatische Vervollständigung von Emojis … "}},{locale:"de_DE",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Anything shared with the same group of people will show up here":"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","Error parsing svg":"Fehler beim Einlesen der SVG","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Objekte",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte eine Zeitzone auswählen:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um eine Zeitzone zu suchen","Unable to search the group":"Die Gruppe kann nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Nachricht schreiben, "@" um jemanden zu erwähnen, ":" für die automatische Vervollständigung von Emojis …'}},{locale:"el",translations:{"{tag} (invisible)":"{tag} (αόρατο)","{tag} (restricted)":"{tag} (περιορισμένο)",Actions:"Ενέργειες",Activities:"Δραστηριότητες","Animals & Nature":"Ζώα & Φύση","Anything shared with the same group of people will show up here":"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ","Avatar of {displayName}":"Άβαταρ του {displayName}","Avatar of {displayName}, {status}":"Άβαταρ του {displayName}, {status}","Cancel changes":"Ακύρωση αλλαγών","Change title":"Αλλαγή τίτλου",Choose:"Επιλογή","Clear text":"Εκκαθάριση κειμένου",Close:"Κλείσιμο","Close modal":"Βοηθητικό κλείσιμο","Close navigation":"Κλείσιμο πλοήγησης","Close sidebar":"Κλείσιμο πλευρικής μπάρας","Confirm changes":"Επιβεβαίωση αλλαγών",Custom:"Προσαρμογή","Edit item":"Επεξεργασία","Error getting related resources":"Σφάλμα λήψης σχετικών πόρων","Error parsing svg":"Σφάλμα ανάλυσης svg","External documentation for {title}":"Εξωτερική τεκμηρίωση για {title}",Favorite:"Αγαπημένα",Flags:"Σημαίες","Food & Drink":"Φαγητό & Ποτό","Frequently used":"Συχνά χρησιμοποιούμενο",Global:"Καθολικό","Go back to the list":"Επιστροφή στην αρχική λίστα ","Hide password":"Απόκρυψη κωδικού πρόσβασης","Message limit of {count} characters reached":"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος","More items …":"Περισσότερα στοιχεία …",Next:"Επόμενο","No emoji found":"Δεν βρέθηκε emoji","No results":"Κανένα αποτέλεσμα",Objects:"Αντικείμενα",Open:"Άνοιγμα",'Open link to "{resourceTitle}"':'Άνοιγμα συνδέσμου στο "{resourceTitle}"',"Open navigation":"Άνοιγμα πλοήγησης","Password is secure":"Ο κωδικός πρόσβασης είναι ασφαλής","Pause slideshow":"Παύση προβολής διαφανειών","People & Body":"Άνθρωποι & Σώμα","Pick an emoji":"Επιλέξτε ένα emoji","Please select a time zone:":"Παρακαλούμε επιλέξτε μια ζώνη ώρας:",Previous:"Προηγούμενο","Related resources":"Σχετικοί πόροι",Search:"Αναζήτηση","Search results":"Αποτελέσματα αναζήτησης","Select a tag":"Επιλογή ετικέτας",Settings:"Ρυθμίσεις","Settings navigation":"Πλοήγηση ρυθμίσεων","Show password":"Εμφάνιση κωδικού πρόσβασης","Smileys & Emotion":"Φατσούλες & Συναίσθημα","Start slideshow":"Έναρξη προβολής διαφανειών",Submit:"Υποβολή",Symbols:"Σύμβολα","Travel & Places":"Ταξίδια & Τοποθεσίες","Type to search time zone":"Πληκτρολογήστε για αναζήτηση ζώνης ώρας","Unable to search the group":"Δεν είναι δυνατή η αναζήτηση της ομάδας","Undo changes":"Αναίρεση Αλλαγών",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε "@" για να αναφέρετε κάποιον, χρησιμοποιείστε ":" για αυτόματη συμπλήρωση emoji …'}},{locale:"en_GB",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restricted)",Actions:"Actions",Activities:"Activities","Animals & Nature":"Animals & Nature","Anything shared with the same group of people will show up here":"Anything shared with the same group of people will show up here","Avatar of {displayName}":"Avatar of {displayName}","Avatar of {displayName}, {status}":"Avatar of {displayName}, {status}","Cancel changes":"Cancel changes","Change title":"Change title",Choose:"Choose","Clear text":"Clear text",Close:"Close","Close modal":"Close modal","Close navigation":"Close navigation","Close sidebar":"Close sidebar","Confirm changes":"Confirm changes",Custom:"Custom","Edit item":"Edit item","Error getting related resources":"Error getting related resources","Error parsing svg":"Error parsing svg","External documentation for {title}":"External documentation for {title}",Favorite:"Favourite",Flags:"Flags","Food & Drink":"Food & Drink","Frequently used":"Frequently used",Global:"Global","Go back to the list":"Go back to the list","Hide password":"Hide password","Message limit of {count} characters reached":"Message limit of {count} characters reached","More items …":"More items …",Next:"Next","No emoji found":"No emoji found","No results":"No results",Objects:"Objects",Open:"Open",'Open link to "{resourceTitle}"':'Open link to "{resourceTitle}"',"Open navigation":"Open navigation","Password is secure":"Password is secure","Pause slideshow":"Pause slideshow","People & Body":"People & Body","Pick an emoji":"Pick an emoji","Please select a time zone:":"Please select a time zone:",Previous:"Previous","Related resources":"Related resources",Search:"Search","Search results":"Search results","Select a tag":"Select a tag",Settings:"Settings","Settings navigation":"Settings navigation","Show password":"Show password","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start slideshow",Submit:"Submit",Symbols:"Symbols","Travel & Places":"Travel & Places","Type to search time zone":"Type to search time zone","Unable to search the group":"Unable to search the group","Undo changes":"Undo changes",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Write message, use "@" to mention someone, use ":" for emoji autocompletion …'}},{locale:"eo",translations:{"{tag} (invisible)":"{tag} (kaŝita)","{tag} (restricted)":"{tag} (limigita)",Actions:"Agoj",Activities:"Aktiveco","Animals & Nature":"Bestoj & Naturo",Choose:"Elektu",Close:"Fermu",Custom:"Propra",Flags:"Flagoj","Food & Drink":"Manĝaĵo & Trinkaĵo","Frequently used":"Ofte uzataj","Message limit of {count} characters reached":"La limo je {count} da literoj atingita",Next:"Sekva","No emoji found":"La emoĝio forestas","No results":"La rezulto forestas",Objects:"Objektoj","Pause slideshow":"Payzi bildprezenton","People & Body":"Homoj & Korpo","Pick an emoji":"Elekti emoĝion ",Previous:"Antaŭa",Search:"Serĉi","Search results":"Serĉrezultoj","Select a tag":"Elektu etikedon",Settings:"Agordo","Settings navigation":"Agorda navigado","Smileys & Emotion":"Ridoj kaj Emocioj","Start slideshow":"Komenci bildprezenton",Symbols:"Signoj","Travel & Places":"Vojaĵoj & Lokoj","Unable to search the group":"Ne eblas serĉi en la grupo","Write message, @ to mention someone …":"Mesaĝi, uzu @ por mencii iun ..."}},{locale:"es",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringido)",Actions:"Acciones",Activities:"Actividades","Animals & Nature":"Animales y naturaleza","Anything shared with the same group of people will show up here":"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar cambios","Change title":"Cambiar título",Choose:"Elegir","Clear text":"Limpiar texto",Close:"Cerrar","Close modal":"Cerrar modal","Close navigation":"Cerrar navegación","Close sidebar":"Cerrar barra lateral","Confirm changes":"Confirmar cambios",Custom:"Personalizado","Edit item":"Editar elemento","Error getting related resources":"Se encontró un error al obtener los recursos relacionados","Error parsing svg":"Error procesando svg","External documentation for {title}":"Documentacion externa de {title}",Favorite:"Favorito",Flags:"Banderas","Food & Drink":"Comida y bebida","Frequently used":"Usado con frecuenca",Global:"Global","Go back to the list":"Volver a la lista","Hide password":"Ocultar contraseña","Message limit of {count} characters reached":"El mensaje ha alcanzado el límite de {count} caracteres","More items …":"Más ítems...",Next:"Siguiente","No emoji found":"No hay ningún emoji","No results":" Ningún resultado",Objects:"Objetos",Open:"Abrir",'Open link to "{resourceTitle}"':'Abrir enlace a "{resourceTitle}"',"Open navigation":"Abrir navegación","Password is secure":"La contraseña es segura","Pause slideshow":"Pausar la presentación ","People & Body":"Personas y cuerpos","Pick an emoji":"Elegir un emoji","Please select a time zone:":"Por favor elige un huso de horario:",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Buscar","Search results":"Resultados de la búsqueda","Select a tag":"Seleccione una etiqueta",Settings:"Ajustes","Settings navigation":"Navegación por ajustes","Show password":"Mostrar contraseña","Smileys & Emotion":"Smileys y emoticonos","Start slideshow":"Iniciar la presentación",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viajes y lugares","Type to search time zone":"Escribe para buscar un huso de horario","Unable to search the group":"No es posible buscar en el grupo","Undo changes":"Deshacer cambios",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escribir mensaje, utilice "@" para mencionar a alguien, utilice ":" para autocompletado de emojis ...'}},{locale:"eu",translations:{"{tag} (invisible)":"{tag} (ikusezina)","{tag} (restricted)":"{tag} (mugatua)",Actions:"Ekintzak",Activities:"Jarduerak","Animals & Nature":"Animaliak eta Natura","Anything shared with the same group of people will show up here":"Pertsona-talde berarekin partekatutako edozer agertuko da hemen","Avatar of {displayName}":"{displayName}-(e)n irudia","Avatar of {displayName}, {status}":"{displayName} -(e)n irudia, {status}","Cancel changes":"Ezeztatu aldaketak","Change title":"Aldatu titulua",Choose:"Aukeratu","Clear text":"Garbitu testua",Close:"Itxi","Close modal":"Itxi modala","Close navigation":"Itxi nabigazioa","Close sidebar":"Itxi albo-barra","Confirm changes":"Baieztatu aldaketak",Custom:"Pertsonalizatua","Edit item":"Editatu elementua","Error getting related resources":"Errorea erlazionatutako baliabideak lortzerakoan","Error parsing svg":"Errore bat gertatu da svg-a analizatzean","External documentation for {title}":"Kanpoko dokumentazioa {title}(r)entzat",Favorite:"Gogokoa",Flags:"Banderak","Food & Drink":"Janaria eta edariak","Frequently used":"Askotan erabilia",Global:"Globala","Go back to the list":"Bueltatu zerrendara","Hide password":"Ezkutatu pasahitza","Message limit of {count} characters reached":"Mezuaren {count} karaketere-limitera heldu zara","More items …":"Elementu gehiago …",Next:"Hurrengoa","No emoji found":"Ez da emojirik aurkitu","No results":"Emaitzarik ez",Objects:"Objektuak",Open:"Ireki",'Open link to "{resourceTitle}"':'Ireki esteka: "{resourceTitle}"',"Open navigation":"Ireki nabigazioa","Password is secure":"Pasahitza segurua da","Pause slideshow":"Pausatu diaporama","People & Body":"Jendea eta gorputza","Pick an emoji":"Hautatu emoji bat","Please select a time zone:":"Mesedez hautatu ordu-zona bat:",Previous:"Aurrekoa","Related resources":"Erlazionatutako baliabideak",Search:"Bilatu","Search results":"Bilaketa emaitzak","Select a tag":"Hautatu etiketa bat",Settings:"Ezarpenak","Settings navigation":"Nabigazio ezarpenak","Show password":"Erakutsi pasahitza","Smileys & Emotion":"Smileyak eta emozioa","Start slideshow":"Hasi diaporama",Submit:"Bidali",Symbols:"Sinboloak","Travel & Places":"Bidaiak eta lekuak","Type to search time zone":"Idatzi ordu-zona bat bilatzeko","Unable to search the group":"Ezin izan da taldea bilatu","Undo changes":"Aldaketak desegin",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Idatzi mezua, erabili "@" norbait aipatzeko, erabili ":" emojiak automatikoki osatzeko...'}},{locale:"fi_FI",translations:{"{tag} (invisible)":"{tag} (näkymätön)","{tag} (restricted)":"{tag} (rajoitettu)",Actions:"Toiminnot",Activities:"Aktiviteetit","Animals & Nature":"Eläimet & luonto","Avatar of {displayName}":"Käyttäjän {displayName} avatar","Avatar of {displayName}, {status}":"Käyttäjän {displayName} avatar, {status}","Cancel changes":"Peruuta muutokset",Choose:"Valitse",Close:"Sulje","Close navigation":"Sulje navigaatio","Confirm changes":"Vahvista muutokset",Custom:"Mukautettu","Edit item":"Muokkaa kohdetta","External documentation for {title}":"Ulkoinen dokumentaatio kohteelle {title}",Flags:"Liput","Food & Drink":"Ruoka & juoma","Frequently used":"Usein käytetyt",Global:"Yleinen","Go back to the list":"Siirry takaisin listaan","Message limit of {count} characters reached":"Viestin merkken enimmäisimäärä {count} täynnä ",Next:"Seuraava","No emoji found":"Emojia ei löytynyt","No results":"Ei tuloksia",Objects:"Esineet & asiat","Open navigation":"Avaa navigaatio","Pause slideshow":"Keskeytä diaesitys","People & Body":"Ihmiset & keho","Pick an emoji":"Valitse emoji","Please select a time zone:":"Valitse aikavyöhyke:",Previous:"Edellinen",Search:"Etsi","Search results":"Hakutulokset","Select a tag":"Valitse tagi",Settings:"Asetukset","Settings navigation":"Asetusnavigaatio","Smileys & Emotion":"Hymiöt & tunteet","Start slideshow":"Aloita diaesitys",Submit:"Lähetä",Symbols:"Symbolit","Travel & Places":"Matkustus & kohteet","Type to search time zone":"Kirjoita etsiäksesi aikavyöhyke","Unable to search the group":"Ryhmää ei voi hakea","Undo changes":"Kumoa muutokset","Write message, @ to mention someone, : for emoji autocompletion …":"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…"}},{locale:"fr",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restreint)",Actions:"Actions",Activities:"Activités","Animals & Nature":"Animaux & Nature","Anything shared with the same group of people will show up here":"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Annuler les modifications","Change title":"Modifier le titre",Choose:"Choisir","Clear text":"Effacer le texte",Close:"Fermer","Close modal":"Fermer la fenêtre","Close navigation":"Fermer la navigation","Close sidebar":"Fermer la barre latérale","Confirm changes":"Confirmer les modifications",Custom:"Personnalisé","Edit item":"Éditer l'élément","Error getting related resources":"Erreur à la récupération des ressources liées","Error parsing svg":"Erreur d'analyse SVG","External documentation for {title}":"Documentation externe pour {title}",Favorite:"Favori",Flags:"Drapeaux","Food & Drink":"Nourriture & Boissons","Frequently used":"Utilisés fréquemment",Global:"Global","Go back to the list":"Retourner à la liste","Hide password":"Cacher le mot de passe","Message limit of {count} characters reached":"Limite de messages de {count} caractères atteinte","More items …":"Plus d'éléments...",Next:"Suivant","No emoji found":"Pas d’émoji trouvé","No results":"Aucun résultat",Objects:"Objets",Open:"Ouvrir",'Open link to "{resourceTitle}"':'Ouvrir le lien vers "{resourceTitle}"',"Open navigation":"Ouvrir la navigation","Password is secure":"Le mot de passe est sécurisé","Pause slideshow":"Mettre le diaporama en pause","People & Body":"Personnes & Corps","Pick an emoji":"Choisissez un émoji","Please select a time zone:":"Sélectionnez un fuseau horaire : ",Previous:"Précédent","Related resources":"Ressources liées",Search:"Chercher","Search results":"Résultats de recherche","Select a tag":"Sélectionnez une balise",Settings:"Paramètres","Settings navigation":"Navigation dans les paramètres","Show password":"Afficher le mot de passe","Smileys & Emotion":"Smileys & Émotions","Start slideshow":"Démarrer le diaporama",Submit:"Valider",Symbols:"Symboles","Travel & Places":"Voyage & Lieux","Type to search time zone":"Saisissez les premiers lettres pour rechercher un fuseau horaire","Unable to search the group":"Impossible de chercher le groupe","Undo changes":"Annuler les changements",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Écrire un message, utiliser "@" pour mentionner une personne, ":" pour l\'autocomplétion des émojis...'}},{locale:"gl",translations:{"{tag} (invisible)":"{tag} (invisíbel)","{tag} (restricted)":"{tag} (restrinxido)",Actions:"Accións",Activities:"Actividades","Animals & Nature":"Animais e natureza","Cancel changes":"Cancelar os cambios",Choose:"Escoller",Close:"Pechar","Confirm changes":"Confirma os cambios",Custom:"Personalizado","External documentation for {title}":"Documentación externa para {title}",Flags:"Bandeiras","Food & Drink":"Comida e bebida","Frequently used":"Usado con frecuencia","Message limit of {count} characters reached":"Acadouse o límite de {count} caracteres por mensaxe",Next:"Seguinte","No emoji found":"Non se atopou ningún «emoji»","No results":"Sen resultados",Objects:"Obxectos","Pause slideshow":"Pausar o diaporama","People & Body":"Persoas e corpo","Pick an emoji":"Escolla un «emoji»",Previous:"Anterir",Search:"Buscar","Search results":"Resultados da busca","Select a tag":"Seleccione unha etiqueta",Settings:"Axustes","Settings navigation":"Navegación polos axustes","Smileys & Emotion":"Sorrisos e emocións","Start slideshow":"Iniciar o diaporama",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viaxes e lugares","Unable to search the group":"Non foi posíbel buscar o grupo","Write message, @ to mention someone …":"Escriba a mensaxe, @ para mencionar a alguén…"}},{locale:"he",translations:{"{tag} (invisible)":"{tag} (נסתר)","{tag} (restricted)":"{tag} (מוגבל)",Actions:"פעולות",Activities:"פעילויות","Animals & Nature":"חיות וטבע",Choose:"בחירה",Close:"סגירה",Custom:"בהתאמה אישית",Flags:"דגלים","Food & Drink":"מזון ומשקאות","Frequently used":"בשימוש תדיר",Next:"הבא","No emoji found":"לא נמצא אמוג׳י","No results":"אין תוצאות",Objects:"חפצים","Pause slideshow":"השהיית מצגת","People & Body":"אנשים וגוף","Pick an emoji":"נא לבחור אמוג׳י",Previous:"הקודם",Search:"חיפוש","Search results":"תוצאות חיפוש","Select a tag":"בחירת תגית",Settings:"הגדרות","Smileys & Emotion":"חייכנים ורגשונים","Start slideshow":"התחלת המצגת",Symbols:"סמלים","Travel & Places":"טיולים ומקומות","Unable to search the group":"לא ניתן לחפש בקבוצה"}},{locale:"hu_HU",translations:{"{tag} (invisible)":"{tag} (láthatatlan)","{tag} (restricted)":"{tag} (korlátozott)",Actions:"Műveletek",Activities:"Tevékenységek","Animals & Nature":"Állatok és természet","Anything shared with the same group of people will show up here":"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni","Avatar of {displayName}":"{displayName} profilképe","Avatar of {displayName}, {status}":"{displayName} profilképe, {status}","Cancel changes":"Változtatások elvetése","Change title":"Cím megváltoztatása",Choose:"Válassszon","Clear text":"Szöveg törlése",Close:"Bezárás","Close modal":"Ablak bezárása","Close navigation":"Navigáció bezárása","Close sidebar":"Oldalsáv bezárása","Confirm changes":"Változtatások megerősítése",Custom:"Egyéni","Edit item":"Elem szerkesztése","Error getting related resources":"Hiba a kapcsolódó erőforrások lekérésekor","Error parsing svg":"Hiba az SVG feldolgozásakor","External documentation for {title}":"Külső dokumentáció ehhez: {title}",Favorite:"Kedvenc",Flags:"Zászlók","Food & Drink":"Étel és ital","Frequently used":"Gyakran használt",Global:"Globális","Go back to the list":"Ugrás vissza a listához","Hide password":"Jelszó elrejtése","Message limit of {count} characters reached":"{count} karakteres üzenetkorlát elérve","More items …":"További elemek...",Next:"Következő","No emoji found":"Nem található emodzsi","No results":"Nincs találat",Objects:"Tárgyak",Open:"Megnyitás",'Open link to "{resourceTitle}"':"A(z) „{resourceTitle}” hivatkozásának megnyitása","Open navigation":"Navigáció megnyitása","Password is secure":"A jelszó biztonságos","Pause slideshow":"Diavetítés szüneteltetése","People & Body":"Emberek és test","Pick an emoji":"Válasszon egy emodzsit","Please select a time zone:":"Válasszon időzónát:",Previous:"Előző","Related resources":"Kapcsolódó erőforrások",Search:"Keresés","Search results":"Találatok","Select a tag":"Válasszon címkét",Settings:"Beállítások","Settings navigation":"Navigáció a beállításokban","Show password":"Jelszó megjelenítése","Smileys & Emotion":"Mosolyok és érzelmek","Start slideshow":"Diavetítés indítása",Submit:"Beküldés",Symbols:"Szimbólumok","Travel & Places":"Utazás és helyek","Type to search time zone":"Gépeljen az időzóna kereséséhez","Unable to search the group":"A csoport nem kereshető","Undo changes":"Változtatások visszavonása",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…"}},{locale:"is",translations:{"{tag} (invisible)":"{tag} (ósýnilegt)","{tag} (restricted)":"{tag} (takmarkað)",Actions:"Aðgerðir",Activities:"Aðgerðir","Animals & Nature":"Dýr og náttúra",Choose:"Velja",Close:"Loka",Custom:"Sérsniðið",Flags:"Flögg","Food & Drink":"Matur og drykkur","Frequently used":"Oftast notað",Next:"Næsta","No emoji found":"Ekkert tjáningartákn fannst","No results":"Engar niðurstöður",Objects:"Hlutir","Pause slideshow":"Gera hlé á skyggnusýningu","People & Body":"Fólk og líkami","Pick an emoji":"Veldu tjáningartákn",Previous:"Fyrri",Search:"Leita","Search results":"Leitarniðurstöður","Select a tag":"Veldu merki",Settings:"Stillingar","Smileys & Emotion":"Broskallar og tilfinningar","Start slideshow":"Byrja skyggnusýningu",Symbols:"Tákn","Travel & Places":"Staðir og ferðalög","Unable to search the group":"Get ekki leitað í hópnum"}},{locale:"it",translations:{"{tag} (invisible)":"{tag} (invisibile)","{tag} (restricted)":"{tag} (limitato)",Actions:"Azioni",Activities:"Attività","Animals & Nature":"Animali e natura","Anything shared with the same group of people will show up here":"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui","Avatar of {displayName}":"Avatar di {displayName}","Avatar of {displayName}, {status}":"Avatar di {displayName}, {status}","Cancel changes":"Annulla modifiche","Change title":"Modifica il titolo",Choose:"Scegli","Clear text":"Cancella il testo",Close:"Chiudi","Close modal":"Chiudi il messaggio modale","Close navigation":"Chiudi la navigazione","Close sidebar":"Chiudi la barra laterale","Confirm changes":"Conferma modifiche",Custom:"Personalizzato","Edit item":"Modifica l'elemento","Error getting related resources":"Errore nell'ottenere risorse correlate","Error parsing svg":"Errore nell'analizzare l'svg","External documentation for {title}":"Documentazione esterna per {title}",Favorite:"Preferito",Flags:"Bandiere","Food & Drink":"Cibo e bevande","Frequently used":"Usati di frequente",Global:"Globale","Go back to the list":"Torna all'elenco","Hide password":"Nascondi la password","Message limit of {count} characters reached":"Limite dei messaggi di {count} caratteri raggiunto","More items …":"Più elementi ...",Next:"Successivo","No emoji found":"Nessun emoji trovato","No results":"Nessun risultato",Objects:"Oggetti",Open:"Apri",'Open link to "{resourceTitle}"':'Apri il link a "{resourceTitle}"',"Open navigation":"Apri la navigazione","Password is secure":"La password è sicura","Pause slideshow":"Presentazione in pausa","People & Body":"Persone e corpo","Pick an emoji":"Scegli un emoji","Please select a time zone:":"Si prega di selezionare un fuso orario:",Previous:"Precedente","Related resources":"Risorse correlate",Search:"Cerca","Search results":"Risultati di ricerca","Select a tag":"Seleziona un'etichetta",Settings:"Impostazioni","Settings navigation":"Navigazione delle impostazioni","Show password":"Mostra la password","Smileys & Emotion":"Faccine ed emozioni","Start slideshow":"Avvia presentazione",Submit:"Invia",Symbols:"Simboli","Travel & Places":"Viaggi e luoghi","Type to search time zone":"Digita per cercare un fuso orario","Unable to search the group":"Impossibile cercare il gruppo","Undo changes":"Cancella i cambiamenti",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrivi un messaggio, "@" per menzionare qualcuno, ":" per il completamento automatico delle emoji ...'}},{locale:"ja_JP",translations:{"{tag} (invisible)":"{タグ} (不可視)","{tag} (restricted)":"{タグ} (制限付)",Actions:"操作",Activities:"アクティビティ","Animals & Nature":"動物と自然","Anything shared with the same group of people will show up here":"同じグループで共有しているものは、全てここに表示されます","Avatar of {displayName}":"{displayName} のアバター","Avatar of {displayName}, {status}":"{displayName}, {status} のアバター","Cancel changes":"変更をキャンセル","Change title":"タイトルを変更",Choose:"選択","Clear text":"テキストをクリア",Close:"閉じる","Close modal":"モーダルを閉じる","Close navigation":"ナビゲーションを閉じる","Close sidebar":"サイドバーを閉じる","Confirm changes":"変更を承認",Custom:"カスタム","Edit item":"編集","Error getting related resources":"関連リソースの取得エラー","External documentation for {title}":"{title} のための添付文書",Favorite:"お気に入り",Flags:"国旗","Food & Drink":"食べ物と飲み物","Frequently used":"よく使うもの",Global:"全体","Go back to the list":"リストに戻る","Hide password":"パスワードを非表示","Message limit of {count} characters reached":"{count} 文字のメッセージ上限に達しています","More items …":"他のアイテム",Next:"次","No emoji found":"絵文字が見つかりません","No results":"なし",Objects:"物",Open:"開く",'Open link to "{resourceTitle}"':'"{resourceTitle}"のリンクを開く',"Open navigation":"ナビゲーションを開く","Password is secure":"パスワードは保護されています","Pause slideshow":"スライドショーを一時停止","People & Body":"様々な人と体の部位","Pick an emoji":"絵文字を選択","Please select a time zone:":"タイムゾーンを選んで下さい:",Previous:"前","Related resources":"関連リソース",Search:"検索","Search results":"検索結果","Select a tag":"タグを選択",Settings:"設定","Settings navigation":"ナビゲーション設定","Show password":"パスワードを表示","Smileys & Emotion":"感情表現","Start slideshow":"スライドショーを開始",Submit:"提出",Symbols:"記号","Travel & Places":"旅行と場所","Type to search time zone":"タイムゾーン検索のため入力してください","Unable to search the group":"グループを検索できません","Undo changes":"変更を取り消し","Write message, @ to mention someone, : for emoji autocompletion …":"メッセージを書く、@で誰かを紹介する、: で絵文字を自動補完する ..."}},{locale:"lt_LT",translations:{"{tag} (invisible)":"{tag} (nematoma)","{tag} (restricted)":"{tag} (apribota)",Actions:"Veiksmai",Activities:"Veiklos","Animals & Nature":"Gyvūnai ir gamta",Choose:"Pasirinkti",Close:"Užverti",Custom:"Tinkinti","External documentation for {title}":"Išorinė {title} dokumentacija",Flags:"Vėliavos","Food & Drink":"Maistas ir gėrimai","Frequently used":"Dažniausiai naudoti","Message limit of {count} characters reached":"Pasiekta {count} simbolių žinutės riba",Next:"Kitas","No emoji found":"Nerasta jaustukų","No results":"Nėra rezultatų",Objects:"Objektai","Pause slideshow":"Pristabdyti skaidrių rodymą","People & Body":"Žmonės ir kūnas","Pick an emoji":"Pasirinkti jaustuką",Previous:"Ankstesnis",Search:"Ieškoti","Search results":"Paieškos rezultatai","Select a tag":"Pasirinkti žymę",Settings:"Nustatymai","Settings navigation":"Naršymas nustatymuose","Smileys & Emotion":"Šypsenos ir emocijos","Start slideshow":"Pradėti skaidrių rodymą",Submit:"Pateikti",Symbols:"Simboliai","Travel & Places":"Kelionės ir vietos","Unable to search the group":"Nepavyko atlikti paiešką grupėje","Write message, @ to mention someone …":"Rašykite žinutę, naudokite @ norėdami kažką paminėti…"}},{locale:"lv",translations:{"{tag} (invisible)":"{tag} (neredzams)","{tag} (restricted)":"{tag} (ierobežots)",Choose:"Izvēlēties",Close:"Aizvērt",Next:"Nākamais","No results":"Nav rezultātu","Pause slideshow":"Pauzēt slaidrādi",Previous:"Iepriekšējais","Select a tag":"Izvēlēties birku",Settings:"Iestatījumi","Start slideshow":"Sākt slaidrādi"}},{locale:"mk",translations:{"{tag} (invisible)":"{tag} (невидливо)","{tag} (restricted)":"{tag} (ограничено)",Actions:"Акции",Activities:"Активности","Animals & Nature":"Животни & Природа","Avatar of {displayName}":"Аватар на {displayName}","Avatar of {displayName}, {status}":"Аватар на {displayName}, {status}","Cancel changes":"Откажи ги промените","Change title":"Промени наслов",Choose:"Избери",Close:"Затвори","Close modal":"Затвори модал","Close navigation":"Затвори навигација","Confirm changes":"Потврди ги промените",Custom:"Прилагодени","Edit item":"Уреди","External documentation for {title}":"Надворешна документација за {title}",Favorite:"Фаворити",Flags:"Знамиња","Food & Drink":"Храна & Пијалоци","Frequently used":"Најчесто користени",Global:"Глобално","Go back to the list":"Врати се на листата",items:"ставки","Message limit of {count} characters reached":"Ограничувањето на должината на пораката од {count} карактери е надминато","More {dashboardItemType} …":"Повеќе {dashboardItemType} …",Next:"Следно","No emoji found":"Не се пронајдени емотикони","No results":"Нема резултати",Objects:"Објекти",Open:"Отвори","Open navigation":"Отвори навигација","Pause slideshow":"Пузирај слајдшоу","People & Body":"Луѓе & Тело","Pick an emoji":"Избери емотикон","Please select a time zone:":"Изберете временска зона:",Previous:"Предходно",Search:"Барај","Search results":"Резултати од барувањето","Select a tag":"Избери ознака",Settings:"Параметри","Settings navigation":"Параметри за навигација","Smileys & Emotion":"Смешковци & Емотикони","Start slideshow":"Стартувај слајдшоу",Submit:"Испрати",Symbols:"Симболи","Travel & Places":"Патувања & Места","Type to search time zone":"Напишете за да пребарате временска зона","Unable to search the group":"Неможе да се принајде групата","Undo changes":"Врати ги промените","Write message, @ to mention someone, : for emoji autocompletion …":"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ..."}},{locale:"my",translations:{"{tag} (invisible)":"{tag} (ကွယ်ဝှက်ထား)","{tag} (restricted)":"{tag} (ကန့်သတ်)",Actions:"လုပ်ဆောင်ချက်များ",Activities:"ပြုလုပ်ဆောင်တာများ","Animals & Nature":"တိရစ္ဆာန်များနှင့် သဘာဝ","Avatar of {displayName}":"{displayName} ၏ ကိုယ်ပွား","Cancel changes":"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်",Choose:"ရွေးချယ်ရန်",Close:"ပိတ်ရန်","Confirm changes":"ပြောင်းလဲမှုများ အတည်ပြုရန်",Custom:"အလိုကျချိန်ညှိမှု","External documentation for {title}":"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း",Flags:"အလံများ","Food & Drink":"အစားအသောက်","Frequently used":"မကြာခဏအသုံးပြုသော",Global:"ကမ္ဘာလုံးဆိုင်ရာ","Message limit of {count} characters reached":"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ",Next:"နောက်သို့ဆက်ရန်","No emoji found":"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ","No results":"ရလဒ်မရှိပါ",Objects:"အရာဝတ္ထုများ","Pause slideshow":"စလိုက်ရှိုး ခေတ္တရပ်ရန်","People & Body":"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်","Pick an emoji":"အီမိုဂျီရွေးရန်","Please select a time zone:":"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ",Previous:"ယခင်",Search:"ရှာဖွေရန်","Search results":"ရှာဖွေမှု ရလဒ်များ","Select a tag":"tag ရွေးချယ်ရန်",Settings:"ချိန်ညှိချက်များ","Settings navigation":"ချိန်ညှိချက်အညွှန်း","Smileys & Emotion":"စမိုင်လီများနှင့် အီမိုရှင်း","Start slideshow":"စလိုက်ရှိုးအား စတင်ရန်",Submit:"တင်သွင်းရန်",Symbols:"သင်္ကေတများ","Travel & Places":"ခရီးသွားလာခြင်းနှင့် နေရာများ","Type to search time zone":"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ","Unable to search the group":"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ","Write message, @ to mention someone …":"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်..."}},{locale:"nb_NO",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (beskyttet)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr og natur","Anything shared with the same group of people will show up here":"Alt som er delt med den samme gruppen vil vises her","Avatar of {displayName}":"Avataren til {displayName}","Avatar of {displayName}, {status}":"{displayName}'s avatar, {status}","Cancel changes":"Avbryt endringer","Change title":"Endre tittel",Choose:"Velg","Clear text":"Fjern tekst",Close:"Lukk","Close modal":"Lukk modal","Close navigation":"Lukk navigasjon","Close sidebar":"Lukk sidepanel","Confirm changes":"Bekreft endringer",Custom:"Tilpasset","Edit item":"Rediger","Error getting related resources":"Feil ved henting av relaterte ressurser","External documentation for {title}":"Ekstern dokumentasjon for {title}",Favorite:"Favoritt",Flags:"Flagg","Food & Drink":"Mat og drikke","Frequently used":"Ofte brukt",Global:"Global","Go back to the list":"Gå tilbake til listen","Hide password":"Skjul passord","Message limit of {count} characters reached":"Karakter begrensing {count} nådd i melding","More items …":"Flere gjenstander...",Next:"Neste","No emoji found":"Fant ingen emoji","No results":"Ingen resultater",Objects:"Objekter",Open:"Åpne",'Open link to "{resourceTitle}"':'Åpne link til "{resourceTitle}"',"Open navigation":"Åpne navigasjon","Password is secure":"Passordet er sikkert","Pause slideshow":"Pause lysbildefremvisning","People & Body":"Mennesker og kropp","Pick an emoji":"Velg en emoji","Please select a time zone:":"Vennligst velg tidssone",Previous:"Forrige","Related resources":"Relaterte ressurser",Search:"Søk","Search results":"Søkeresultater","Select a tag":"Velg en merkelapp",Settings:"Innstillinger","Settings navigation":"Navigasjonsinstillinger","Show password":"Vis passord","Smileys & Emotion":"Smilefjes og følelser","Start slideshow":"Start lysbildefremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Reise og steder","Type to search time zone":"Tast for å søke etter tidssone","Unable to search the group":"Kunne ikke søke i gruppen","Undo changes":"Tilbakestill endringer","Write message, @ to mention someone, : for emoji autocompletion …":"Skriv melding, @ for å nevne noen, : for emoji-autofullføring…"}},{locale:"nl",translations:{"{tag} (invisible)":"{tag} (onzichtbaar)","{tag} (restricted)":"{tag} (beperkt)",Actions:"Acties",Activities:"Activiteiten","Animals & Nature":"Dieren & Natuur","Avatar of {displayName}":"Avatar van {displayName}","Avatar of {displayName}, {status}":"Avatar van {displayName}, {status}","Cancel changes":"Wijzigingen annuleren",Choose:"Kies",Close:"Sluiten","Close navigation":"Navigatie sluiten","Confirm changes":"Wijzigingen bevestigen",Custom:"Aangepast","Edit item":"Item bewerken","External documentation for {title}":"Externe documentatie voor {title}",Flags:"Vlaggen","Food & Drink":"Eten & Drinken","Frequently used":"Vaak gebruikt",Global:"Globaal","Go back to the list":"Ga terug naar de lijst","Message limit of {count} characters reached":"Berichtlimiet van {count} karakters bereikt",Next:"Volgende","No emoji found":"Geen emoji gevonden","No results":"Geen resultaten",Objects:"Objecten","Open navigation":"Navigatie openen","Pause slideshow":"Pauzeer diavoorstelling","People & Body":"Mensen & Lichaam","Pick an emoji":"Kies een emoji","Please select a time zone:":"Selecteer een tijdzone:",Previous:"Vorige",Search:"Zoeken","Search results":"Zoekresultaten","Select a tag":"Selecteer een label",Settings:"Instellingen","Settings navigation":"Instellingen navigatie","Smileys & Emotion":"Smileys & Emotie","Start slideshow":"Start diavoorstelling",Submit:"Verwerken",Symbols:"Symbolen","Travel & Places":"Reizen & Plaatsen","Type to search time zone":"Type om de tijdzone te zoeken","Unable to search the group":"Kan niet in de groep zoeken","Undo changes":"Wijzigingen ongedaan maken","Write message, @ to mention someone, : for emoji autocompletion …":"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ..."}},{locale:"oc",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (limit)",Actions:"Accions",Choose:"Causir",Close:"Tampar",Next:"Seguent","No results":"Cap de resultat","Pause slideshow":"Metre en pausa lo diaporama",Previous:"Precedent","Select a tag":"Seleccionar una etiqueta",Settings:"Paramètres","Start slideshow":"Lançar lo diaporama"}},{locale:"pl",translations:{"{tag} (invisible)":"{tag} (niewidoczna)","{tag} (restricted)":"{tag} (ograniczona)",Actions:"Działania",Activities:"Aktywność","Animals & Nature":"Zwierzęta i natura","Anything shared with the same group of people will show up here":"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób","Avatar of {displayName}":"Awatar {displayName}","Avatar of {displayName}, {status}":"Awatar {displayName}, {status}","Cancel changes":"Anuluj zmiany","Change title":"Zmień tytuł",Choose:"Wybierz","Clear text":"Wyczyść tekst",Close:"Zamknij","Close modal":"Zamknij modal","Close navigation":"Zamknij nawigację","Close sidebar":"Zamknij pasek boczny","Confirm changes":"Potwierdź zmiany",Custom:"Zwyczajne","Edit item":"Edytuj element","Error getting related resources":"Błąd podczas pobierania powiązanych zasobów","Error parsing svg":"Błąd podczas analizowania svg","External documentation for {title}":"Dokumentacja zewnętrzna dla {title}",Favorite:"Ulubiony",Flags:"Flagi","Food & Drink":"Jedzenie i picie","Frequently used":"Często używane",Global:"Globalnie","Go back to the list":"Powrót do listy","Hide password":"Ukryj hasło","Message limit of {count} characters reached":"Przekroczono limit wiadomości wynoszący {count} znaków","More items …":"Więcej pozycji…",Next:"Następny","No emoji found":"Nie znaleziono emoji","No results":"Brak wyników",Objects:"Obiekty",Open:"Otwórz",'Open link to "{resourceTitle}"':'Otwórz link do "{resourceTitle}"',"Open navigation":"Otwórz nawigację","Password is secure":"Hasło jest bezpieczne","Pause slideshow":"Wstrzymaj pokaz slajdów","People & Body":"Ludzie i ciało","Pick an emoji":"Wybierz emoji","Please select a time zone:":"Wybierz strefę czasową:",Previous:"Poprzedni","Related resources":"Powiązane zasoby",Search:"Szukaj","Search results":"Wyniki wyszukiwania","Select a tag":"Wybierz etykietę",Settings:"Ustawienia","Settings navigation":"Ustawienia nawigacji","Show password":"Pokaż hasło","Smileys & Emotion":"Buźki i emotikony","Start slideshow":"Rozpocznij pokaz slajdów",Submit:"Wyślij",Symbols:"Symbole","Travel & Places":"Podróże i miejsca","Type to search time zone":"Wpisz, aby wyszukać strefę czasową","Unable to search the group":"Nie można przeszukać grupy","Undo changes":"Cofnij zmiany",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Napisz wiadomość, "@" aby o kimś wspomnieć, ":" dla autouzupełniania emoji…'}},{locale:"pt_BR",translations:{"{tag} (invisible)":"{tag} (invisível)","{tag} (restricted)":"{tag} (restrito) ",Actions:"Ações",Activities:"Atividades","Animals & Nature":"Animais & Natureza","Anything shared with the same group of people will show up here":"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar alterações","Change title":"Alterar título",Choose:"Escolher","Clear text":"Limpar texto",Close:"Fechar","Close modal":"Fechar modal","Close navigation":"Fechar navegação","Close sidebar":"Fechar barra lateral","Confirm changes":"Confirmar alterações",Custom:"Personalizado","Edit item":"Editar item","Error getting related resources":"Erro ao obter recursos relacionados","Error parsing svg":"Erro ao analisar svg","External documentation for {title}":"Documentação externa para {title}",Favorite:"Favorito",Flags:"Bandeiras","Food & Drink":"Comida & Bebida","Frequently used":"Mais usados",Global:"Global","Go back to the list":"Volte para a lista","Hide password":"Ocultar a senha","Message limit of {count} characters reached":"Limite de mensagem de {count} caracteres atingido","More items …":"Mais itens …",Next:"Próximo","No emoji found":"Nenhum emoji encontrado","No results":"Sem resultados",Objects:"Objetos",Open:"Aberto",'Open link to "{resourceTitle}"':'Abrir link para "{resourceTitle}"',"Open navigation":"Abrir navegação","Password is secure":"A senha é segura","Pause slideshow":"Pausar apresentação de slides","People & Body":"Pessoas & Corpo","Pick an emoji":"Escolha um emoji","Please select a time zone:":"Selecione um fuso horário: ",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Pesquisar","Search results":"Resultados da pesquisa","Select a tag":"Selecionar uma tag",Settings:"Configurações","Settings navigation":"Navegação de configurações","Show password":"Mostrar senha","Smileys & Emotion":"Smiles & Emoções","Start slideshow":"Iniciar apresentação de slides",Submit:"Enviar",Symbols:"Símbolo","Travel & Places":"Viagem & Lugares","Type to search time zone":"Digite para pesquisar o fuso horário ","Unable to search the group":"Não foi possível pesquisar o grupo","Undo changes":"Desfazer modificações",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escreva mensagens, use "@" para mencionar algum, use ":" for autocompletar emoji …'}},{locale:"pt_PT",translations:{"{tag} (invisible)":"{tag} (invisivel)","{tag} (restricted)":"{tag} (restrito)",Actions:"Ações",Choose:"Escolher",Close:"Fechar",Next:"Seguinte","No results":"Sem resultados","Pause slideshow":"Pausar diaporama",Previous:"Anterior","Select a tag":"Selecionar uma etiqueta",Settings:"Definições","Start slideshow":"Iniciar diaporama","Unable to search the group":"Não é possível pesquisar o grupo"}},{locale:"ro",translations:{"{tag} (invisible)":"{tag} (invizibil)","{tag} (restricted)":"{tag} (restricționat)",Actions:"Acțiuni",Activities:"Activități","Animals & Nature":"Animale și natură","Anything shared with the same group of people will show up here":"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici","Avatar of {displayName}":"Avatarul lui {displayName}","Avatar of {displayName}, {status}":"Avatarul lui {displayName}, {status}","Cancel changes":"Anulează modificările","Change title":"Modificați titlul",Choose:"Alegeți","Clear text":"Șterge textul",Close:"Închideți","Close modal":"Închideți modulul","Close navigation":"Închideți navigarea","Close sidebar":"Închide bara laterală","Confirm changes":"Confirmați modificările",Custom:"Personalizat","Edit item":"Editați elementul","Error getting related resources":" Eroare la returnarea resurselor legate","Error parsing svg":"Eroare de analizare a svg","External documentation for {title}":"Documentație externă pentru {title}",Favorite:"Favorit",Flags:"Marcaje","Food & Drink":"Alimente și băuturi","Frequently used":"Utilizate frecvent",Global:"Global","Go back to the list":"Întoarceți-vă la listă","Hide password":"Ascunde parola","Message limit of {count} characters reached":"Limita mesajului de {count} caractere a fost atinsă","More items …":"Mai multe articole ...",Next:"Următorul","No emoji found":"Nu s-a găsit niciun emoji","No results":"Nu există rezultate",Objects:"Obiecte",Open:"Deschideți",'Open link to "{resourceTitle}"':'Deschide legătura la "{resourceTitle}"',"Open navigation":"Deschideți navigația","Password is secure":"Parola este sigură","Pause slideshow":"Pauză prezentare de diapozitive","People & Body":"Oameni și corp","Pick an emoji":"Alege un emoji","Please select a time zone:":"Vă rugăm să selectați un fus orar:",Previous:"Anterior","Related resources":"Resurse legate",Search:"Căutare","Search results":"Rezultatele căutării","Select a tag":"Selectați o etichetă",Settings:"Setări","Settings navigation":"Navigare setări","Show password":"Arată parola","Smileys & Emotion":"Zâmbete și emoții","Start slideshow":"Începeți prezentarea de diapozitive",Submit:"Trimiteți",Symbols:"Simboluri","Travel & Places":"Călătorii și locuri","Type to search time zone":"Tastați pentru a căuta fusul orar","Unable to search the group":"Imposibilitatea de a căuta în grup","Undo changes":"Anularea modificărilor",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrie un mesaj, folosește "@" pentru a menționa pe cineva, folosește ":" pentru autocompletarea cu emoji ...'}},{locale:"ru",translations:{"{tag} (invisible)":"{tag} (невидимое)","{tag} (restricted)":"{tag} (ограниченное)",Actions:"Действия ",Activities:"События","Animals & Nature":"Животные и природа ","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Фотография {displayName}, {status}","Cancel changes":"Отменить изменения",Choose:"Выберите",Close:"Закрыть","Close modal":"Закрыть модальное окно","Close navigation":"Закрыть навигацию","Confirm changes":"Подтвердить изменения",Custom:"Пользовательское","Edit item":"Изменить элемент","External documentation for {title}":"Внешняя документация для {title}",Flags:"Флаги","Food & Drink":"Еда, напиток","Frequently used":"Часто используемый",Global:"Глобальный","Go back to the list":"Вернуться к списку",items:"элементов","Message limit of {count} characters reached":"Достигнуто ограничение на количество символов в {count}","More {dashboardItemType} …":"Больше {dashboardItemType} …",Next:"Следующее","No emoji found":"Эмодзи не найдено","No results":"Результаты отсуствуют",Objects:"Объекты",Open:"Открыть","Open navigation":"Открыть навигацию","Pause slideshow":"Приостановить показ слйдов","People & Body":"Люди и тело","Pick an emoji":"Выберите эмодзи","Please select a time zone:":"Пожалуйста, выберите часовой пояс:",Previous:"Предыдущее",Search:"Поиск","Search results":"Результаты поиска","Select a tag":"Выберите метку",Settings:"Параметры","Settings navigation":"Навигация по настройкам","Smileys & Emotion":"Смайлики и эмоции","Start slideshow":"Начать показ слайдов",Submit:"Утвердить",Symbols:"Символы","Travel & Places":"Путешествия и места","Type to search time zone":"Введите для поиска часового пояса","Unable to search the group":"Невозможно найти группу","Undo changes":"Отменить изменения","Write message, @ to mention someone, : for emoji autocompletion …":"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …"}},{locale:"sk_SK",translations:{"{tag} (invisible)":"{tag} (neviditeľný)","{tag} (restricted)":"{tag} (obmedzený)",Actions:"Akcie",Activities:"Aktivity","Animals & Nature":"Zvieratá a príroda","Avatar of {displayName}":"Avatar {displayName}","Avatar of {displayName}, {status}":"Avatar {displayName}, {status}","Cancel changes":"Zrušiť zmeny",Choose:"Vybrať",Close:"Zatvoriť","Close navigation":"Zavrieť navigáciu","Confirm changes":"Potvrdiť zmeny",Custom:"Zvyk","Edit item":"Upraviť položku","External documentation for {title}":"Externá dokumentácia pre {title}",Flags:"Vlajky","Food & Drink":"Jedlo a nápoje","Frequently used":"Často používané",Global:"Globálne","Go back to the list":"Naspäť na zoznam","Message limit of {count} characters reached":"Limit správy na {count} znakov dosiahnutý",Next:"Ďalší","No emoji found":"Nenašli sa žiadne emodži","No results":"Žiadne výsledky",Objects:"Objekty","Open navigation":"Otvoriť navigáciu","Pause slideshow":"Pozastaviť prezentáciu","People & Body":"Ľudia a telo","Pick an emoji":"Vyberte si emodži","Please select a time zone:":"Prosím vyberte časovú zónu:",Previous:"Predchádzajúci",Search:"Hľadať","Search results":"Výsledky vyhľadávania","Select a tag":"Vybrať štítok",Settings:"Nastavenia","Settings navigation":"Navigácia v nastaveniach","Smileys & Emotion":"Smajlíky a emócie","Start slideshow":"Začať prezentáciu",Submit:"Odoslať",Symbols:"Symboly","Travel & Places":"Cestovanie a miesta","Type to search time zone":"Začníte písať pre vyhľadávanie časovej zóny","Unable to search the group":"Skupinu sa nepodarilo nájsť","Undo changes":"Vrátiť zmeny","Write message, @ to mention someone, : for emoji autocompletion …":"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…"}},{locale:"sl",translations:{"{tag} (invisible)":"{tag} (nevidno)","{tag} (restricted)":"{tag} (omejeno)",Actions:"Dejanja",Activities:"Dejavnosti","Animals & Nature":"Živali in Narava","Avatar of {displayName}":"Podoba {displayName}","Avatar of {displayName}, {status}":"Prikazna slika {displayName}, {status}","Cancel changes":"Prekliči spremembe","Change title":"Spremeni naziv",Choose:"Izbor","Clear text":"Počisti besedilo",Close:"Zapri","Close modal":"Zapri pojavno okno","Close navigation":"Zapri krmarjenje","Close sidebar":"Zapri stransko vrstico","Confirm changes":"Potrdi spremembe",Custom:"Po meri","Edit item":"Uredi predmet","Error getting related resources":"Napaka pridobivanja povezanih virov","External documentation for {title}":"Zunanja dokumentacija za {title}",Favorite:"Priljubljeno",Flags:"Zastavice","Food & Drink":"Hrana in Pijača","Frequently used":"Pogostost uporabe",Global:"Splošno","Go back to the list":"Vrni se na seznam","Hide password":"Skrij geslo","Message limit of {count} characters reached":"Dosežena omejitev {count} znakov na sporočilo.","More items …":"Več predmetov ...",Next:"Naslednji","No emoji found":"Ni najdenih izraznih ikon","No results":"Ni zadetkov",Objects:"Predmeti",Open:"Odpri",'Open link to "{resourceTitle}"':"Odpri povezavo do »{resourceTitle}«","Open navigation":"Odpri krmarjenje","Password is secure":"Geslo je varno","Pause slideshow":"Ustavi predstavitev","People & Body":"Ljudje in Telo","Pick a date":"Izbor datuma","Pick a date and a time":"Izbor datuma in časa","Pick a month":"Izbor meseca","Pick a time":"Izbor časa","Pick a week":"Izbor tedna","Pick a year":"Izbor leta","Pick an emoji":"Izbor izrazne ikone","Please select a time zone:":"Izbor časovnega pasu:",Previous:"Predhodni","Related resources":"Povezani viri",Search:"Iskanje","Search results":"Zadetki iskanja","Select a tag":"Izbor oznake",Settings:"Nastavitve","Settings navigation":"Krmarjenje nastavitev","Show password":"Pokaži geslo","Smileys & Emotion":"Izrazne ikone","Start slideshow":"Začni predstavitev",Submit:"Pošlji",Symbols:"Simboli","Travel & Places":"Potovanja in Kraji","Type to search time zone":"Vpišite niz za iskanje časovnega pasu","Unable to search the group":"Ni mogoče iskati po skupini","Undo changes":"Razveljavi spremembe","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …"}},{locale:"sr",translations:{"{tag} (invisible)":"{tag} (nevidljivo)","{tag} (restricted)":"{tag} (ograničeno)",Actions:"Radnje",Activities:"Aktivnosti","Animals & Nature":"Životinje i Priroda","Avatar of {displayName}":"Avatar za {displayName}","Avatar of {displayName}, {status}":"Avatar za {displayName}, {status}","Cancel changes":"Otkaži izmene","Change title":"Izmeni naziv",Choose:"Изаберите",Close:"Затвори","Close modal":"Zatvori modal","Close navigation":"Zatvori navigaciju","Close sidebar":"Zatvori bočnu traku","Confirm changes":"Potvrdite promene",Custom:"Po meri","Edit item":"Uredi stavku","External documentation for {title}":"Eksterna dokumentacija za {title}",Favorite:"Omiljeni",Flags:"Zastave","Food & Drink":"Hrana i Piće","Frequently used":"Često korišćeno",Global:"Globalno","Go back to the list":"Natrag na listu",items:"stavke","Message limit of {count} characters reached":"Dostignuto je ograničenje za poruke od {count} znakova","More {dashboardItemType} …":"Više {dashboardItemType} …",Next:"Следеће","No emoji found":"Nije pronađen nijedan emodži","No results":"Нема резултата",Objects:"Objekti",Open:"Otvori","Open navigation":"Otvori navigaciju","Pause slideshow":"Паузирај слајд шоу","People & Body":"Ljudi i Telo","Pick an emoji":"Izaberi emodži","Please select a time zone:":"Molimo izaberite vremensku zonu:",Previous:"Претходно",Search:"Pretraži","Search results":"Rezultati pretrage","Select a tag":"Изаберите ознаку",Settings:"Поставке","Settings navigation":"Navigacija u podešavanjima","Smileys & Emotion":"Smajli i Emocije","Start slideshow":"Покрени слајд шоу",Submit:"Prihvati",Symbols:"Simboli","Travel & Places":"Putovanja i Mesta","Type to search time zone":"Ukucaj da pretražiš vremenske zone","Unable to search the group":"Nije moguće pretražiti grupu","Undo changes":"Poništi promene","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…"}},{locale:"sv",translations:{"{tag} (invisible)":"{tag} (osynlig)","{tag} (restricted)":"{tag} (begränsad)",Actions:"Åtgärder",Activities:"Aktiviteter","Animals & Nature":"Djur & Natur","Anything shared with the same group of people will show up here":"Något som delats med samma grupp av personer kommer att visas här","Avatar of {displayName}":"{displayName}s avatar","Avatar of {displayName}, {status}":"{displayName}s avatar, {status}","Cancel changes":"Avbryt ändringar","Change title":"Ändra titel",Choose:"Välj","Clear text":"Ta bort text",Close:"Stäng","Close modal":"Stäng modal","Close navigation":"Stäng navigering","Close sidebar":"Stäng sidopanel","Confirm changes":"Bekräfta ändringar",Custom:"Anpassad","Edit item":"Ändra","Error getting related resources":"Problem att hämta relaterade resurser","External documentation for {title}":"Extern dokumentation för {title}",Favorite:"Favorit",Flags:"Flaggor","Food & Drink":"Mat & Dryck","Frequently used":"Används ofta",Global:"Global","Go back to the list":"Gå tillbaka till listan","Hide password":"Göm lössenordet","Message limit of {count} characters reached":"Meddelandegräns {count} tecken används","More items …":"Fler objekt",Next:"Nästa","No emoji found":"Hittade inga emojis","No results":"Inga resultat",Objects:"Objekt",Open:"Öppna",'Open link to "{resourceTitle}"':'Öppna länk till "{resourceTitle}"',"Open navigation":"Öppna navigering","Password is secure":"Lössenordet är säkert","Pause slideshow":"Pausa bildspelet","People & Body":"Kropp & Själ","Pick an emoji":"Välj en emoji","Please select a time zone:":"Välj tidszon:",Previous:"Föregående","Related resources":"Relaterade resurser",Search:"Sök","Search results":"Sökresultat","Select a tag":"Välj en tag",Settings:"Inställningar","Settings navigation":"Inställningsmeny","Show password":"Visa lössenordet","Smileys & Emotion":"Selfies & Känslor","Start slideshow":"Starta bildspelet",Submit:"Skicka",Symbols:"Symboler","Travel & Places":"Resor & Sevärdigheter","Type to search time zone":"Skriv för att välja tidszon","Unable to search the group":"Kunde inte söka i gruppen","Undo changes":"Ångra ändringar",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv meddelande, använd "@" för att nämna någon, använd ":" för automatiska emojiförslag ...'}},{locale:"tr",translations:{"{tag} (invisible)":"{tag} (görünmez)","{tag} (restricted)":"{tag} (kısıtlı)",Actions:"İşlemler",Activities:"Etkinlikler","Animals & Nature":"Hayvanlar ve Doğa","Anything shared with the same group of people will show up here":"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir","Avatar of {displayName}":"{displayName} avatarı","Avatar of {displayName}, {status}":"{displayName}, {status} avatarı","Cancel changes":"Değişiklikleri iptal et","Change title":"Başlığı değiştir",Choose:"Seçin","Clear text":"Metni temizle",Close:"Kapat","Close modal":"Üste açılan pencereyi kapat","Close navigation":"Gezinmeyi kapat","Close sidebar":"Yan çubuğu kapat","Confirm changes":"Değişiklikleri onayla",Custom:"Özel","Edit item":"Ögeyi düzenle","Error getting related resources":"İlgili kaynaklar alınırken sorun çıktı","Error parsing svg":"svg işlenirken sorun çıktı","External documentation for {title}":"{title} için dış belgeler",Favorite:"Sık kullanılanlara ekle",Flags:"Bayraklar","Food & Drink":"Yeme ve İçme","Frequently used":"Sık kullanılanlar",Global:"Evrensel","Go back to the list":"Listeye dön","Hide password":"Parolayı gizle","Message limit of {count} characters reached":"{count} karakter ileti sınırına ulaşıldı","More items …":"Diğer ögeler…",Next:"Sonraki","No emoji found":"Herhangi bir emoji bulunamadı","No results":"Herhangi bir sonuç bulunamadı",Objects:"Nesneler",Open:"Aç",'Open link to "{resourceTitle}"':'"{resourceTitle}" bağlantısını aç',"Open navigation":"Gezinmeyi aç","Password is secure":"Parola güvenli","Pause slideshow":"Slayt sunumunu duraklat","People & Body":"İnsanlar ve Beden","Pick an emoji":"Bir emoji seçin","Please select a time zone:":"Lütfen bir saat dilimi seçin:",Previous:"Önceki","Related resources":"İlgili kaynaklar",Search:"Arama","Search results":"Arama sonuçları","Select a tag":"Bir etiket seçin",Settings:"Ayarlar","Settings navigation":"Gezinme ayarları","Show password":"Parolayı görüntüle","Smileys & Emotion":"İfadeler ve Duygular","Start slideshow":"Slayt sunumunu başlat",Submit:"Gönder",Symbols:"Simgeler","Travel & Places":"Gezi ve Yerler","Type to search time zone":"Saat dilimi aramak için yazmaya başlayın","Unable to search the group":"Grupta arama yapılamadı","Undo changes":"Değişiklikleri geri al",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için ":" kullanın…'}},{locale:"uk",translations:{"{tag} (invisible)":"{tag} (невидимий)","{tag} (restricted)":"{tag} (обмежений)",Actions:"Дії",Activities:"Діяльність","Animals & Nature":"Тварини та природа","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Аватар {displayName}, {status}","Cancel changes":"Скасувати зміни","Change title":"Змінити назву",Choose:"ВиберітьВиберіть","Clear text":"Очистити текст",Close:"Закрити","Close modal":"Закрити модаль","Close navigation":"Закрити навігацію","Close sidebar":"Закрити бічну панель","Confirm changes":"Підтвердити зміни",Custom:"Власне","Edit item":"Редагувати елемент","External documentation for {title}":"Зовнішня документація для {title}",Favorite:"Улюблений",Flags:"Прапори","Food & Drink":"Їжа та напої","Frequently used":"Найчастіші",Global:"Глобальний","Go back to the list":"Повернутися до списку","Hide password":"Приховати пароль",items:"елементи","Message limit of {count} characters reached":"Вичерпано ліміт у {count} символів для повідомлення","More {dashboardItemType} …":"Більше {dashboardItemType}…",Next:"Вперед","No emoji found":"Емоційки відсутні","No results":"Відсутні результати",Objects:"Об'єкти",Open:"Відкрити","Open navigation":"Відкрити навігацію","Password is secure":"Пароль безпечний","Pause slideshow":"Пауза у показі слайдів","People & Body":"Люди та жести","Pick an emoji":"Виберіть емоційку","Please select a time zone:":"Виберіть часовий пояс:",Previous:"Назад",Search:"Пошук","Search results":"Результати пошуку","Select a tag":"Виберіть позначку",Settings:"Налаштування","Settings navigation":"Навігація у налаштуваннях","Show password":"Показати пароль","Smileys & Emotion":"Смайли та емоції","Start slideshow":"Почати показ слайдів",Submit:"Надіслати",Symbols:"Символи","Travel & Places":"Поїздки та місця","Type to search time zone":"Введіть для пошуку часовий пояс","Unable to search the group":"Неможливо шукати в групі","Undo changes":"Скасувати зміни","Write message, @ to mention someone, : for emoji autocompletion …":"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…"}},{locale:"zh_CN",translations:{"{tag} (invisible)":"{tag} (不可见)","{tag} (restricted)":"{tag} (受限)",Actions:"行为",Activities:"活动","Animals & Nature":"动物 & 自然","Anything shared with the same group of people will show up here":"与同组用户分享的所有内容都会显示于此","Avatar of {displayName}":"{displayName}的头像","Avatar of {displayName}, {status}":"{displayName}的头像,{status}","Cancel changes":"取消更改","Change title":"更改标题",Choose:"选择","Clear text":"清除文本",Close:"关闭","Close modal":"关闭窗口","Close navigation":"关闭导航","Close sidebar":"关闭侧边栏","Confirm changes":"确认更改",Custom:"自定义","Edit item":"编辑项目","Error getting related resources":"获取相关资源时出错","Error parsing svg":"解析 svg 时出错","External documentation for {title}":"{title}的外部文档",Favorite:"喜爱",Flags:"旗帜","Food & Drink":"食物 & 饮品","Frequently used":"经常使用",Global:"全局","Go back to the list":"返回至列表","Hide password":"隐藏密码","Message limit of {count} characters reached":"已达到 {count} 个字符的消息限制","More items …":"更多项目…",Next:"下一个","No emoji found":"表情未找到","No results":"无结果",Objects:"物体",Open:"打开",'Open link to "{resourceTitle}"':'打开"{resourceTitle}"的连接',"Open navigation":"开启导航","Password is secure":"密码安全","Pause slideshow":"暂停幻灯片","People & Body":"人 & 身体","Pick an emoji":"选择一个表情","Please select a time zone:":"请选择一个时区:",Previous:"上一个","Related resources":"相关资源",Search:"搜索","Search results":"搜索结果","Select a tag":"选择一个标签",Settings:"设置","Settings navigation":"设置向导","Show password":"显示密码","Smileys & Emotion":"笑脸 & 情感","Start slideshow":"开始幻灯片",Submit:"提交",Symbols:"符号","Travel & Places":"旅游 & 地点","Type to search time zone":"打字以搜索时区","Unable to search the group":"无法搜索分组","Undo changes":"撤销更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'写信息,使用"@"来提及某人,使用":"进行表情符号自动完成 ...'}},{locale:"zh_HK",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然","Anything shared with the same group of people will show up here":"與同一組人共享的任何內容都會顯示在此處","Avatar of {displayName}":"{displayName} 的頭像","Avatar of {displayName}, {status}":"{displayName} 的頭像,{status}","Cancel changes":"取消更改","Change title":"更改標題",Choose:"選擇","Clear text":"清除文本",Close:"關閉","Close modal":"關閉模態","Close navigation":"關閉導航","Close sidebar":"關閉側邊欄","Confirm changes":"確認更改",Custom:"自定義","Edit item":"編輯項目","Error getting related resources":"獲取相關資源出錯","Error parsing svg":"解析 svg 時出錯","External documentation for {title}":"{title} 的外部文檔",Favorite:"喜愛",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"經常使用",Global:"全球的","Go back to the list":"返回清單","Hide password":"隱藏密碼","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制","More items …":"更多項目 …",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件",Open:"打開",'Open link to "{resourceTitle}"':"打開指向 “{resourceTitle}” 的鏈結","Open navigation":"開啟導航","Password is secure":"密碼是安全的","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號","Please select a time zone:":"請選擇時區:",Previous:"上一個","Related resources":"相關資源",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Show password":"顯示密碼","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Submit:"提交",Symbols:"標誌","Travel & Places":"旅遊與景點","Type to search time zone":"鍵入以搜索時區","Unable to search the group":"無法搜尋群組","Undo changes":"取消更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'寫訊息,使用 "@" 來指代某人,使用 ":" 用於表情符號自動填充 ...'}},{locale:"zh_TW",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然",Choose:"選擇",Close:"關閉",Custom:"自定義",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"最近使用","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號",Previous:"上一個",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Symbols:"標誌","Travel & Places":"旅遊與景點","Unable to search the group":"無法搜尋群組","Write message, @ to mention someone …":"輸入訊息時可使用 @ 來標示某人..."}}].forEach((function(e){var t={};for(var n in e.translations)e.translations[n].pluralId?t[n]={msgid:n,msgid_plural:e.translations[n].pluralId,msgstr:e.translations[n].msgstr}:t[n]={msgid:n,msgstr:[e.translations[n]]};a.addTranslation(e.locale,{translations:{"":t}})}));var r=a.build(),i=r.ngettext.bind(r),o=r.gettext.bind(r)},3648:(e,t,n)=>{n.d(t,{Z:()=>r});var a=n(932);const r={methods:{n:a.n,t:a.t}}},1205:(e,t,n)=>{n.d(t,{Z:()=>a});const a=function(e){return Math.random().toString(36).replace(/[^a-z]+/g,"").slice(0,e||5)}},7645:(e,t,n)=>{n.d(t,{Z:()=>a});const a=function(e){e.mounted?Array.isArray(e.mounted)||(e.mounted=[e.mounted]):e.mounted=[],e.mounted.push((function(){this.$el.setAttribute("data-v-".concat("69d54a5"),"")}))}},1206:(e,t,n)=>{n.d(t,{L:()=>a}),n(4505);var a=function(){return Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]}),window._nc_focus_trap}},5108:(e,t,n)=>{var a=n(6464),r=n(9084);function i(){return(new Date).getTime()}var o,s=Array.prototype.slice,l={};o=void 0!==n.g&&n.g.console?n.g.console:typeof window<"u"&&window.console?window.console:{};for(var u=[[function(){},"log"],[function(){o.log.apply(o,arguments)},"info"],[function(){o.log.apply(o,arguments)},"warn"],[function(){o.warn.apply(o,arguments)},"error"],[function(e){l[e]=i()},"time"],[function(e){var t=l[e];if(!t)throw new Error("No such label: "+e);delete l[e];var n=i()-t;o.log(e+": "+n+"ms")},"timeEnd"],[function(){var e=new Error;e.name="Trace",e.message=a.format.apply(null,arguments),o.error(e.stack)},"trace"],[function(e){o.log(a.inspect(e)+"\n")},"dir"],[function(e){if(!e){var t=s.call(arguments,1);r.ok(!1,a.format.apply(null,t))}},"assert"]],c=0;c{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.v-popper--theme-tooltip.v-popper__popper{position:absolute;z-index:100000;top:0;right:auto;left:auto;display:block;margin:0;padding:0;text-align:left;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{right:100%;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{left:100%;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity .15s,visibility .15s;opacity:0}.v-popper--theme-tooltip.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity .15s;opacity:1}.v-popper--theme-tooltip .v-popper__inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.v-popper--theme-tooltip .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/directives/Tooltip/index.scss"],names:[],mappings:"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCQA,0CACC,iBAAA,CACA,cAAA,CACA,KAAA,CACA,UAAA,CACA,SAAA,CACA,aAAA,CACA,QAAA,CACA,SAAA,CACA,eAAA,CACA,gBAAA,CACA,SAAA,CACA,eAAA,CAEA,eAAA,CACA,sDAAA,CAGA,iGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAID,oGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAID,mGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAID,kGACC,SAAA,CACA,oBAAA,CACA,8CAAA,CAID,4DACC,iBAAA,CACA,uCAAA,CACA,SAAA,CAED,6DACC,kBAAA,CACA,uBAAA,CACA,SAAA,CAKF,0CACC,eAAA,CACA,eAAA,CACA,iBAAA,CACA,4BAAA,CACA,kCAAA,CACA,6CAAA,CAID,oDACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBAhFY",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n/**\n* @copyright Copyright (c) 2016, John Molakvoæ \n* @copyright Copyright (c) 2016, Robin Appelman \n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt \n* @copyright Copyright (c) 2016, Erik Pellikka \n* @copyright Copyright (c) 2015, Vincent Petry \n*\n* Bootstrap v3.3.5 (http://getbootstrap.com)\n* Copyright 2011-2015 Twitter, Inc.\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n*/\n\n$arrow-width: 10px;\n\n.v-popper--theme-tooltip {\n\t&.v-popper__popper {\n\t\tposition: absolute;\n\t\tz-index: 100000;\n\t\ttop: 0;\n\t\tright: auto;\n\t\tleft: auto;\n\t\tdisplay: block;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\ttext-align: left;\n\t\ttext-align: start;\n\t\topacity: 0;\n\t\tline-height: 1.6;\n\n\t\tline-break: auto;\n\t\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t\t// TOP\n\t\t&[data-popper-placement^='top'] .v-popper__arrow-container {\n\t\t\tbottom: -$arrow-width;\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-top-color: var(--color-main-background);\n\t\t}\n\n\t\t// BOTTOM\n\t\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\n\t\t\ttop: -$arrow-width;\n\t\t\tborder-top-width: 0;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t// RIGHT\n\t\t&[data-popper-placement^='right'] .v-popper__arrow-container {\n\t\t\tright: 100%;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-color: var(--color-main-background);\n\t\t}\n\n\t\t// LEFT\n\t\t&[data-popper-placement^='left'] .v-popper__arrow-container {\n\t\t\tleft: 100%;\n\t\t\tborder-right-width: 0;\n\t\t\tborder-left-color: var(--color-main-background);\n\t\t}\n\n\t\t// HIDDEN / SHOWN\n\t\t&[aria-hidden='true'] {\n\t\t\tvisibility: hidden;\n\t\t\ttransition: opacity .15s, visibility .15s;\n\t\t\topacity: 0;\n\t\t}\n\t\t&[aria-hidden='false'] {\n\t\t\tvisibility: visible;\n\t\t\ttransition: opacity .15s;\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t// CONTENT\n\t.v-popper__inner {\n\t\tmax-width: 350px;\n\t\tpadding: 5px 8px;\n\t\ttext-align: center;\n\t\tcolor: var(--color-main-text);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t// ARROW\n\t.v-popper__arrow-container {\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tmargin: 0;\n\t\tborder-style: solid;\n\t\tborder-color: transparent;\n\t\tborder-width: $arrow-width;\n\t}\n}\n"],sourceRoot:""}]);const s=o},5166:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-259567dc]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-259567dc]{display:flex;align-items:center}.action-item[data-v-259567dc]{--open-background-color: var(--color-background-hover, $action-background-hover);position:relative;display:inline-block}.action-item.action-item--primary[data-v-259567dc]{--open-background-color: var(--color-primary-element-hover)}.action-item.action-item--secondary[data-v-259567dc]{--open-background-color: var(--color-primary-light-hover)}.action-item.action-item--error[data-v-259567dc]{--open-background-color: var(--color-error-hover)}.action-item.action-item--warning[data-v-259567dc]{--open-background-color: var(--color-warning-hover)}.action-item.action-item--success[data-v-259567dc]{--open-background-color: var(--color-success-hover)}.action-item.action-item--open .action-item__menutoggle[data-v-259567dc]{opacity:1;background-color:var(--open-background-color)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcActions/NcActions.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,+BACC,YAAA,CACA,kBAAA,CAGD,8BACC,gFAAA,CACA,iBAAA,CACA,oBAAA,CAEA,mDACC,2DAAA,CAGD,qDACC,yDAAA,CAGD,iDACC,iDAAA,CAGD,mDACC,mDAAA,CAGD,mDACC,mDAAA,CAGD,yEACC,SCWa,CDVb,6CAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n.action-items {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.action-item {\n\t--open-background-color: var(--color-background-hover, $action-background-hover);\n\tposition: relative;\n\tdisplay: inline-block;\n\n\t&.action-item--primary {\n\t\t--open-background-color: var(--color-primary-element-hover);\n\t}\n\n\t&.action-item--secondary {\n\t\t--open-background-color: var(--color-primary-light-hover);\n\t}\n\n\t&.action-item--error {\n\t\t--open-background-color: var(--color-error-hover);\n\t}\n\n\t&.action-item--warning {\n\t\t--open-background-color: var(--color-warning-hover);\n\t}\n\n\t&.action-item--success {\n\t\t--open-background-color: var(--color-success-hover);\n\t}\n\n\t&.action-item--open .action-item__menutoggle {\n\t\topacity: $opacity_full;\n\t\tbackground-color: var(--open-background-color);\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},2472:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__inner{border-radius:var(--border-radius-large);padding:4px;max-height:calc(50vh - 16px);overflow:auto}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcActions/NcActions.vue"],names:[],mappings:"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCJD,gFACC,wCAAA,CACA,WAAA,CACA,4BAAA,CACA,aAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n// We overwrote the popover base class, so we can style\n// the popover__inner for actions only.\n.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__inner {\n\tborder-radius: var(--border-radius-large);\n\tpadding: 4px;\n\tmax-height: calc(50vh - 16px);\n\toverflow: auto;\n}\n"],sourceRoot:""}]);const s=o},278:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-61417734]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-61417734]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition:background-color .1s linear !important;transition:border .1s linear;background-color:var(--color-primary-element-lighter),var(--color-primary-element-light);color:var(--color-primary-light-text)}.button-vue *[data-v-61417734]{cursor:pointer}.button-vue[data-v-61417734]:focus{outline:none}.button-vue[data-v-61417734]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-61417734]{cursor:default}.button-vue[data-v-61417734]:hover:not(:disabled){background-color:var(--color-primary-light-hover)}.button-vue[data-v-61417734]:active{background-color:var(--color-primary-element-lighter),var(--color-primary-element-light)}.button-vue__wrapper[data-v-61417734]{display:inline-flex;align-items:center;justify-content:space-around}.button-vue__icon[data-v-61417734]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-61417734]{font-weight:bold;margin-bottom:1px;padding:2px 0}.button-vue--icon-only[data-v-61417734]{width:44px !important}.button-vue--text-only[data-v-61417734]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-61417734]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-61417734]{padding:0 16px 0 4px}.button-vue--wide[data-v-61417734]{width:100%}.button-vue[data-v-61417734]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-61417734]{outline:2px solid var(--color-primary-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-61417734]{background-color:var(--color-primary-element);color:var(--color-primary-text)}.button-vue--vue-primary[data-v-61417734]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-61417734]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-61417734]{color:var(--color-primary-light-text);background-color:var(--color-primary-light)}.button-vue--vue-secondary[data-v-61417734]:hover:not(:disabled){color:var(--color-primary-light-text);background-color:var(--color-primary-light-hover)}.button-vue--vue-tertiary[data-v-61417734]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-61417734]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-61417734]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-61417734]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-61417734]{color:var(--color-primary-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-61417734]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-61417734]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-61417734]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-61417734]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-61417734]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-61417734]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-61417734]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-61417734]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-61417734]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-61417734]:active{background-color:var(--color-error)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcButton/NcButton.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAIA,kBAAA,CACA,iDAAA,CACA,4BAAA,CAkBA,wFAAA,CACA,qCAAA,CAxBA,+BACC,cAAA,CAOD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCMiB,CDJjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,iDAAA,CAKD,oCACC,wFAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,4BAAA,CAGD,mCACC,WCpCe,CDqCf,UCrCe,CDsCf,eCtCe,CDuCf,cCvCe,CDwCf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,2CAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,+BAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,qCAAA,CACA,2CAAA,CACA,iEACC,qCAAA,CACA,iDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,+BAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n\n.button-vue {\n\tposition: relative;\n\twidth: fit-content;\n\toverflow: hidden;\n\tborder: 0;\n\tpadding: 0;\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\tmin-height: $clickable-area;\n\tmin-width: $clickable-area;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t// Cursor pointer on element and all children\n\tcursor: pointer;\n\t& * {\n\t\tcursor: pointer;\n\t}\n\tborder-radius: math.div($clickable-area, 2);\n\ttransition: background-color 0.1s linear !important;\n\ttransition: border 0.1s linear;\n\n\t// No outline feedback for focus. Handled with a toggled class in js (see data)\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\t& * {\n\t\t\tcursor: default;\n\t\t}\n\t\topacity: $opacity_disabled;\n\t\t// Gives a wash out effect\n\t\tfilter: saturate($opacity_normal);\n\t}\n\n\t// Default button type\n\tbackground-color: var(--color-primary-element-lighter), var(--color-primary-element-light);\n\tcolor: var(--color-primary-light-text);\n\t&:hover:not(:disabled) {\n\t\tbackground-color: var(--color-primary-light-hover);\n\t}\n\n\t// Back to the default color for this button when active\n\t// TODO: add ripple effect\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-lighter), var(--color-primary-element-light);\n\t}\n\n\t&__wrapper {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: space-around;\n\t}\n\n\t&__icon {\n\t\theight: $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-height: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t&__text {\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1px;\n\t\tpadding: 2px 0;\n\t}\n\n\t// Icon-only button\n\t&--icon-only {\n\t\twidth: $clickable-area !important;\n\t}\n\n\t// Text-only button\n\t&--text-only {\n\t\tpadding: 0 12px;\n\t\t& .button-vue__text {\n\t\t\tmargin-left: 4px;\n\t\t\tmargin-right: 4px;\n\t\t}\n\t}\n\n\t// Icon and text button\n\t&--icon-and-text {\n\t\tpadding: 0 16px 0 4px;\n\t}\n\n\t// Wide button spans the whole width of the container\n\t&--wide {\n\t\twidth: 100%;\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t&.button-vue--vue-tertiary-on-primary {\n\t\t\toutline: 2px solid var(--color-primary-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Button types\n\n\t// Primary\n\t&--vue-primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tcolor: var(--color-primary-text);\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-primary-element-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Secondary\n\t&--vue-secondary {\n\t\tcolor: var(--color-primary-light-text);\n\t\tbackground-color: var(--color-primary-light);\n\t\t&:hover:not(:disabled) {\n\t\t\tcolor: var(--color-primary-light-text);\n\t\t\tbackground-color: var(--color-primary-light-hover);\n\t\t}\n\t}\n\n\t// Tertiary\n\t&--vue-tertiary {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Tertiary, no background\n\t&--vue-tertiary-no-background {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Tertiary on primary color (like the header)\n\t&--vue-tertiary-on-primary {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: transparent;\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Success\n\t&--vue-success {\n\t\tbackground-color: var(--color-success);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// : add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-success);\n\t\t}\n\t}\n\n\t// Warning\n\t&--vue-warning {\n\t\tbackground-color: var(--color-warning);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-warning);\n\t\t}\n\t}\n\n\t// Error\n\t&--vue-error {\n\t\tbackground-color: var(--color-error);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-error);\n\t\t}\n\t}\n}\n\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},5218:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,'.material-design-icon[data-v-295df2d8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.modal-mask[data-v-295df2d8]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,.5)}.modal-mask--dark[data-v-295df2d8]{background-color:rgba(0,0,0,.92)}.modal-header[data-v-295df2d8]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;overflow:hidden;transition:opacity 250ms,visibility 250ms}.modal-header.invisible[style*="display:none"][data-v-295df2d8],.modal-header.invisible[style*="display: none"][data-v-295df2d8]{visibility:hidden}.modal-header .modal-title[data-v-295df2d8]{overflow-x:hidden;box-sizing:border-box;width:100%;padding:0 132px 0 12px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px;margin-bottom:0}@media only screen and (min-width: 1024px){.modal-header .modal-title[data-v-295df2d8]{padding-left:132px;text-align:center}}.modal-header .icons-menu[data-v-295df2d8]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .header-close[data-v-295df2d8]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;margin:3px;padding:0}.modal-header .icons-menu .play-pause-icons[data-v-295df2d8]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;border:none;background-color:rgba(0,0,0,0)}.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__play[data-v-295df2d8],.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__pause[data-v-295df2d8],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__play[data-v-295df2d8],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__pause[data-v-295df2d8]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,.25)}.modal-header .icons-menu .play-pause-icons__play[data-v-295df2d8],.modal-header .icons-menu .play-pause-icons__pause[data-v-295df2d8]{box-sizing:border-box;width:44px;height:44px;margin:3px;cursor:pointer;opacity:.7}.modal-header .icons-menu .header-actions[data-v-295df2d8]{color:#fff}.modal-header .icons-menu[data-v-295df2d8] .action-item{margin:3px}.modal-header .icons-menu[data-v-295df2d8] .action-item--single{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-295df2d8] button{color:#fff}.modal-header .icons-menu[data-v-295df2d8] .action-item__menutoggle{padding:0}.modal-header .icons-menu[data-v-295df2d8] .action-item__menutoggle span,.modal-header .icons-menu[data-v-295df2d8] .action-item__menutoggle svg{width:var(--icon-size);height:var(--icon-size)}.modal-wrapper[data-v-295df2d8]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-295df2d8],.modal-wrapper .next[data-v-295df2d8]{z-index:10000;display:flex !important;height:35vw;position:absolute;transition:opacity 250ms,visibility 250ms;color:var(--color-primary-text)}.modal-wrapper .prev[data-v-295df2d8]:focus-visible,.modal-wrapper .next[data-v-295df2d8]:focus-visible{box-shadow:0 0 0 2px var(--color-primary-text);background-color:var(--color-box-shadow)}.modal-wrapper .prev.invisible[style*="display:none"][data-v-295df2d8],.modal-wrapper .prev.invisible[style*="display: none"][data-v-295df2d8],.modal-wrapper .next.invisible[style*="display:none"][data-v-295df2d8],.modal-wrapper .next.invisible[style*="display: none"][data-v-295df2d8]{visibility:hidden}.modal-wrapper .prev[data-v-295df2d8]{left:2px}.modal-wrapper .next[data-v-295df2d8]{right:2px}.modal-wrapper .modal-container[data-v-295df2d8]{position:relative;display:block;overflow:auto;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 0 40px rgba(0,0,0,.2)}.modal-wrapper .modal-container__close[data-v-295df2d8]{position:absolute;top:4px;right:4px}.modal-wrapper--small .modal-container[data-v-295df2d8]{width:400px;max-width:90%;max-height:90%}.modal-wrapper--normal .modal-container[data-v-295df2d8]{max-width:90%;width:600px;max-height:90%}.modal-wrapper--large .modal-container[data-v-295df2d8]{max-width:90%;width:900px;max-height:90%}.modal-wrapper--full .modal-container[data-v-295df2d8]{width:100%;height:calc(100% - var(--header-height));position:absolute;top:50px;border-radius:0}@media only screen and (max-width: 512px){.modal-wrapper .modal-container[data-v-295df2d8]{max-width:initial;width:100%;max-height:initial;height:calc(100% - var(--header-height));position:absolute;top:50px;border-radius:0}}.fade-enter-active[data-v-295df2d8],.fade-leave-active[data-v-295df2d8]{transition:opacity 250ms}.fade-enter[data-v-295df2d8],.fade-leave-to[data-v-295df2d8]{opacity:0}.fade-visibility-enter[data-v-295df2d8],.fade-visibility-leave-to[data-v-295df2d8]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-295df2d8],.modal-in-leave-active[data-v-295df2d8],.modal-out-enter-active[data-v-295df2d8],.modal-out-leave-active[data-v-295df2d8]{transition:opacity 250ms}.modal-in-enter[data-v-295df2d8],.modal-in-leave-to[data-v-295df2d8],.modal-out-enter[data-v-295df2d8],.modal-out-leave-to[data-v-295df2d8]{opacity:0}.modal-in-enter .modal-container[data-v-295df2d8],.modal-in-leave-to .modal-container[data-v-295df2d8]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-295df2d8],.modal-out-leave-to .modal-container[data-v-295df2d8]{transform:scale(1.1)}.modal-mask .play-pause-icons .progress-ring[data-v-295df2d8]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause-icons .progress-ring .progress-ring__circle[data-v-295df2d8]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-295df2d8 linear var(--slideshow-duration) infinite;stroke-linecap:round;stroke-dashoffset:94.2477796077;stroke-dasharray:94.2477796077}.modal-mask .play-pause-icons--paused .icon-pause[data-v-295df2d8]{animation:breath-295df2d8 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause-icons--paused .progress-ring__circle[data-v-295df2d8]{animation-play-state:paused !important}@keyframes progressring-295df2d8{from{stroke-dashoffset:94.2477796077}to{stroke-dashoffset:0}}@keyframes breath-295df2d8{0%{opacity:1}50%{opacity:0}100%{opacity:1}}',"",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcModal/NcModal.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,cAAA,CACA,YAAA,CACA,KAAA,CACA,MAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CACA,+BAAA,CACA,mCACC,gCAAA,CAIF,+BACC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,OAAA,CACA,MAAA,CAGA,uBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WCuBe,CDtBf,eAAA,CACA,yCAAA,CAIA,iIAEC,iBAAA,CAGD,4CACC,iBAAA,CACA,qBAAA,CACA,UAAA,CACA,sBAAA,CACA,6BAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,cChBY,CDiBZ,eAAA,CAID,2CACC,4CACC,kBAAA,CACA,iBAAA,CAAA,CAIF,2CACC,iBAAA,CACA,OAAA,CACA,YAAA,CACA,kBAAA,CACA,wBAAA,CAEA,yDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6DACC,iBAAA,CACA,UC3Ba,CD4Bb,WC5Ba,CD6Bb,QAAA,CACA,SAAA,CACA,cAAA,CACA,WAAA,CACA,8BAAA,CAGC,8WAEC,SC9CU,CD+CV,kBAAA,CACA,sCCxDW,CD2Db,uIAEC,qBAAA,CACA,UCzEa,CD0Eb,WC1Ea,CD2Eb,UAAA,CACA,cAAA,CACA,UC3Da,CD+Df,2DACC,UAAA,CAGD,yDACC,UAAA,CAEA,iEACC,qBAAA,CACA,UC1Fa,CD2Fb,WC3Fa,CD4Fb,cAAA,CACA,0BAAA,CACA,oBAAA,CAIF,kDAEC,UAAA,CAID,oEACC,SAAA,CACA,iJACC,sBAAA,CACA,uBAAA,CAMJ,gCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CACA,UAAA,CACA,WAAA,CAGA,4EAEC,aAAA,CAEA,uBAAA,CACA,WAAA,CACA,iBAAA,CACA,yCAAA,CAEA,+BAAA,CAEA,wGAEC,8CAAA,CACA,wCAAA,CAOD,8RAEC,iBAAA,CAGF,sCACC,QAAA,CAED,sCACC,SAAA,CAID,iDACC,iBAAA,CACA,aAAA,CACA,aAAA,CACA,SAAA,CACA,+BAAA,CACA,wCAAA,CACA,6CAAA,CACA,kCAAA,CACA,wDACC,iBAAA,CACA,OAAA,CACA,SAAA,CAMD,wDACC,WAAA,CACA,aAAA,CACA,cAAA,CAID,yDACC,aAAA,CACA,WAAA,CACA,cAAA,CAID,wDACC,aAAA,CACA,WAAA,CACA,cAAA,CAID,uDACC,UAAA,CACA,wCAAA,CACA,iBAAA,CACA,QC7Ka,CD8Kb,eAAA,CAKF,0CACC,iDACC,iBAAA,CACA,UAAA,CACA,kBAAA,CACA,wCAAA,CACA,iBAAA,CACA,QC1La,CD2Lb,eAAA,CAAA,CAMH,wEAEC,wBAAA,CAGD,6DAEC,SAAA,CAGD,mFAEC,iBAAA,CACA,SAAA,CAGD,kKAIC,wBAAA,CAGD,4IAIC,SAAA,CAGD,uGAEC,oBAAA,CAGD,yGAEC,oBAAA,CAQA,8DACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CACA,qFACC,kCAAA,CACA,wBAAA,CACA,yEAAA,CAEA,oBAAA,CACA,+BAAA,CACA,8BAAA,CAID,mEACC,kEAAA,CAED,8EACC,sCAAA,CAMH,iCACC,KACC,+BAAA,CAED,GACC,mBAAA,CAAA,CAIF,2BACC,GACC,SAAA,CAED,IACC,SAAA,CAED,KACC,SAAA,CAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n\n.modal-mask {\n\tposition: fixed;\n\tz-index: 9998;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: rgba(0, 0, 0, .5);\n\t&--dark {\n\t\tbackground-color: rgba(0, 0, 0, .92);\n\t}\n}\n\n.modal-header {\n\tposition: absolute;\n\tz-index: 10001;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\t// prevent vue show to use display:none and reseting\n\t// the circle animation loop\n\tdisplay: flex !important;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 100%;\n\theight: $header-height;\n\toverflow: hidden;\n\ttransition: opacity 250ms,\n\t\tvisibility 250ms;\n\n\t// replace display by visibility\n\t&.invisible[style*='display:none'],\n\t&.invisible[style*='display: none'] {\n\t\tvisibility: hidden;\n\t}\n\n\t.modal-title {\n\t\toverflow-x: hidden;\n\t\tbox-sizing: border-box;\n\t\twidth: 100%;\n\t\tpadding: 0 #{$clickable-area * 3} 0 12px; // maximum actions is 3\n\t\ttransition: padding ease 100ms;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: #fff;\n\t\tfont-size: $icon-margin;\n\t\tmargin-bottom: 0;\n\t}\n\n\t// On wider screens the title can be centered\n\t@media only screen and (min-width: $breakpoint-mobile) {\n\t\t.modal-title {\n\t\t\tpadding-left: #{$clickable-area * 3}; // maximum actions is 3\n\t\t\ttext-align: center;\n\t\t}\n\t}\n\n\t.icons-menu {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: flex-end;\n\n\t\t.header-close {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tbox-sizing: border-box;\n\t\t\tmargin: math.div($header-height - $clickable-area, 2);\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t.play-pause-icons {\n\t\t\tposition: relative;\n\t\t\twidth: $header-height;\n\t\t\theight: $header-height;\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t\tcursor: pointer;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\t.play-pause-icons__play,\n\t\t\t\t.play-pause-icons__pause {\n\t\t\t\t\topacity: $opacity_full;\n\t\t\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t\t\t\tbackground-color: $icon-focus-bg;\n\t\t\t\t}\n\t\t\t}\n\t\t\t&__play,\n\t\t\t&__pause {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: $clickable-area;\n\t\t\t\theight: $clickable-area;\n\t\t\t\tmargin: math.div($header-height - $clickable-area, 2);\n\t\t\t\tcursor: pointer;\n\t\t\t\topacity: $opacity_normal;\n\t\t\t}\n\t\t}\n\n\t\t.header-actions {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t&:deep() .action-item {\n\t\t\tmargin: math.div($header-height - $clickable-area, 2);\n\n\t\t\t&--single {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: $clickable-area;\n\t\t\t\theight: $clickable-area;\n\t\t\t\tcursor: pointer;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-size: 22px;\n\t\t\t}\n\t\t}\n\n\t\t:deep(button) {\n\t\t\t// force white instead of default main text\n\t\t\tcolor: #fff;\n\t\t}\n\n\t\t// Force the Actions menu icon to be the same size as other icons\n\t\t&:deep(.action-item__menutoggle) {\n\t\t\tpadding: 0;\n\t\t\tspan, svg {\n\t\t\t\twidth: var(--icon-size);\n\t\t\t\theight: var(--icon-size);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.modal-wrapper {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\n\t/* Navigation buttons */\n\t.prev,\n\t.next {\n\t\tz-index: 10000;\n\t\t// ignore display: none\n\t\tdisplay: flex !important;\n\t\theight: 35vw;\n\t\tposition: absolute;\n\t\ttransition: opacity 250ms,\n\t\t\tvisibility 250ms;\n\t\tcolor: var(--color-primary-text);\n\n\t\t&:focus-visible {\n\t\t\t// Override NcButton focus styles\n\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\tbackground-color: var(--color-box-shadow);\n\t\t}\n\n\t\t// we want to keep the elements on page\n\t\t// even if hidden to avoid having a unbalanced\n\t\t// centered content\n\t\t// replace display by visibility\n\t\t&.invisible[style*='display:none'],\n\t\t&.invisible[style*='display: none'] {\n\t\t\tvisibility: hidden;\n\t\t}\n\t}\n\t.prev {\n\t\tleft: 2px;\n\t}\n\t.next {\n\t\tright: 2px;\n\t}\n\n\t/* Content */\n\t.modal-container {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\toverflow: auto; // avoids unecessary hacks if the content should be bigger than the modal\n\t\tpadding: 0;\n\t\ttransition: transform 300ms ease;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-main-background);\n\t\tbox-shadow: 0 0 40px rgba(0, 0, 0, .2);\n\t\t&__close {\n\t\t\tposition: absolute;\n\t\t\ttop: 4px;\n\t\t\tright: 4px;\n\t\t}\n\t}\n\n\t// Sizing\n\t&--small {\n\t\t.modal-container {\n\t\t\twidth: 400px;\n\t\t\tmax-width: 90%;\n\t\t\tmax-height: 90%;\n\t\t}\n\t}\n\t&--normal {\n\t\t.modal-container {\n\t\t\tmax-width: 90%;\n\t\t\twidth: 600px;\n\t\t\tmax-height: 90%;\n\t\t}\n\t}\n\t&--large {\n\t\t.modal-container {\n\t\t\tmax-width: 90%;\n\t\t\twidth: 900px;\n\t\t\tmax-height: 90%;\n\t\t}\n\t}\n\t&--full {\n\t\t.modal-container {\n\t\t\twidth: 100%;\n\t\t\theight: calc(100% - var(--header-height));\n\t\t\tposition: absolute;\n\t\t\ttop: $header-height;\n\t\t\tborder-radius: 0;\n\t\t}\n\t}\n\n\t// Make modal full screen on mobile\n\t@media only screen and (max-width: math.div($breakpoint-mobile, 2)) {\n\t\t.modal-container {\n\t\t\tmax-width: initial;\n\t\t\twidth: 100%;\n\t\t\tmax-height: initial;\n\t\t\theight: calc(100% - var(--header-height));\n\t\t\tposition: absolute;\n\t\t\ttop: $header-height;\n\t\t\tborder-radius: 0;\n\t\t}\n\t}\n}\n\n/* TRANSITIONS */\n.fade-enter-active,\n.fade-leave-active {\n\ttransition: opacity 250ms;\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-visibility-enter,\n.fade-visibility-leave-to {\n\tvisibility: hidden;\n\topacity: 0;\n}\n\n.modal-in-enter-active,\n.modal-in-leave-active,\n.modal-out-enter-active,\n.modal-out-leave-active {\n\ttransition: opacity 250ms;\n}\n\n.modal-in-enter,\n.modal-in-leave-to,\n.modal-out-enter,\n.modal-out-leave-to {\n\topacity: 0;\n}\n\n.modal-in-enter .modal-container,\n.modal-in-leave-to .modal-container {\n\ttransform: scale(.9);\n}\n\n.modal-out-enter .modal-container,\n.modal-out-leave-to .modal-container {\n\ttransform: scale(1.1);\n}\n\n// animated circle\n$radius: 15;\n$pi: 3.14159265358979;\n\n.modal-mask .play-pause-icons {\n\t.progress-ring {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: rotate(-90deg);\n\t\t.progress-ring__circle {\n\t\t\ttransition: 100ms stroke-dashoffset;\n\t\t\ttransform-origin: 50% 50%; // axis compensation\n\t\t\tanimation: progressring linear var(--slideshow-duration) infinite;\n\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\n\t\t\tstroke-dasharray: $radius * 2 * $pi; // radius * 2 * PI\n\t\t}\n\t}\n\t&--paused {\n\t\t.icon-pause {\n\t\t\tanimation: breath 2s cubic-bezier(.4, 0, .2, 1) infinite;\n\t\t}\n\t\t.progress-ring__circle {\n\t\t\tanimation-play-state: paused !important;\n\t\t}\n\t}\n}\n\n// keyframes get scoped too and break the animation name, we need them unscoped\n@keyframes progressring {\n\tfrom {\n\t\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\n\t}\n\tto {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes breath {\n\t0% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},978:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:rgba(0,0,0,0);pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown.v-popper__popper{z-index:100000;top:0;left:0;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-dropdown.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius);overflow:hidden;background:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-10px;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopover/NcPopover.vue"],names:[],mappings:"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,iBACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,8BAAA,CACA,mBAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CAGD,wBACC,aAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,eAAA,CACA,mBAAA,CACA,UAAA,CAMA,2CACC,cAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CAEA,sDAAA,CAEA,4DACC,SAAA,CACA,4BAAA,CACA,kCAAA,CACA,eAAA,CACA,uCAAA,CAGD,sEACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBA1BW,CA6BZ,kGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAGD,qGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAGD,oGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAGD,mGACC,WAAA,CACA,oBAAA,CACA,8CAAA,CAGD,6DACC,iBAAA,CACA,2EAAA,CACA,SAAA,CAGD,8DACC,kBAAA,CACA,yCAAA,CACA,SAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n\n.resize-observer {\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\tz-index:-1;\n\twidth:100%;\n\theight:100%;\n\tborder:none;\n\tbackground-color:transparent;\n\tpointer-events:none;\n\tdisplay:block;\n\toverflow:hidden;\n\topacity:0\n}\n\n.resize-observer object {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\theight:100%;\n\twidth:100%;\n\toverflow:hidden;\n\tpointer-events:none;\n\tz-index:-1\n}\n\n$arrow-width: 10px;\n\n.v-popper--theme-dropdown {\n\t&.v-popper__popper {\n\t\tz-index: 100000;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block !important;\n\n\t\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t\t.v-popper__inner {\n\t\t\tpadding: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\toverflow: hidden;\n\t\t\tbackground: var(--color-main-background);\n\t\t}\n\n\t\t.v-popper__arrow-container {\n\t\t\tposition: absolute;\n\t\t\tz-index: 1;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t\tborder-color: transparent;\n\t\t\tborder-width: $arrow-width;\n\t\t}\n\n\t\t&[data-popper-placement^='top'] .v-popper__arrow-container {\n\t\t\tbottom: -$arrow-width;\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-top-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\n\t\t\ttop: -$arrow-width;\n\t\t\tborder-top-width: 0;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='right'] .v-popper__arrow-container {\n\t\t\tleft: -$arrow-width;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='left'] .v-popper__arrow-container {\n\t\t\tright: -$arrow-width;\n\t\t\tborder-right-width: 0;\n\t\t\tborder-left-color: var(--color-main-background);\n\t\t}\n\n\t\t&[aria-hidden='true'] {\n\t\t\tvisibility: hidden;\n\t\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\t\topacity: 0;\n\t\t}\n\n\t\t&[aria-hidden='false'] {\n\t\t\tvisibility: visible;\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=o},3645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",a=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),a&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),a&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,a,r,i){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(a)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=i),n&&(c[2]&&(c[1]="@media ".concat(c[2]," {").concat(c[1],"}")),c[2]=n),r&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=r):c[4]="".concat(r)),t.push(c))}},t}},7537:e=>{e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var a=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),i="/*# ".concat(r," */");return[t].concat([i]).join("\n")}return[t].join("\n")}},3379:e=>{var t=[];function n(e){for(var n=-1,a=0;a{var t={};e.exports=function(e,n){var a=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch{n=null}t[e]=n}return t[e]}(e);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(n)}},9216:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7795:e=>{e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var a="";n.supports&&(a+="@supports (".concat(n.supports,") {")),n.media&&(a+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(a+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),a+=n.css,r&&(a+="}"),n.media&&(a+="}"),n.supports&&(a+="}");var i=n.sourceMap;i&&typeof btoa<"u"&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleTagTransform(a,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},5727:()=>{},2102:()=>{},9989:()=>{},2405:()=>{},1900:(e,t,n)=>{function a(e,t,n,a,r,i,o,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||typeof __VUE_SSR_CONTEXT__>"u"||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}n.d(t,{Z:()=>a})},754:e=>{e.exports=Sm()},9084:e=>{e.exports=Eh},9454:e=>{e.exports=uv},4505:e=>{e.exports=Iv},2640:e=>{e.exports=Uv()},6464:e=>{e.exports=Eh},2734:e=>{e.exports=Gv},9044:e=>{e.exports=qv},8618:e=>{e.exports=Wv},1441:e=>{e.exports=Qv}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var i=t[a]={id:a,exports:{}};return e[a](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch{if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;var a={};return(()=>{n.r(a),n.d(a,{default:()=>H});var e=n(7645),t=n(1206),r=n(932),i=n(1205),o=n(3648),s=n(3525),l=n(8557);function u(e,t){var n,a,r,i=t;this.start=function(){r=!0,a=new Date,n=setTimeout(e,i)},this.pause=function(){r=!1,clearTimeout(n),i-=new Date-a},this.clear=function(){r=!1,clearTimeout(n),i=0},this.getTimeLeft=function(){return r&&(this.pause(),this.start()),i},this.getStateRunning=function(){return r},this.start()}var c=n(336);const d=Xv;var p=n.n(d),h=n(9044),m=n.n(h),f=n(8618),g=n.n(f);const v=t_;var _=n.n(v);const A=a_;var b=n.n(A),y=n(4505),F=n(2640),T=n.n(F);function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n(()=>{var e={3621:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-141377ba]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.notecard[data-v-141377ba]{color:var(--color-main-text) !important;background-color:var(--note-background) !important;border-inline-start:4px solid var(--note-theme);border-radius:var(--border-radius);margin:1rem 0;margin-top:1rem;padding:1rem;display:flex;flex-direction:row;gap:1rem}.notecard__icon--heading[data-v-141377ba]{margin-bottom:auto;margin-top:.3rem}.notecard--success[data-v-141377ba]{--note-background: rgba(var(--color-success-rgb), 0.1);--note-theme: var(--color-success)}.notecard--error[data-v-141377ba]{--note-background: rgba(var(--color-error-rgb), 0.1);--note-theme: var(--color-error)}.notecard--warning[data-v-141377ba]{--note-background: rgba(var(--color-warning-rgb), 0.1);--note-theme: var(--color-warning)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcNoteCard/NcNoteCard.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,2BACC,uCAAA,CACA,kDAAA,CACA,+CAAA,CACA,kCAAA,CACA,aAAA,CACA,eAAA,CACA,YAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,0CACC,kBAAA,CACA,gBAAA,CAGD,oCACC,sDAAA,CACA,kCAAA,CAGD,kCACC,oDAAA,CACA,gCAAA,CAGD,oCACC,sDAAA,CACA,kCAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n.notecard {\n\tcolor: var(--color-main-text) !important;\n\tbackground-color: var(--note-background) !important;\n\tborder-inline-start: 4px solid var(--note-theme);\n\tborder-radius: var(--border-radius);\n\tmargin: 1rem 0;\n\tmargin-top: 1rem;\n\tpadding: 1rem;\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: 1rem;\n\n\t&__icon--heading {\n\t\tmargin-bottom: auto;\n\t\tmargin-top: 0.3rem;\n\t}\n\n\t&--success {\n\t\t--note-background: rgba(var(--color-success-rgb), 0.1);\n\t\t--note-theme: var(--color-success);\n\t}\n\n\t&--error {\n\t\t--note-background: rgba(var(--color-error-rgb), 0.1);\n\t\t--note-theme: var(--color-error);\n\t}\n\n\t&--warning {\n\t\t--note-background: rgba(var(--color-warning-rgb), 0.1);\n\t\t--note-theme: var(--color-warning);\n\t}\n}\n"],sourceRoot:""}]);const s=o},3645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",a=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),a&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),a&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,a,r,i){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(a)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=i),n&&(c[2]&&(c[1]="@media ".concat(c[2]," {").concat(c[1],"}")),c[2]=n),r&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=r):c[4]="".concat(r)),t.push(c))}},t}},7537:e=>{e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var a=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),i="/*# ".concat(r," */");return[t].concat([i]).join("\n")}return[t].join("\n")}},3379:e=>{var t=[];function n(e){for(var n=-1,a=0;a{var t={};e.exports=function(e,n){var a=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch{n=null}t[e]=n}return t[e]}(e);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(n)}},9216:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7795:e=>{e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var a="";n.supports&&(a+="@supports (".concat(n.supports,") {")),n.media&&(a+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(a+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),a+=n.css,r&&(a+="}"),n.media&&(a+="}"),n.supports&&(a+="}");var i=n.sourceMap;i&&typeof btoa<"u"&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleTagTransform(a,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},3464:()=>{},1900:(e,t,n)=>{function a(e,t,n,a,r,i,o,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||typeof __VUE_SSR_CONTEXT__>"u"||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}n.d(t,{Z:()=>a})}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var i=t[a]={id:a,exports:{}};return e[a](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;var a={};return(()=>{n.r(a),n.d(a,{default:()=>S});const e=s_;var t=n.n(e);const r=u_;var i=n.n(r);const o=d_;var s=n.n(o);const l={name:"NcNoteCard",props:{type:{type:String,default:"warning",validator:function(e){return["success","warning","error"].includes(e)}},showAlert:{type:Boolean,default:!1},heading:{type:String,default:""}},computed:{shouldShowAlert:function(){return this.showAlert||"error"===this.type},icon:function(){switch(this.type){case"error":return i();case"success":return t();default:return s()}},color:function(){switch(this.type){case"error":return"var(--color-error)";case"success":return"var(--color-success)";default:return"var(--color-warning)"}}}};var u=n(3379),c=n.n(u),d=n(7795),p=n.n(d),h=n(569),m=n.n(h),f=n(3565),g=n.n(f),v=n(9216),_=n.n(v),A=n(4589),b=n.n(A),y=n(3621),F={};F.styleTagTransform=b(),F.setAttributes=g(),F.insert=m().bind(null,"head"),F.domAPI=p(),F.insertStyleElement=_(),c()(y.Z,F),y.Z&&y.Z.locals&&y.Z.locals;var T=n(1900),C=n(3464),k=n.n(C),w=(0,T.Z)(l,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"notecard",class:"notecard--".concat(e.type),attrs:{role:e.shouldShowAlert?"alert":""}},[t(e.icon,{tag:"component",staticClass:"notecard__icon",class:{"notecard__icon--heading":e.heading},attrs:{"fill-color":e.color}}),e._v(" "),t("div",[e.heading?t("h2",[e._v("\n\t\t\t"+e._s(e.heading)+"\n\t\t")]):e._e(),e._v(" "),e._t("default")],2)],1)}),[],!1,null,"141377ba",null);"function"==typeof k()&&k()(w);const S=w.exports})(),a})(),e.exports=n()}(i_);const p_=Ji(i_.exports);var h_,m_,f_={exports:{}},g_={},v_={},__={};function A_(){return h_||(h_=1,ap(),Object.defineProperty(__,"__esModule",{value:!0}),__.LogLevel=void 0,__.LogLevel=e,(t=e||(__.LogLevel=e={}))[t.Debug=0]="Debug",t[t.Info=1]="Info",t[t.Warn=2]="Warn",t[t.Error=3]="Error",t[t.Fatal=4]="Fatal"),__;var e,t}var b_,y_,F_,T_,C_,k_,w_,S_,E_,D_,x_,N_,O_,j_,M_,R_={},P_={},B_={},L_={};function z_(){if(N_)return x_;N_=1;var e=function(){if(y_)return b_;y_=1;var e=Uu(),t=nc(),n=Hl(),a=e(e.bind);return b_=function(e,r){return t(e),void 0===r?e:n?a(e,r):function(){return e.apply(r,arguments)}},b_}(),t=Uu(),n=Gu(),a=Oc(),r=Id(),i=function(){if(D_)return E_;D_=1;var e=function(){if(S_)return w_;S_=1;var e=function(){if(T_)return F_;T_=1;var e=Zu();return F_=Array.isArray||function(t){return"Array"==e(t)}}(),t=function(){if(k_)return C_;k_=1;var e=Uu(),t=Ul(),n=Wu(),a=Cp(),r=Qu(),i=fd(),o=function(){},s=[],l=r("Reflect","construct"),u=/^\s*(?:class|function)\b/,c=e(u.exec),d=!u.exec(o),p=function(e){if(!n(e))return!1;try{return l(o,s,e),!0}catch{return!1}},h=function(e){if(!n(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!c(u,i(e))}catch{return!0}};return h.sham=!0,C_=!l||t((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?h:p}(),n=Ku(),a=Rc()("species"),r=Array;return w_=function(i){var o;return e(i)&&(o=i.constructor,(t(o)&&(o===r||e(o.prototype))||n(o)&&null===(o=o[a]))&&(o=void 0)),void 0===o?r:o}}();return E_=function(t,n){return new(e(t))(0===n?0:n)}}(),o=t([].push),s=function(t){var s=1==t,l=2==t,u=3==t,c=4==t,d=6==t,p=7==t,h=5==t||d;return function(m,f,g,v){for(var _,A,b=a(m),y=n(b),F=e(f,g),T=r(y),C=0,k=v||i,w=s?k(m,T):l||p?k(m,0):void 0;T>C;C++)if((h||C in y)&&(A=F(_=y[C],C,b),t))if(s)w[C]=A;else if(A)switch(t){case 3:return!0;case 5:return _;case 6:return C;case 2:o(w,_)}else switch(t){case 4:return!1;case 7:o(w,_)}return d?-1:u||c?c:w}};return x_={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}}var I_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof n.g<"u"?n.g:typeof self<"u"?self:{};function Y_(e){var t={exports:{}};return e(t,t.exports),t.exports}var Z_=function(e){return e&&e.Math==Math&&e},U_=Z_("object"==typeof globalThis&&globalThis)||Z_("object"==typeof window&&window)||Z_("object"==typeof self&&self)||Z_("object"==typeof I_&&I_)||function(){return this}()||Function("return this")(),G_=function(e){try{return!!e()}catch{return!0}},H_=!G_((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),$_={}.propertyIsEnumerable,q_=Object.getOwnPropertyDescriptor,V_={f:q_&&!$_.call({1:2},1)?function(e){var t=q_(this,e);return!!t&&t.enumerable}:$_},W_=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},K_={}.toString,Q_=function(e){return K_.call(e).slice(8,-1)},J_="".split,X_=G_((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==Q_(e)?J_.call(e,""):Object(e)}:Object,eA=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},tA=function(e){return X_(eA(e))},nA=function(e){return"object"==typeof e?null!==e:"function"==typeof e},aA=function(e,t){if(!nA(e))return e;var n,a;if(t&&"function"==typeof(n=e.toString)&&!nA(a=n.call(e))||"function"==typeof(n=e.valueOf)&&!nA(a=n.call(e))||!t&&"function"==typeof(n=e.toString)&&!nA(a=n.call(e)))return a;throw TypeError("Can't convert object to primitive value")},rA=function(e){return Object(eA(e))},iA={}.hasOwnProperty,oA=function(e,t){return iA.call(rA(e),t)},sA=U_.document,lA=nA(sA)&&nA(sA.createElement),uA=function(e){return lA?sA.createElement(e):{}},cA=!H_&&!G_((function(){return 7!=Object.defineProperty(uA("div"),"a",{get:function(){return 7}}).a})),dA=Object.getOwnPropertyDescriptor,pA={f:H_?dA:function(e,t){if(e=tA(e),t=aA(t,!0),cA)try{return dA(e,t)}catch{}if(oA(e,t))return W_(!V_.f.call(e,t),e[t])}},hA=function(e){if(!nA(e))throw TypeError(String(e)+" is not an object");return e},mA=Object.defineProperty,fA={f:H_?mA:function(e,t,n){if(hA(e),t=aA(t,!0),hA(n),cA)try{return mA(e,t,n)}catch{}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},gA=H_?function(e,t,n){return fA.f(e,t,W_(1,n))}:function(e,t,n){return e[t]=n,e},vA=function(e,t){try{gA(U_,e,t)}catch{U_[e]=t}return t},_A="__core-js_shared__",AA=U_[_A]||vA(_A,{}),bA=Function.toString;"function"!=typeof AA.inspectSource&&(AA.inspectSource=function(e){return bA.call(e)});var yA,FA,TA,CA=AA.inspectSource,kA=U_.WeakMap,wA="function"==typeof kA&&/native code/.test(CA(kA)),SA=Y_((function(e){(e.exports=function(e,t){return AA[e]||(AA[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.11.2",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),EA=0,DA=Math.random(),xA=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++EA+DA).toString(36)},NA=SA("keys"),OA=function(e){return NA[e]||(NA[e]=xA(e))},jA={},MA="Object already initialized",RA=U_.WeakMap;if(wA){var PA=AA.state||(AA.state=new RA),BA=PA.get,LA=PA.has,zA=PA.set;yA=function(e,t){if(LA.call(PA,e))throw new TypeError(MA);return t.facade=e,zA.call(PA,e,t),t},FA=function(e){return BA.call(PA,e)||{}},TA=function(e){return LA.call(PA,e)}}else{var IA=OA("state");jA[IA]=!0,yA=function(e,t){if(oA(e,IA))throw new TypeError(MA);return t.facade=e,gA(e,IA,t),t},FA=function(e){return oA(e,IA)?e[IA]:{}},TA=function(e){return oA(e,IA)}}var YA={set:yA,get:FA,has:TA,enforce:function(e){return TA(e)?FA(e):yA(e,{})},getterFor:function(e){return function(t){var n;if(!nA(t)||(n=FA(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},ZA=Y_((function(e){var t=YA.get,n=YA.enforce,a=String(String).split("String");(e.exports=function(e,t,r,i){var o,s=!!i&&!!i.unsafe,l=!!i&&!!i.enumerable,u=!!i&&!!i.noTargetGet;"function"==typeof r&&("string"==typeof t&&!oA(r,"name")&&gA(r,"name",t),(o=n(r)).source||(o.source=a.join("string"==typeof t?t:""))),e!==U_?(s?!u&&e[t]&&(l=!0):delete e[t],l?e[t]=r:gA(e,t,r)):l?e[t]=r:vA(t,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||CA(this)}))})),UA=U_,GA=function(e){return"function"==typeof e?e:void 0},HA=function(e,t){return arguments.length<2?GA(UA[e])||GA(U_[e]):UA[e]&&UA[e][t]||U_[e]&&U_[e][t]},$A=Math.ceil,qA=Math.floor,VA=function(e){return isNaN(e=+e)?0:(e>0?qA:$A)(e)},WA=Math.min,KA=function(e){return e>0?WA(VA(e),9007199254740991):0},QA=Math.max,JA=Math.min,XA=function(e){return function(t,n,a){var r,i=tA(t),o=KA(i.length),s=function(e,t){var n=VA(e);return n<0?QA(n+t,0):JA(n,t)}(a,o);if(e&&n!=n){for(;o>s;)if((r=i[s++])!=r)return!0}else for(;o>s;s++)if((e||s in i)&&i[s]===n)return e||s||0;return!e&&-1}},eb=(XA(!0),XA(!1)),tb=function(e,t){var n,a=tA(e),r=0,i=[];for(n in a)!oA(jA,n)&&oA(a,n)&&i.push(n);for(;t.length>r;)oA(a,n=t[r++])&&(~eb(i,n)||i.push(n));return i},nb=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ab=nb.concat("length","prototype"),rb={f:Object.getOwnPropertyNames||function(e){return tb(e,ab)}},ib={f:Object.getOwnPropertySymbols},ob=HA("Reflect","ownKeys")||function(e){var t=rb.f(hA(e)),n=ib.f;return n?t.concat(n(e)):t},sb=function(e,t){for(var n=ob(t),a=fA.f,r=pA.f,i=0;ii;)fA.f(e,n=a[i++],t[n]);return e},Fb=HA("document","documentElement"),Tb="prototype",Cb="script",kb=OA("IE_PROTO"),wb=function(){},Sb=function(e){return"<"+Cb+">"+e+""},Eb=function(){try{vb=document.domain&&new ActiveXObject("htmlfile")}catch{}Eb=vb?function(e){e.write(Sb("")),e.close();var t=e.parentWindow.Object;return e=null,t}(vb):function(){var e,t=uA("iframe"),n="java"+Cb+":";return t.style.display="none",Fb.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(Sb("document.F=Object")),e.close(),e.F}();for(var e=nb.length;e--;)delete Eb[Tb][nb[e]];return Eb()};jA[kb]=!0;var Db=Object.create||function(e,t){var n;return null!==e?(wb[Tb]=hA(e),n=new wb,wb[Tb]=null,n[kb]=e):n=Eb(),void 0===t?n:yb(n,t)},xb="\t\n\v\f\r                 \u2028\u2029\ufeff",Nb="["+xb+"]",Ob=RegExp("^"+Nb+Nb+"*"),jb=RegExp(Nb+Nb+"*$"),Mb=function(e){return function(t){var n=String(eA(t));return 1&e&&(n=n.replace(Ob,"")),2&e&&(n=n.replace(jb,"")),n}},Rb={start:Mb(1),end:Mb(2),trim:Mb(3)},Pb=rb.f,Bb=pA.f,Lb=fA.f,zb=Rb.trim,Ib="Number",Yb=U_[Ib],Zb=Yb.prototype,Ub=Q_(Db(Zb))==Ib,Gb=function(e){var t,n,a,r,i,o,s,l,u=aA(e,!1);if("string"==typeof u&&u.length>2)if(43===(t=(u=zb(u)).charCodeAt(0))||45===t){if(88===(n=u.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:a=2,r=49;break;case 79:case 111:a=8,r=55;break;default:return+u}for(o=(i=u.slice(2)).length,s=0;sr)return NaN;return parseInt(i,a)}return+u};if(mb(Ib,!Yb(" 0o1")||!Yb("0b1")||Yb("+0x1"))){for(var Hb,$b=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof $b&&(Ub?G_((function(){Zb.valueOf.call(n)})):Q_(n)!=Ib)?Ab(new Yb(Gb(t)),n,$b):Gb(t)},qb=H_?Pb(Yb):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),Vb=0;qb.length>Vb;Vb++)oA(Yb,Hb=qb[Vb])&&!oA($b,Hb)&&Lb($b,Hb,Bb(Yb,Hb));$b.prototype=Zb,Zb.constructor=$b,ZA(U_,Ib,$b)}var Wb,Kb,Qb={SEMVER_SPEC_VERSION:"2.0.0",MAX_LENGTH:256,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH:16},Jb="process"==Q_(U_.process),Xb=HA("navigator","userAgent")||"",ey=U_.process,ty=ey&&ey.versions,ny=ty&&ty.v8;ny?Kb=(Wb=ny.split("."))[0]+Wb[1]:Xb&&(!(Wb=Xb.match(/Edge\/(\d+)/))||Wb[1]>=74)&&(Wb=Xb.match(/Chrome\/(\d+)/))&&(Kb=Wb[1]);var ay=Kb&&+Kb,ry=!!Object.getOwnPropertySymbols&&!G_((function(){return!Symbol.sham&&(Jb?38===ay:ay>37&&ay<41)})),iy=ry&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,oy=SA("wks"),sy=U_.Symbol,ly=iy?sy:sy&&sy.withoutSetter||xA,uy=function(e){return(!oA(oy,e)||!(ry||"string"==typeof oy[e]))&&(ry&&oA(sy,e)?oy[e]=sy[e]:oy[e]=ly("Symbol."+e)),oy[e]},cy=uy("match"),dy=function(e){var t;return nA(e)&&(void 0!==(t=e[cy])?!!t:"RegExp"==Q_(e))},py=function(){var e=hA(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function hy(e,t){return RegExp(e,t)}var my=G_((function(){var e=hy("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),fy=G_((function(){var e=hy("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),gy={UNSUPPORTED_Y:my,BROKEN_CARET:fy},vy=uy("species"),_y=function(e){var t=HA(e),n=fA.f;H_&&t&&!t[vy]&&n(t,vy,{configurable:!0,get:function(){return this}})},Ay=fA.f,by=rb.f,yy=YA.enforce,Fy=uy("match"),Ty=U_.RegExp,Cy=Ty.prototype,ky=/a/g,wy=/a/g,Sy=new Ty(ky)!==ky,Ey=gy.UNSUPPORTED_Y;if(H_&&mb("RegExp",!Sy||Ey||G_((function(){return wy[Fy]=!1,Ty(ky)!=ky||Ty(wy)==wy||"/a/i"!=Ty(ky,"i")})))){for(var Dy=function(e,t){var n,a=this instanceof Dy,r=dy(e),i=void 0===t;if(!a&&r&&e.constructor===Dy&&i)return e;Sy?r&&!i&&(e=e.source):e instanceof Dy&&(i&&(t=py.call(e)),e=e.source),Ey&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var o=Ab(Sy?new Ty(e,t):Ty(e,t),a?this:Cy,Dy);return Ey&&n&&(yy(o).sticky=!0),o},xy=function(e){e in Dy||Ay(Dy,e,{configurable:!0,get:function(){return Ty[e]},set:function(t){Ty[e]=t}})},Ny=by(Ty),Oy=0;Ny.length>Oy;)xy(Ny[Oy++]);Cy.constructor=Dy,Dy.prototype=Cy,ZA(U_,"RegExp",Dy)}_y("RegExp");var jy=RegExp.prototype.exec,My=SA("native-string-replace",String.prototype.replace),Ry=jy,Py=function(){var e=/a/,t=/b*/g;return jy.call(e,"a"),jy.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),By=gy.UNSUPPORTED_Y||gy.BROKEN_CARET,Ly=void 0!==/()??/.exec("")[1];(Py||Ly||By)&&(Ry=function(e){var t,n,a,r,i=this,o=By&&i.sticky,s=py.call(i),l=i.source,u=0,c=e;return o&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),c=String(e).slice(i.lastIndex),i.lastIndex>0&&(!i.multiline||i.multiline&&"\n"!==e[i.lastIndex-1])&&(l="(?: "+l+")",c=" "+c,u++),n=new RegExp("^(?:"+l+")",s)),Ly&&(n=new RegExp("^"+l+"$(?!\\s)",s)),Py&&(t=i.lastIndex),a=jy.call(o?n:i,c),o?a?(a.input=a.input.slice(u),a[0]=a[0].slice(u),a.index=i.lastIndex,i.lastIndex+=a[0].length):i.lastIndex=0:Py&&a&&(i.lastIndex=i.global?a.index+a[0].length:t),Ly&&a&&a.length>1&&My.call(a[0],n,(function(){for(r=1;r=51||!G_((function(){var t=[];return(t.constructor={})[Wy]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},Qy=uy("isConcatSpreadable"),Jy=9007199254740991,Xy="Maximum allowed index exceeded",eF=ay>=51||!G_((function(){var e=[];return e[Qy]=!1,e.concat()[0]!==e})),tF=Ky("concat"),nF=function(e){if(!nA(e))return!1;var t=e[Qy];return void 0!==t?!!t:Hy(e)};function aF(e){return(aF="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function rF(e,t){for(var n=0;nJy)throw TypeError(Xy);for(n=0;n=Jy)throw TypeError(Xy);$y(s,l++,i)}return s.length=l,s}});var iF="object"===(typeof i>"u"?"undefined":aF(i))&&i.env&&i.env.NODE_DEBUG&&/\bsemver\b/i.test(i.env.NODE_DEBUG)?function(){for(var e,t=arguments.length,n=new Array(t),r=0;r)?=?)"),s("XRANGEIDENTIFIERLOOSE","".concat(r[i.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),s("XRANGEIDENTIFIER","".concat(r[i.NUMERICIDENTIFIER],"|x|X|\\*")),s("XRANGEPLAIN","[v=\\s]*(".concat(r[i.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(r[i.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(r[i.XRANGEIDENTIFIER],")")+"(?:".concat(r[i.PRERELEASE],")?").concat(r[i.BUILD],"?")+")?)?"),s("XRANGEPLAINLOOSE","[v=\\s]*(".concat(r[i.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(r[i.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(r[i.XRANGEIDENTIFIERLOOSE],")")+"(?:".concat(r[i.PRERELEASELOOSE],")?").concat(r[i.BUILD],"?")+")?)?"),s("XRANGE","^".concat(r[i.GTLT],"\\s*").concat(r[i.XRANGEPLAIN],"$")),s("XRANGELOOSE","^".concat(r[i.GTLT],"\\s*").concat(r[i.XRANGEPLAINLOOSE],"$")),s("COERCE","".concat("(^|[^\\d])(\\d{1,").concat(n,"})")+"(?:\\.(\\d{1,".concat(n,"}))?")+"(?:\\.(\\d{1,".concat(n,"}))?")+"(?:$|[^\\d])"),s("COERCERTL",r[i.COERCE],!0),s("LONETILDE","(?:~>?)"),s("TILDETRIM","(\\s*)".concat(r[i.LONETILDE],"\\s+"),!0),t.tildeTrimReplace="$1~",s("TILDE","^".concat(r[i.LONETILDE]).concat(r[i.XRANGEPLAIN],"$")),s("TILDELOOSE","^".concat(r[i.LONETILDE]).concat(r[i.XRANGEPLAINLOOSE],"$")),s("LONECARET","(?:\\^)"),s("CARETTRIM","(\\s*)".concat(r[i.LONECARET],"\\s+"),!0),t.caretTrimReplace="$1^",s("CARET","^".concat(r[i.LONECARET]).concat(r[i.XRANGEPLAIN],"$")),s("CARETLOOSE","^".concat(r[i.LONECARET]).concat(r[i.XRANGEPLAINLOOSE],"$")),s("COMPARATORLOOSE","^".concat(r[i.GTLT],"\\s*(").concat(r[i.LOOSEPLAIN],")$|^$")),s("COMPARATOR","^".concat(r[i.GTLT],"\\s*(").concat(r[i.FULLPLAIN],")$|^$")),s("COMPARATORTRIM","(\\s*)".concat(r[i.GTLT],"\\s*(").concat(r[i.LOOSEPLAIN],"|").concat(r[i.XRANGEPLAIN],")"),!0),t.comparatorTrimReplace="$1$2$3",s("HYPHENRANGE","^\\s*(".concat(r[i.XRANGEPLAIN],")")+"\\s+-\\s+"+"(".concat(r[i.XRANGEPLAIN],")")+"\\s*$"),s("HYPHENRANGELOOSE","^\\s*(".concat(r[i.XRANGEPLAINLOOSE],")")+"\\s+-\\s+"+"(".concat(r[i.XRANGEPLAINLOOSE],")")+"\\s*$"),s("STAR","(<|>)?=?\\s*\\*"),s("GTE0","^\\s*>=\\s*0.0.0\\s*$"),s("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")})),lF=uy("species"),uF=!G_((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$
")})),cF="$0"==="a".replace(/./,"$0"),dF=uy("replace"),pF=!!/./[dF]&&""===/./[dF]("a","$0"),hF=!G_((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),mF=function(e,t,n,a){var r=uy(e),i=!G_((function(){var t={};return t[r]=function(){return 7},7!=""[e](t)})),o=i&&!G_((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[lF]=function(){return n},n.flags="",n[r]=/./[r]),n.exec=function(){return t=!0,null},n[r](""),!t}));if(!i||!o||"replace"===e&&(!uF||!cF||pF)||"split"===e&&!hF){var s=/./[r],l=n(r,""[e],(function(e,t,n,a,r){return t.exec===RegExp.prototype.exec?i&&!r?{done:!0,value:s.call(t,n,a)}:{done:!0,value:e.call(n,t,a)}:{done:!1}}),{REPLACE_KEEPS_$0:cF,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:pF}),u=l[0],c=l[1];ZA(String.prototype,e,u),ZA(RegExp.prototype,r,2==t?function(e,t){return c.call(e,this,t)}:function(e){return c.call(e,this)})}a&&gA(RegExp.prototype[r],"sham",!0)},fF=function(e){return function(t,n){var a,r,i=String(eA(t)),o=VA(n),s=i.length;return o<0||o>=s?e?"":void 0:(a=i.charCodeAt(o))<55296||a>56319||o+1===s||(r=i.charCodeAt(o+1))<56320||r>57343?e?i.charAt(o):a:e?i.slice(o,o+2):r-56320+(a-55296<<10)+65536}},gF={codeAt:fF(!1),charAt:fF(!0)},vF=gF.charAt,_F=function(e,t,n){return t+(n?vF(e,t).length:1)},AF=function(e,t){var n=e.exec;if("function"==typeof n){var a=n.call(e,t);if("object"!=typeof a)throw TypeError("RegExp exec method returned something other than an Object or null");return a}if("RegExp"!==Q_(e))throw TypeError("RegExp#exec called on incompatible receiver");return zy.call(e,t)};mF("match",1,(function(e,t,n){return[function(t){var n=eA(this),a=null==t?void 0:t[e];return void 0!==a?a.call(t,n):new RegExp(t)[e](String(n))},function(e){var a=n(t,e,this);if(a.done)return a.value;var r=hA(e),i=String(this);if(!r.global)return AF(r,i);var o=r.unicode;r.lastIndex=0;for(var s,l=[],u=0;null!==(s=AF(r,i));){var c=String(s[0]);l[u]=c,""===c&&(r.lastIndex=_F(i,KA(r.lastIndex),o)),u++}return 0===u?null:l}]}));var bF=Rb.trim;gb({target:"String",proto:!0,forced:function(e){return G_((function(){return!!xb[e]()||"​…᠎"!="​…᠎"[e]()||xb[e].name!==e}))}("trim")},{trim:function(){return bF(this)}});var yF=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},FF=function(e,t,n){if(yF(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,a){return e.call(t,n,a)};case 3:return function(n,a,r){return e.call(t,n,a,r)}}return function(){return e.apply(t,arguments)}},TF=[].push,CF=function(e){var t=1==e,n=2==e,a=3==e,r=4==e,i=6==e,o=7==e,s=5==e||i;return function(l,u,c,d){for(var p,h,m=rA(l),f=X_(m),g=FF(u,c,3),v=KA(f.length),_=0,A=d||Vy,b=t?A(l,v):n||o?A(l,0):void 0;v>_;_++)if((s||_ in f)&&(h=g(p=f[_],_,m),e))if(t)b[_]=h;else if(h)switch(e){case 3:return!0;case 5:return p;case 6:return _;case 2:TF.call(b,p)}else switch(e){case 4:return!1;case 7:TF.call(b,p)}return i?-1:a||r?r:b}},kF={forEach:CF(0),map:CF(1),filter:CF(2),some:CF(3),every:CF(4),find:CF(5),findIndex:CF(6),filterOut:CF(7)},wF=kF.map,SF=Ky("map");gb({target:"Array",proto:!0,forced:!SF},{map:function(e){return wF(this,e,arguments.length>1?arguments[1]:void 0)}});var EF=uy("species"),DF=gy.UNSUPPORTED_Y,xF=[].push,NF=Math.min,OF=4294967295;mF("split",2,(function(e,t,n){var a;return a="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var a=String(eA(this)),r=void 0===n?OF:n>>>0;if(0===r)return[];if(void 0===e)return[a];if(!dy(e))return t.call(a,e,r);for(var i,o,s,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),c=0,d=new RegExp(e.source,u+"g");(i=zy.call(d,a))&&!((o=d.lastIndex)>c&&(l.push(a.slice(c,i.index)),i.length>1&&i.index=r));)d.lastIndex===i.index&&d.lastIndex++;return c===a.length?(s||!d.test(""))&&l.push(""):l.push(a.slice(c)),l.length>r?l.slice(0,r):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=eA(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,r,n):a.call(String(r),t,n)},function(e,r){var i=n(a,e,this,r,a!==t);if(i.done)return i.value;var o=hA(e),s=String(this),l=function(e,t){var n,a=hA(e).constructor;return void 0===a||null==(n=hA(a)[EF])?t:yF(n)}(o,RegExp),u=o.unicode,c=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(DF?"g":"y"),d=new l(DF?"^(?:"+o.source+")":o,c),p=void 0===r?OF:r>>>0;if(0===p)return[];if(0===s.length)return null===AF(d,s)?[s]:[];for(var h=0,m=0,f=[];m1?arguments[1]:void 0)}});var zF=["includePrerelease","loose","rtl"],IF=function(e){return e?"object"!==aF(e)?{loose:!0}:zF.filter((function(t){return e[t]})).reduce((function(e,t){return e[t]=!0,e}),{}):{}},YF=/^[0-9]+$/,ZF=function(e,t){var n=YF.test(e),a=YF.test(t);return n&&a&&(e=+e,t=+t),e===t?0:n&&!a?-1:a&&!n?1:eUF)throw new TypeError("version is longer than ".concat(UF," characters"));oF("SemVer",t,n),this.options=n,this.loose=!!n.loose,this.includePrerelease=!!n.includePrerelease;var a=t.trim().match(n.loose?HF[$F.LOOSE]:HF[$F.FULL]);if(!a)throw new TypeError("Invalid Version: ".concat(t));if(this.raw=t,this.major=+a[1],this.minor=+a[2],this.patch=+a[3],this.major>GF||this.major<0)throw new TypeError("Invalid major version");if(this.minor>GF||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>GF||this.patch<0)throw new TypeError("Invalid patch version");a[4]?this.prerelease=a[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: ".concat(e))}return this.format(),this.raw=this.version,this}}]),e}(),WF=VF,KF=Qb.MAX_LENGTH,QF=sF.re,JF=sF.t,XF=function(e,t){var n=function(e,t){if(t=IF(t),e instanceof WF)return e;if("string"!=typeof e||e.length>KF)return null;if(!(t.loose?QF[JF.LOOSE]:QF[JF.FULL]).test(e))return null;try{return new WF(e,t)}catch{return null}}(e,t);return n?n.version:null},eT=function(e,t){return new WF(e,t).major},tT=function(){function e(e){"function"==typeof e.getVersion&&XF(e.getVersion())?eT(e.getVersion())!==eT(this.getVersion())&&a.warn("Proxying an event bus of version "+e.getVersion()+" with "+this.getVersion()):a.warn("Proxying an event bus with an unknown or invalid version"),this.bus=e}return e.prototype.getVersion=function(){return"1.3.0"},e.prototype.subscribe=function(e,t){this.bus.subscribe(e,t)},e.prototype.unsubscribe=function(e,t){this.bus.unsubscribe(e,t)},e.prototype.emit=function(e,t){this.bus.emit(e,t)},e}(),nT=uy("unscopables"),aT=Array.prototype;null==aT[nT]&&fA.f(aT,nT,{configurable:!0,value:Db(null)});var rT,iT,oT,sT=function(e){aT[nT][e]=!0},lT={},uT=!G_((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),cT=OA("IE_PROTO"),dT=Object.prototype,pT=uT?Object.getPrototypeOf:function(e){return e=rA(e),oA(e,cT)?e[cT]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?dT:null},hT=uy("iterator"),mT=!1;[].keys&&("next"in(oT=[].keys())?(iT=pT(pT(oT)))!==Object.prototype&&(rT=iT):mT=!0);var fT=null==rT||G_((function(){var e={};return rT[hT].call(e)!==e}));fT&&(rT={}),oA(rT,hT)||gA(rT,hT,(function(){return this}));var gT={IteratorPrototype:rT,BUGGY_SAFARI_ITERATORS:mT},vT=fA.f,_T=uy("toStringTag"),AT=function(e,t,n){e&&!oA(e=n?e:e.prototype,_T)&&vT(e,_T,{configurable:!0,value:t})},bT=gT.IteratorPrototype,yT=function(){return this},FT=gT.IteratorPrototype,TT=gT.BUGGY_SAFARI_ITERATORS,CT=uy("iterator"),kT="keys",wT="values",ST="entries",ET=function(){return this},DT=function(e,t,n,a,r,i,o){!function(e,t,n){var a=t+" Iterator";e.prototype=Db(bT,{next:W_(1,n)}),AT(e,a,!1),lT[a]=yT}(n,t,a);var s,l,u,c=function(e){if(e===r&&f)return f;if(!TT&&e in h)return h[e];switch(e){case kT:case wT:case ST:return function(){return new n(this,e)}}return function(){return new n(this)}},d=t+" Iterator",p=!1,h=e.prototype,m=h[CT]||h["@@iterator"]||r&&h[r],f=!TT&&m||c(r),g="Array"==t&&h.entries||m;if(g&&(s=pT(g.call(new e)),FT!==Object.prototype&&s.next&&(pT(s)!==FT&&(_b?_b(s,FT):"function"!=typeof s[CT]&&gA(s,CT,ET)),AT(s,d,!0))),r==wT&&m&&m.name!==wT&&(p=!0,f=function(){return m.call(this)}),h[CT]!==f&&gA(h,CT,f),lT[t]=f,r)if(l={values:c(wT),keys:i?f:c(kT),entries:c(ST)},o)for(u in l)(TT||p||!(u in h))&&ZA(h,u,l[u]);else gb({target:t,proto:!0,forced:TT||p},l);return l},xT="Array Iterator",NT=YA.set,OT=YA.getterFor(xT),jT=DT(Array,"Array",(function(e,t){NT(this,{type:xT,target:tA(e),index:0,kind:t})}),(function(){var e=OT(this),t=e.target,n=e.kind,a=e.index++;return!t||a>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:a,done:!1}:"values"==n?{value:t[a],done:!1}:{value:[a,t[a]],done:!1}}),"values");lT.Arguments=lT.Array,sT("keys"),sT("values"),sT("entries");var MT=!G_((function(){return Object.isExtensible(Object.preventExtensions({}))})),RT=Y_((function(e){var t=fA.f,n=xA("meta"),a=0,r=Object.isExtensible||function(){return!0},i=function(e){t(e,n,{value:{objectID:"O"+ ++a,weakData:{}}})},o=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!nA(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!oA(e,n)){if(!r(e))return"F";if(!t)return"E";i(e)}return e[n].objectID},getWeakData:function(e,t){if(!oA(e,n)){if(!r(e))return!0;if(!t)return!1;i(e)}return e[n].weakData},onFreeze:function(e){return MT&&o.REQUIRED&&r(e)&&!oA(e,n)&&i(e),e}};jA[n]=!0})),PT=uy("iterator"),BT=Array.prototype,LT={};LT[uy("toStringTag")]="z";var zT="[object z]"===String(LT),IT=uy("toStringTag"),YT="Arguments"==Q_(function(){return arguments}()),ZT=zT?Q_:function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch{}}(t=Object(e),IT))?n:YT?Q_(t):"Object"==(a=Q_(t))&&"function"==typeof t.callee?"Arguments":a},UT=uy("iterator"),GT=function(e){var t=e.return;if(void 0!==t)return hA(t.call(e)).value},HT=function(e,t){this.stopped=e,this.result=t},$T=function(e,t,n){var a,r,i,o,s,l,u,c=n&&n.that,d=!(!n||!n.AS_ENTRIES),p=!(!n||!n.IS_ITERATOR),h=!(!n||!n.INTERRUPTED),m=FF(t,c,1+d+h),f=function(e){return a&>(a),new HT(!0,e)},g=function(e){return d?(hA(e),h?m(e[0],e[1],f):m(e[0],e[1])):h?m(e,f):m(e)};if(p)a=e;else{if(r=function(e){if(null!=e)return e[UT]||e["@@iterator"]||lT[ZT(e)]}(e),"function"!=typeof r)throw TypeError("Target is not iterable");if(function(e){return void 0!==e&&(lT.Array===e||BT[PT]===e)}(r)){for(i=0,o=KA(e.length);o>i;i++)if((s=g(e[i]))&&s instanceof HT)return s;return new HT(!1)}a=r.call(e)}for(l=a.next;!(u=l.call(a)).done;){try{s=g(u.value)}catch(e){throw GT(a),e}if("object"==typeof s&&s&&s instanceof HT)return s}return new HT(!1)},qT=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},VT=uy("iterator"),WT=!1;try{var KT=0,QT={next:function(){return{done:!!KT++}},return:function(){WT=!0}};QT[VT]=function(){return this},Array.from(QT,(function(){throw 2}))}catch{}var JT=function(e,t,n){for(var a in t)ZA(e,a,t[a],n);return e},XT=fA.f,eC=RT.fastKey,tC=YA.set,nC=YA.getterFor,aC={getConstructor:function(e,t,n,a){var r=e((function(e,i){qT(e,r,t),tC(e,{type:t,index:Db(null),first:void 0,last:void 0,size:0}),H_||(e.size=0),null!=i&&$T(i,e[a],{that:e,AS_ENTRIES:n})})),i=nC(t),o=function(e,t,n){var a,r,o=i(e),l=s(e,t);return l?l.value=n:(o.last=l={index:r=eC(t,!0),key:t,value:n,previous:a=o.last,next:void 0,removed:!1},o.first||(o.first=l),a&&(a.next=l),H_?o.size++:e.size++,"F"!==r&&(o.index[r]=l)),e},s=function(e,t){var n,a=i(e),r=eC(t);if("F"!==r)return a.index[r];for(n=a.first;n;n=n.next)if(n.key==t)return n};return JT(r.prototype,{clear:function(){for(var e=i(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,H_?e.size=0:this.size=0},delete:function(e){var t=this,n=i(t),a=s(t,e);if(a){var r=a.next,o=a.previous;delete n.index[a.index],a.removed=!0,o&&(o.next=r),r&&(r.previous=o),n.first==a&&(n.first=r),n.last==a&&(n.last=o),H_?n.size--:t.size--}return!!a},forEach:function(e){for(var t,n=i(this),a=FF(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.next:n.first;)for(a(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!s(this,e)}}),JT(r.prototype,n?{get:function(e){var t=s(this,e);return t&&t.value},set:function(e,t){return o(this,0===e?0:e,t)}}:{add:function(e){return o(this,e=0===e?0:e,e)}}),H_&&XT(r.prototype,"size",{get:function(){return i(this).size}}),r},setStrong:function(e,t,n){var a=t+" Iterator",r=nC(t),i=nC(a);DT(e,t,(function(e,t){tC(this,{type:a,target:e,state:r(e),kind:t,last:void 0})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),_y(t)}};!function(e,t,n){var a=-1!==e.indexOf("Map"),r=-1!==e.indexOf("Weak"),i=a?"set":"add",o=U_[e],s=o&&o.prototype,l=o,u={},c=function(e){var t=s[e];ZA(s,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(r&&!nA(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return r&&!nA(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(r&&!nA(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(mb(e,"function"!=typeof o||!(r||s.forEach&&!G_((function(){(new o).entries().next()})))))l=n.getConstructor(t,e,a,i),RT.REQUIRED=!0;else if(mb(e,!0)){var d=new l,p=d[i](r?{}:-0,1)!=d,h=G_((function(){d.has(1)})),m=function(e,t){if(!WT)return!1;var n=!1;try{var a={};a[VT]=function(){return{next:function(){return{done:n=!0}}}},new o(a)}catch{}return n}(),f=!r&&G_((function(){for(var e=new o,t=5;t--;)e[i](t,t);return!e.has(-0)}));m||((l=t((function(t,n){qT(t,l,e);var r=Ab(new o,t,l);return null!=n&&$T(n,r[i],{that:r,AS_ENTRIES:a}),r}))).prototype=s,s.constructor=l),(h||f)&&(c("delete"),c("has"),a&&c("get")),(f||p)&&c(i),r&&s.clear&&delete s.clear}u[e]=l,gb({global:!0,forced:l!=o},u),AT(l,e),r||n.setStrong(l,e,a)}("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),aC);var rC=zT?{}.toString:function(){return"[object "+ZT(this)+"]"};zT||ZA(Object.prototype,"toString",rC,{unsafe:!0});var iC=gF.charAt,oC="String Iterator",sC=YA.set,lC=YA.getterFor(oC);DT(String,"String",(function(e){sC(this,{type:oC,string:String(e),index:0})}),(function(){var e,t=lC(this),n=t.string,a=t.index;return a>=n.length?{value:void 0,done:!0}:(e=iC(n,a),t.index+=e.length,{value:e,done:!1})}));var uC={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},cC=uy("iterator"),dC=uy("toStringTag"),pC=jT.values;for(var hC in uC){var mC=U_[hC],fC=mC&&mC.prototype;if(fC){if(fC[cC]!==pC)try{gA(fC,cC,pC)}catch{fC[cC]=pC}if(fC[dC]||gA(fC,dC,hC),uC[hC])for(var gC in jT)if(fC[gC]!==jT[gC])try{gA(fC,gC,jT[gC])}catch{fC[gC]=jT[gC]}}}var vC=kF.forEach,_C=jF("forEach")?[].forEach:function(e){return vC(this,e,arguments.length>1?arguments[1]:void 0)};for(var AC in uC){var bC=U_[AC],yC=bC&&bC.prototype;if(yC&&yC.forEach!==_C)try{gA(yC,"forEach",_C)}catch{yC.forEach=_C}}var FC=function(){function e(){this.handlers=new Map}return e.prototype.getVersion=function(){return"1.3.0"},e.prototype.subscribe=function(e,t){this.handlers.set(e,(this.handlers.get(e)||[]).concat(t))},e.prototype.unsubscribe=function(e,t){this.handlers.set(e,(this.handlers.get(e)||[]).filter((function(e){return e!=t})))},e.prototype.emit=function(e,t){(this.handlers.get(e)||[]).forEach((function(e){try{e(t)}catch(e){a.error("could not invoke event listener",e)}}))},e}(),TC=(typeof window.OC<"u"&&window.OC._eventBus&&typeof window._nc_event_bus>"u"&&(a.warn("found old event bus instance at OC._eventBus. Update your version!"),window._nc_event_bus=window.OC._eventBus),typeof window._nc_event_bus<"u"?new tT(window._nc_event_bus):window._nc_event_bus=new FC);const CC=Object.freeze(Object.defineProperty({__proto__:null,emit:function(e,t){TC.emit(e,t)},subscribe:function(e,t){TC.subscribe(e,t)},unsubscribe:function(e,t){TC.unsubscribe(e,t)}},Symbol.toStringTag,{value:"Module"})),kC=Xi(CC);var wC,SC,EC,DC,xC,NC={};function jC(){return EC||(EC=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"getRequestToken",{enumerable:!0,get:function(){return t.getRequestToken}}),Object.defineProperty(e,"onRequestTokenUpdate",{enumerable:!0,get:function(){return t.onRequestTokenUpdate}}),Object.defineProperty(e,"getCurrentUser",{enumerable:!0,get:function(){return n.getCurrentUser}});var t=function(){if(wC)return B_;wC=1,function(){if(M_)return L_;M_=1;var e=np(),t=function(){if(j_)return O_;j_=1;var e=z_().forEach,t=_h()("forEach");return O_=t?[].forEach:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)},O_}();e({target:"Array",proto:!0,forced:[].forEach!=t},{forEach:t})}(),Object.defineProperty(B_,"__esModule",{value:!0}),B_.getRequestToken=function(){return n},B_.onRequestTokenUpdate=function(e){r.push(e)};var e=kC,t=document.getElementsByTagName("head")[0],n=t?t.getAttribute("data-requesttoken"):null,r=[];return(0,e.subscribe)("csrf-token-update",(function(e){n=e.token,r.forEach((function(t){try{t(e.token)}catch(e){a.error("error updating CSRF token observer",e)}}))})),B_}(),n=function(){if(SC)return NC;SC=1,Object.defineProperty(NC,"__esModule",{value:!0}),NC.getCurrentUser=function(){return null===t?null:{uid:t,displayName:a,isAdmin:r}};var e=document.getElementsByTagName("head")[0],t=e?e.getAttribute("data-user"):null,n=document.getElementsByTagName("head")[0],a=n?n.getAttribute("data-user-displayname"):null,r=!(typeof OC>"u")&&OC.isUserAdmin();return NC}()}(P_)),P_}const MC=Xi(wh);var RC,PC;const BC=Hv({name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon alert-circle-outline-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null,null).exports,LC=Xi(Object.freeze(Object.defineProperty({__proto__:null,default:BC},Symbol.toStringTag,{value:"Module"}))),zC=Hv({name:"CheckIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon check-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null,null).exports,IC=Xi(Object.freeze(Object.defineProperty({__proto__:null,default:zC},Symbol.toStringTag,{value:"Module"}))),YC=Hv({name:"EyeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon eye-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null,null).exports,ZC=Xi(Object.freeze(Object.defineProperty({__proto__:null,default:YC},Symbol.toStringTag,{value:"Module"}))),UC=Hv({name:"EyeOffIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon eye-off-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null,null).exports,GC=Xi(Object.freeze(Object.defineProperty({__proto__:null,default:UC},Symbol.toStringTag,{value:"Module"})));var HC,$C={};!function(e,t){var n;self,n=()=>(()=>{var e={9456:(e,t,n)=>{n.d(t,{Z:()=>u});var a=n(8557),r=n(1205),i=n(5512),o=n.n(i),s=n(9873),l=n.n(s);const u={name:"NcInputField",components:{NcButton:a.default,AlertCircle:o(),Check:l()},inheritAttrs:!1,props:{value:{type:String,required:!0},type:{type:String,default:"text",validator:function(e){return["text","password","email","tel","url","search"].includes(e)}},label:{type:String,default:void 0},labelOutside:{type:Boolean,default:!1},labelVisible:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},showTrailingButton:{type:Boolean,default:!1},trailingButtonLabel:{type:String,default:""},success:{type:Boolean,default:!1},error:{type:Boolean,default:!1},helperText:{type:String,default:""},disabled:{type:Boolean,default:!1}},emits:["update:value","trailing-button-click"],computed:{computedId:function(){return this.$attrs.id&&""!==this.$attrs.id?this.$attrs.id:this.inputName},inputName:function(){return"input"+(0,r.Z)()},hasLeadingIcon:function(){return this.$slots.default},hasTrailingIcon:function(){return this.success},hasPlaceholder:function(){return""!==this.placeholder&&void 0!==this.placeholder},computedPlaceholder:function(){return this.labelVisible?this.hasPlaceholder?this.placeholder:"":this.hasPlaceholder?this.placeholder:this.label}},watch:{label:function(){this.validateLabel()},labelOutside:function(){this.validateLabel()}},methods:{handleInput:function(e){this.$emit("update:value",e.target.value)},handleTrailingButtonClick:function(e){this.$emit("trailing-button-click",e)},validateLabel:function(){if(this.label&&!this.labelOutside)throw new Error("You need to add a label to the textField component. Either use the prop label or use an external one, as per the example in the documentation")}}}},7492:(e,t,n)=>{n.d(t,{s:()=>a,x:()=>r});var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"input-field"},[e.labelOutside||void 0===e.label?e._e():t("label",{staticClass:"input-field__label",class:{"input-field__label--hidden":!e.labelVisible},attrs:{for:e.computedId}},[e._v("\n\t\t"+e._s(e.label)+"\n\t")]),e._v(" "),t("div",{staticClass:"input-field__main-wrapper"},[t("input",e._g(e._b({ref:"input",staticClass:"input-field__input",class:{"input-field__input--trailing-icon":e.showTrailingButton||e.hasTrailingIcon,"input-field__input--leading-icon":e.hasLeadingIcon,"input-field__input--success":e.success,"input-field__input--error":e.error},attrs:{id:e.computedId,type:e.type,disabled:e.disabled,placeholder:e.computedPlaceholder,"aria-describedby":e.helperText.length>0?"".concat(e.inputName,"-helper-text"):"","aria-live":"polite"},domProps:{value:e.value},on:{input:e.handleInput}},"input",e.$attrs,!1),e.$listeners)),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.hasLeadingIcon,expression:"hasLeadingIcon"}],staticClass:"input-field__icon input-field__icon--leading"},[e._t("default")],2),e._v(" "),e.showTrailingButton?t("NcButton",{staticClass:"input-field__clear-button",attrs:{type:"tertiary-no-background","aria-label":e.trailingButtonLabel,disabled:e.disabled},on:{click:e.handleTrailingButtonClick},scopedSlots:e._u([{key:"icon",fn:function(){return[e._t("trailing-button-icon")]},proxy:!0}],null,!0)}):e.success||e.error?t("div",{staticClass:"input-field__icon input-field__icon--trailing"},[e.success?t("Check",{attrs:{size:18}}):e.error?t("AlertCircle",{attrs:{size:18}}):e._e()],1):e._e()],1),e._v(" "),e.helperText.length>0?t("p",{staticClass:"input-field__helper-text-message",class:{"input-field__helper-text-message--error":e.error,"input-field__helper-text-message--success":e.success},attrs:{id:"".concat(e.inputName,"-helper-text")}},[e.success?t("Check",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):e.error?t("AlertCircle",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):e._e(),e._v("\n\t\t"+e._s(e.helperText)+"\n\t")],1):e._e()])},r=[]},8557:(e,t,n)=>{n.d(t,{default:()=>S});var a=n(5108);function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t{n.d(t,{t:()=>i});var a=(0,n(754).getGettextBuilder)().detectLocale();[{locale:"ar",translations:{"{tag} (invisible)":"{tag} (غير مرئي)","{tag} (restricted)":"{tag} (مقيد)",Actions:"الإجراءات",Activities:"النشاطات","Animals & Nature":"الحيوانات والطبيعة","Anything shared with the same group of people will show up here":"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا","Avatar of {displayName}":"صورة {displayName} الرمزية","Avatar of {displayName}, {status}":"صورة {displayName} الرمزية، {status}","Cancel changes":"إلغاء التغييرات","Change title":"تغيير العنوان",Choose:"إختيار","Clear text":"مسح النص",Close:"أغلق","Close modal":"قفل الشرط","Close navigation":"إغلاق المتصفح","Close sidebar":"قفل الشريط الجانبي","Confirm changes":"تأكيد التغييرات",Custom:"مخصص","Edit item":"تعديل عنصر","Error getting related resources":"خطأ في تحصيل مصادر ذات صلة","External documentation for {title}":"الوثائق الخارجية لـ{title}",Favorite:"مفضلة",Flags:"الأعلام","Food & Drink":"الطعام والشراب","Frequently used":"كثيرا ما تستخدم",Global:"عالمي","Go back to the list":"العودة إلى القائمة","Hide password":"إخفاء كلمة السر","Message limit of {count} characters reached":"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف","More items …":"عناصر أخرى ...",Next:"التالي","No emoji found":"لم يتم العثور على أي رمز تعبيري","No results":"ليس هناك أية نتيجة",Objects:"الأشياء",Open:"فتح",'Open link to "{resourceTitle}"':'فتح رابط إلى "{resourceTitle}"',"Open navigation":"فتح المتصفح","Password is secure":"كلمة السر مُؤمّنة","Pause slideshow":"إيقاف العرض مؤقتًا","People & Body":"الناس والجسم","Pick an emoji":"اختر رمزًا تعبيريًا","Please select a time zone:":"الرجاء تحديد المنطقة الزمنية:",Previous:"السابق","Related resources":"مصادر ذات صلة",Search:"بحث","Search results":"نتائج البحث","Select a tag":"اختر علامة",Settings:"الإعدادات","Settings navigation":"إعدادات المتصفح","Show password":"أعرض كلمة السر","Smileys & Emotion":"الوجوه و الرموز التعبيرية","Start slideshow":"بدء العرض",Submit:"إرسال",Symbols:"الرموز","Travel & Places":"السفر والأماكن","Type to search time zone":"اكتب للبحث عن منطقة زمنية","Unable to search the group":"تعذر البحث في المجموعة","Undo changes":"التراجع عن التغييرات","Write message, @ to mention someone, : for emoji autocompletion …":"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ..."}},{locale:"br",translations:{"{tag} (invisible)":"{tag} (diwelus)","{tag} (restricted)":"{tag} (bevennet)",Actions:"Oberioù",Activities:"Oberiantizoù","Animals & Nature":"Loened & Natur",Choose:"Dibab",Close:"Serriñ",Custom:"Personelañ",Flags:"Bannieloù","Food & Drink":"Boued & Evajoù","Frequently used":"Implijet alies",Next:"Da heul","No emoji found":"Emoji ebet kavet","No results":"Disoc'h ebet",Objects:"Traoù","Pause slideshow":"Arsav an diaporama","People & Body":"Tud & Korf","Pick an emoji":"Choaz un emoji",Previous:"A-raok",Search:"Klask","Search results":"Disoc'hoù an enklask","Select a tag":"Choaz ur c'hlav",Settings:"Arventennoù","Smileys & Emotion":"Smileyioù & Fromoù","Start slideshow":"Kregiñ an diaporama",Symbols:"Arouezioù","Travel & Places":"Beaj & Lec'hioù","Unable to search the group":"Dibosupl eo klask ar strollad"}},{locale:"ca",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringit)",Actions:"Accions",Activities:"Activitats","Animals & Nature":"Animals i natura","Anything shared with the same group of people will show up here":"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancel·la els canvis","Change title":"Canviar títol",Choose:"Tria","Clear text":"Netejar text",Close:"Tanca","Close modal":"Tancar el mode","Close navigation":"Tanca la navegació","Close sidebar":"Tancar la barra lateral","Confirm changes":"Confirmeu els canvis",Custom:"Personalitzat","Edit item":"Edita l'element","Error getting related resources":"Error obtenint els recursos relacionats","External documentation for {title}":"Documentació externa per a {title}",Favorite:"Preferit",Flags:"Marques","Food & Drink":"Menjar i begudes","Frequently used":"Utilitzats recentment",Global:"Global","Go back to the list":"Torna a la llista","Hide password":"Amagar contrasenya","Message limit of {count} characters reached":"S'ha arribat al límit de {count} caràcters per missatge","More items …":"Més artícles...",Next:"Següent","No emoji found":"No s'ha trobat cap emoji","No results":"Sense resultats",Objects:"Objectes",Open:"Obrir",'Open link to "{resourceTitle}"':'Obrir enllaç a "{resourceTitle}"',"Open navigation":"Obre la navegació","Password is secure":"Contrasenya segura
","Pause slideshow":"Atura la presentació","People & Body":"Persones i cos","Pick an emoji":"Trieu un emoji","Please select a time zone:":"Seleccioneu una zona horària:",Previous:"Anterior","Related resources":"Recursos relacionats",Search:"Cerca","Search results":"Resultats de cerca","Select a tag":"Seleccioneu una etiqueta",Settings:"Paràmetres","Settings navigation":"Navegació d'opcions","Show password":"Mostrar contrasenya","Smileys & Emotion":"Cares i emocions","Start slideshow":"Inicia la presentació",Submit:"Envia",Symbols:"Símbols","Travel & Places":"Viatges i llocs","Type to search time zone":"Escriviu per cercar la zona horària","Unable to search the group":"No es pot cercar el grup","Undo changes":"Desfés els canvis",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escriu missatge, fes servir "@" per esmentar algú, fes servir ":" per autocompletar emojis...'}},{locale:"cs_CZ",translations:{"{tag} (invisible)":"{tag} (neviditelné)","{tag} (restricted)":"{tag} (omezené)",Actions:"Akce",Activities:"Aktivity","Animals & Nature":"Zvířata a příroda","Anything shared with the same group of people will show up here":"Cokoli nasdíleného stejné skupině lidí se zobrazí zde","Avatar of {displayName}":"Zástupný obrázek uživatele {displayName}","Avatar of {displayName}, {status}":"Zástupný obrázek uživatele {displayName}, {status}","Cancel changes":"Zrušit změny","Change title":"Změnit nadpis",Choose:"Zvolit","Clear text":"Čitelný text",Close:"Zavřít","Close modal":"Zavřít dialogové okno","Close navigation":"Zavřít navigaci","Close sidebar":"Zavřít postranní panel","Confirm changes":"Potvrdit změny",Custom:"Uživatelsky určené","Edit item":"Upravit položku","Error getting related resources":"Chyba při získávání souvisejících prostředků","Error parsing svg":"Chyba při zpracovávání svg","External documentation for {title}":"Externí dokumentace k {title}",Favorite:"Oblíbené",Flags:"Příznaky","Food & Drink":"Jídlo a pití","Frequently used":"Často používané",Global:"Globální","Go back to the list":"Jít zpět na seznam","Hide password":"Skrýt heslo","Message limit of {count} characters reached":"Dosaženo limitu počtu ({count}) znaků zprávy","More items …":"Další položky…",Next:"Následující","No emoji found":"Nenalezeno žádné emoji","No results":"Nic nenalezeno",Objects:"Objekty",Open:"Otevřít",'Open link to "{resourceTitle}"':"Otevřít odkaz na „{resourceTitle}“","Open navigation":"Otevřít navigaci","Password is secure":"Heslo je bezpečné","Pause slideshow":"Pozastavit prezentaci","People & Body":"Lidé a tělo","Pick an emoji":"Vybrat emoji","Please select a time zone:":"Vyberte časovou zónu:",Previous:"Předchozí","Related resources":"Související prostředky",Search:"Hledat","Search results":"Výsledky hledání","Select a tag":"Vybrat štítek",Settings:"Nastavení","Settings navigation":"Pohyb po nastavení","Show password":"Zobrazit heslo","Smileys & Emotion":"Úsměvy a emoce","Start slideshow":"Spustit prezentaci",Submit:"Odeslat",Symbols:"Symboly","Travel & Places":"Cestování a místa","Type to search time zone":"Psaním vyhledejte časovou zónu","Unable to search the group":"Nedaří se hledat skupinu","Undo changes":"Vzít změny zpět",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…"}},{locale:"da",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (begrænset)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr & Natur","Anything shared with the same group of people will show up here":"Alt der deles med samme gruppe af personer vil vises her","Avatar of {displayName}":"Avatar af {displayName}","Avatar of {displayName}, {status}":"Avatar af {displayName}, {status}","Cancel changes":"Annuller ændringer","Change title":"Ret titel",Choose:"Vælg","Clear text":"Ryd tekst",Close:"Luk","Close modal":"Luk vindue","Close navigation":"Luk navigation","Close sidebar":"Luk sidepanel","Confirm changes":"Bekræft ændringer",Custom:"Brugerdefineret","Edit item":"Rediger emne","Error getting related resources":"Kunne ikke hente tilknyttede data","External documentation for {title}":"Ekstern dokumentation for {title}",Favorite:"Favorit",Flags:"Flag","Food & Drink":"Mad & Drikke","Frequently used":"Ofte brugt",Global:"Global","Go back to the list":"Tilbage til listen","Hide password":"Skjul kodeord","Message limit of {count} characters reached":"Begrænsning på {count} tegn er nået","More items …":"Mere ...",Next:"Videre","No emoji found":"Ingen emoji fundet","No results":"Ingen resultater",Objects:"Objekter",Open:"Åbn",'Open link to "{resourceTitle}"':'Åbn link til "{resourceTitle}"',"Open navigation":"Åbn navigation","Password is secure":"Kodeordet er sikkert","Pause slideshow":"Suspender fremvisning","People & Body":"Mennesker & Menneskekroppen","Pick an emoji":"Vælg en emoji","Please select a time zone:":"Vælg venligst en tidszone:",Previous:"Forrige","Related resources":"Relaterede emner",Search:"Søg","Search results":"Søgeresultater","Select a tag":"Vælg et mærke",Settings:"Indstillinger","Settings navigation":"Naviger i indstillinger","Show password":"Vis kodeord","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start fremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Rejser & Rejsemål","Type to search time zone":"Indtast for at søge efter tidszone","Unable to search the group":"Kan ikke søge på denne gruppe","Undo changes":"Fortryd ændringer","Write message, @ to mention someone, : for emoji autocompletion …":"Skriv besked, bruge @ til at nævne personer, : til emoji valg ..."}},{locale:"de",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Gegenstände",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick a date":"Ein Datum auswählen","Pick a date and a time":"Datum und Uhrzeit auswählen","Pick a month":"Einen Monat auswählen","Pick a time":"Eine Uhrzeit auswählen","Pick a week":"Eine Woche auswählen","Pick a year":"Ein Jahr auswählen","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte wählen Sie eine Zeitzone:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um Zeitzone zu suchen","Unable to search the group":"Die Gruppe konnte nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen","Write message, @ to mention someone, : for emoji autocompletion …":"Nachricht schreiben, @, um jemanden zu erwähnen, : für die automatische Vervollständigung von Emojis … "}},{locale:"de_DE",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Anything shared with the same group of people will show up here":"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","Error parsing svg":"Fehler beim Einlesen der SVG","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Objekte",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte eine Zeitzone auswählen:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um eine Zeitzone zu suchen","Unable to search the group":"Die Gruppe kann nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Nachricht schreiben, "@" um jemanden zu erwähnen, ":" für die automatische Vervollständigung von Emojis …'}},{locale:"el",translations:{"{tag} (invisible)":"{tag} (αόρατο)","{tag} (restricted)":"{tag} (περιορισμένο)",Actions:"Ενέργειες",Activities:"Δραστηριότητες","Animals & Nature":"Ζώα & Φύση","Anything shared with the same group of people will show up here":"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ","Avatar of {displayName}":"Άβαταρ του {displayName}","Avatar of {displayName}, {status}":"Άβαταρ του {displayName}, {status}","Cancel changes":"Ακύρωση αλλαγών","Change title":"Αλλαγή τίτλου",Choose:"Επιλογή","Clear text":"Εκκαθάριση κειμένου",Close:"Κλείσιμο","Close modal":"Βοηθητικό κλείσιμο","Close navigation":"Κλείσιμο πλοήγησης","Close sidebar":"Κλείσιμο πλευρικής μπάρας","Confirm changes":"Επιβεβαίωση αλλαγών",Custom:"Προσαρμογή","Edit item":"Επεξεργασία","Error getting related resources":"Σφάλμα λήψης σχετικών πόρων","Error parsing svg":"Σφάλμα ανάλυσης svg","External documentation for {title}":"Εξωτερική τεκμηρίωση για {title}",Favorite:"Αγαπημένα",Flags:"Σημαίες","Food & Drink":"Φαγητό & Ποτό","Frequently used":"Συχνά χρησιμοποιούμενο",Global:"Καθολικό","Go back to the list":"Επιστροφή στην αρχική λίστα ","Hide password":"Απόκρυψη κωδικού πρόσβασης","Message limit of {count} characters reached":"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος","More items …":"Περισσότερα στοιχεία …",Next:"Επόμενο","No emoji found":"Δεν βρέθηκε emoji","No results":"Κανένα αποτέλεσμα",Objects:"Αντικείμενα",Open:"Άνοιγμα",'Open link to "{resourceTitle}"':'Άνοιγμα συνδέσμου στο "{resourceTitle}"',"Open navigation":"Άνοιγμα πλοήγησης","Password is secure":"Ο κωδικός πρόσβασης είναι ασφαλής","Pause slideshow":"Παύση προβολής διαφανειών","People & Body":"Άνθρωποι & Σώμα","Pick an emoji":"Επιλέξτε ένα emoji","Please select a time zone:":"Παρακαλούμε επιλέξτε μια ζώνη ώρας:",Previous:"Προηγούμενο","Related resources":"Σχετικοί πόροι",Search:"Αναζήτηση","Search results":"Αποτελέσματα αναζήτησης","Select a tag":"Επιλογή ετικέτας",Settings:"Ρυθμίσεις","Settings navigation":"Πλοήγηση ρυθμίσεων","Show password":"Εμφάνιση κωδικού πρόσβασης","Smileys & Emotion":"Φατσούλες & Συναίσθημα","Start slideshow":"Έναρξη προβολής διαφανειών",Submit:"Υποβολή",Symbols:"Σύμβολα","Travel & Places":"Ταξίδια & Τοποθεσίες","Type to search time zone":"Πληκτρολογήστε για αναζήτηση ζώνης ώρας","Unable to search the group":"Δεν είναι δυνατή η αναζήτηση της ομάδας","Undo changes":"Αναίρεση Αλλαγών",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε "@" για να αναφέρετε κάποιον, χρησιμοποιείστε ":" για αυτόματη συμπλήρωση emoji …'}},{locale:"en_GB",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restricted)",Actions:"Actions",Activities:"Activities","Animals & Nature":"Animals & Nature","Anything shared with the same group of people will show up here":"Anything shared with the same group of people will show up here","Avatar of {displayName}":"Avatar of {displayName}","Avatar of {displayName}, {status}":"Avatar of {displayName}, {status}","Cancel changes":"Cancel changes","Change title":"Change title",Choose:"Choose","Clear text":"Clear text",Close:"Close","Close modal":"Close modal","Close navigation":"Close navigation","Close sidebar":"Close sidebar","Confirm changes":"Confirm changes",Custom:"Custom","Edit item":"Edit item","Error getting related resources":"Error getting related resources","Error parsing svg":"Error parsing svg","External documentation for {title}":"External documentation for {title}",Favorite:"Favourite",Flags:"Flags","Food & Drink":"Food & Drink","Frequently used":"Frequently used",Global:"Global","Go back to the list":"Go back to the list","Hide password":"Hide password","Message limit of {count} characters reached":"Message limit of {count} characters reached","More items …":"More items …",Next:"Next","No emoji found":"No emoji found","No results":"No results",Objects:"Objects",Open:"Open",'Open link to "{resourceTitle}"':'Open link to "{resourceTitle}"',"Open navigation":"Open navigation","Password is secure":"Password is secure","Pause slideshow":"Pause slideshow","People & Body":"People & Body","Pick an emoji":"Pick an emoji","Please select a time zone:":"Please select a time zone:",Previous:"Previous","Related resources":"Related resources",Search:"Search","Search results":"Search results","Select a tag":"Select a tag",Settings:"Settings","Settings navigation":"Settings navigation","Show password":"Show password","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start slideshow",Submit:"Submit",Symbols:"Symbols","Travel & Places":"Travel & Places","Type to search time zone":"Type to search time zone","Unable to search the group":"Unable to search the group","Undo changes":"Undo changes",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Write message, use "@" to mention someone, use ":" for emoji autocompletion …'}},{locale:"eo",translations:{"{tag} (invisible)":"{tag} (kaŝita)","{tag} (restricted)":"{tag} (limigita)",Actions:"Agoj",Activities:"Aktiveco","Animals & Nature":"Bestoj & Naturo",Choose:"Elektu",Close:"Fermu",Custom:"Propra",Flags:"Flagoj","Food & Drink":"Manĝaĵo & Trinkaĵo","Frequently used":"Ofte uzataj","Message limit of {count} characters reached":"La limo je {count} da literoj atingita",Next:"Sekva","No emoji found":"La emoĝio forestas","No results":"La rezulto forestas",Objects:"Objektoj","Pause slideshow":"Payzi bildprezenton","People & Body":"Homoj & Korpo","Pick an emoji":"Elekti emoĝion ",Previous:"Antaŭa",Search:"Serĉi","Search results":"Serĉrezultoj","Select a tag":"Elektu etikedon",Settings:"Agordo","Settings navigation":"Agorda navigado","Smileys & Emotion":"Ridoj kaj Emocioj","Start slideshow":"Komenci bildprezenton",Symbols:"Signoj","Travel & Places":"Vojaĵoj & Lokoj","Unable to search the group":"Ne eblas serĉi en la grupo","Write message, @ to mention someone …":"Mesaĝi, uzu @ por mencii iun ..."}},{locale:"es",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringido)",Actions:"Acciones",Activities:"Actividades","Animals & Nature":"Animales y naturaleza","Anything shared with the same group of people will show up here":"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar cambios","Change title":"Cambiar título",Choose:"Elegir","Clear text":"Limpiar texto",Close:"Cerrar","Close modal":"Cerrar modal","Close navigation":"Cerrar navegación","Close sidebar":"Cerrar barra lateral","Confirm changes":"Confirmar cambios",Custom:"Personalizado","Edit item":"Editar elemento","Error getting related resources":"Se encontró un error al obtener los recursos relacionados","Error parsing svg":"Error procesando svg","External documentation for {title}":"Documentacion externa de {title}",Favorite:"Favorito",Flags:"Banderas","Food & Drink":"Comida y bebida","Frequently used":"Usado con frecuenca",Global:"Global","Go back to the list":"Volver a la lista","Hide password":"Ocultar contraseña","Message limit of {count} characters reached":"El mensaje ha alcanzado el límite de {count} caracteres","More items …":"Más ítems...",Next:"Siguiente","No emoji found":"No hay ningún emoji","No results":" Ningún resultado",Objects:"Objetos",Open:"Abrir",'Open link to "{resourceTitle}"':'Abrir enlace a "{resourceTitle}"',"Open navigation":"Abrir navegación","Password is secure":"La contraseña es segura","Pause slideshow":"Pausar la presentación ","People & Body":"Personas y cuerpos","Pick an emoji":"Elegir un emoji","Please select a time zone:":"Por favor elige un huso de horario:",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Buscar","Search results":"Resultados de la búsqueda","Select a tag":"Seleccione una etiqueta",Settings:"Ajustes","Settings navigation":"Navegación por ajustes","Show password":"Mostrar contraseña","Smileys & Emotion":"Smileys y emoticonos","Start slideshow":"Iniciar la presentación",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viajes y lugares","Type to search time zone":"Escribe para buscar un huso de horario","Unable to search the group":"No es posible buscar en el grupo","Undo changes":"Deshacer cambios",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escribir mensaje, utilice "@" para mencionar a alguien, utilice ":" para autocompletado de emojis ...'}},{locale:"eu",translations:{"{tag} (invisible)":"{tag} (ikusezina)","{tag} (restricted)":"{tag} (mugatua)",Actions:"Ekintzak",Activities:"Jarduerak","Animals & Nature":"Animaliak eta Natura","Anything shared with the same group of people will show up here":"Pertsona-talde berarekin partekatutako edozer agertuko da hemen","Avatar of {displayName}":"{displayName}-(e)n irudia","Avatar of {displayName}, {status}":"{displayName} -(e)n irudia, {status}","Cancel changes":"Ezeztatu aldaketak","Change title":"Aldatu titulua",Choose:"Aukeratu","Clear text":"Garbitu testua",Close:"Itxi","Close modal":"Itxi modala","Close navigation":"Itxi nabigazioa","Close sidebar":"Itxi albo-barra","Confirm changes":"Baieztatu aldaketak",Custom:"Pertsonalizatua","Edit item":"Editatu elementua","Error getting related resources":"Errorea erlazionatutako baliabideak lortzerakoan","Error parsing svg":"Errore bat gertatu da svg-a analizatzean","External documentation for {title}":"Kanpoko dokumentazioa {title}(r)entzat",Favorite:"Gogokoa",Flags:"Banderak","Food & Drink":"Janaria eta edariak","Frequently used":"Askotan erabilia",Global:"Globala","Go back to the list":"Bueltatu zerrendara","Hide password":"Ezkutatu pasahitza","Message limit of {count} characters reached":"Mezuaren {count} karaketere-limitera heldu zara","More items …":"Elementu gehiago …",Next:"Hurrengoa","No emoji found":"Ez da emojirik aurkitu","No results":"Emaitzarik ez",Objects:"Objektuak",Open:"Ireki",'Open link to "{resourceTitle}"':'Ireki esteka: "{resourceTitle}"',"Open navigation":"Ireki nabigazioa","Password is secure":"Pasahitza segurua da","Pause slideshow":"Pausatu diaporama","People & Body":"Jendea eta gorputza","Pick an emoji":"Hautatu emoji bat","Please select a time zone:":"Mesedez hautatu ordu-zona bat:",Previous:"Aurrekoa","Related resources":"Erlazionatutako baliabideak",Search:"Bilatu","Search results":"Bilaketa emaitzak","Select a tag":"Hautatu etiketa bat",Settings:"Ezarpenak","Settings navigation":"Nabigazio ezarpenak","Show password":"Erakutsi pasahitza","Smileys & Emotion":"Smileyak eta emozioa","Start slideshow":"Hasi diaporama",Submit:"Bidali",Symbols:"Sinboloak","Travel & Places":"Bidaiak eta lekuak","Type to search time zone":"Idatzi ordu-zona bat bilatzeko","Unable to search the group":"Ezin izan da taldea bilatu","Undo changes":"Aldaketak desegin",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Idatzi mezua, erabili "@" norbait aipatzeko, erabili ":" emojiak automatikoki osatzeko...'}},{locale:"fi_FI",translations:{"{tag} (invisible)":"{tag} (näkymätön)","{tag} (restricted)":"{tag} (rajoitettu)",Actions:"Toiminnot",Activities:"Aktiviteetit","Animals & Nature":"Eläimet & luonto","Avatar of {displayName}":"Käyttäjän {displayName} avatar","Avatar of {displayName}, {status}":"Käyttäjän {displayName} avatar, {status}","Cancel changes":"Peruuta muutokset",Choose:"Valitse",Close:"Sulje","Close navigation":"Sulje navigaatio","Confirm changes":"Vahvista muutokset",Custom:"Mukautettu","Edit item":"Muokkaa kohdetta","External documentation for {title}":"Ulkoinen dokumentaatio kohteelle {title}",Flags:"Liput","Food & Drink":"Ruoka & juoma","Frequently used":"Usein käytetyt",Global:"Yleinen","Go back to the list":"Siirry takaisin listaan","Message limit of {count} characters reached":"Viestin merkken enimmäisimäärä {count} täynnä ",Next:"Seuraava","No emoji found":"Emojia ei löytynyt","No results":"Ei tuloksia",Objects:"Esineet & asiat","Open navigation":"Avaa navigaatio","Pause slideshow":"Keskeytä diaesitys","People & Body":"Ihmiset & keho","Pick an emoji":"Valitse emoji","Please select a time zone:":"Valitse aikavyöhyke:",Previous:"Edellinen",Search:"Etsi","Search results":"Hakutulokset","Select a tag":"Valitse tagi",Settings:"Asetukset","Settings navigation":"Asetusnavigaatio","Smileys & Emotion":"Hymiöt & tunteet","Start slideshow":"Aloita diaesitys",Submit:"Lähetä",Symbols:"Symbolit","Travel & Places":"Matkustus & kohteet","Type to search time zone":"Kirjoita etsiäksesi aikavyöhyke","Unable to search the group":"Ryhmää ei voi hakea","Undo changes":"Kumoa muutokset","Write message, @ to mention someone, : for emoji autocompletion …":"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…"}},{locale:"fr",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restreint)",Actions:"Actions",Activities:"Activités","Animals & Nature":"Animaux & Nature","Anything shared with the same group of people will show up here":"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Annuler les modifications","Change title":"Modifier le titre",Choose:"Choisir","Clear text":"Effacer le texte",Close:"Fermer","Close modal":"Fermer la fenêtre","Close navigation":"Fermer la navigation","Close sidebar":"Fermer la barre latérale","Confirm changes":"Confirmer les modifications",Custom:"Personnalisé","Edit item":"Éditer l'élément","Error getting related resources":"Erreur à la récupération des ressources liées","Error parsing svg":"Erreur d'analyse SVG","External documentation for {title}":"Documentation externe pour {title}",Favorite:"Favori",Flags:"Drapeaux","Food & Drink":"Nourriture & Boissons","Frequently used":"Utilisés fréquemment",Global:"Global","Go back to the list":"Retourner à la liste","Hide password":"Cacher le mot de passe","Message limit of {count} characters reached":"Limite de messages de {count} caractères atteinte","More items …":"Plus d'éléments...",Next:"Suivant","No emoji found":"Pas d’émoji trouvé","No results":"Aucun résultat",Objects:"Objets",Open:"Ouvrir",'Open link to "{resourceTitle}"':'Ouvrir le lien vers "{resourceTitle}"',"Open navigation":"Ouvrir la navigation","Password is secure":"Le mot de passe est sécurisé","Pause slideshow":"Mettre le diaporama en pause","People & Body":"Personnes & Corps","Pick an emoji":"Choisissez un émoji","Please select a time zone:":"Sélectionnez un fuseau horaire : ",Previous:"Précédent","Related resources":"Ressources liées",Search:"Chercher","Search results":"Résultats de recherche","Select a tag":"Sélectionnez une balise",Settings:"Paramètres","Settings navigation":"Navigation dans les paramètres","Show password":"Afficher le mot de passe","Smileys & Emotion":"Smileys & Émotions","Start slideshow":"Démarrer le diaporama",Submit:"Valider",Symbols:"Symboles","Travel & Places":"Voyage & Lieux","Type to search time zone":"Saisissez les premiers lettres pour rechercher un fuseau horaire","Unable to search the group":"Impossible de chercher le groupe","Undo changes":"Annuler les changements",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Écrire un message, utiliser "@" pour mentionner une personne, ":" pour l\'autocomplétion des émojis...'}},{locale:"gl",translations:{"{tag} (invisible)":"{tag} (invisíbel)","{tag} (restricted)":"{tag} (restrinxido)",Actions:"Accións",Activities:"Actividades","Animals & Nature":"Animais e natureza","Cancel changes":"Cancelar os cambios",Choose:"Escoller",Close:"Pechar","Confirm changes":"Confirma os cambios",Custom:"Personalizado","External documentation for {title}":"Documentación externa para {title}",Flags:"Bandeiras","Food & Drink":"Comida e bebida","Frequently used":"Usado con frecuencia","Message limit of {count} characters reached":"Acadouse o límite de {count} caracteres por mensaxe",Next:"Seguinte","No emoji found":"Non se atopou ningún «emoji»","No results":"Sen resultados",Objects:"Obxectos","Pause slideshow":"Pausar o diaporama","People & Body":"Persoas e corpo","Pick an emoji":"Escolla un «emoji»",Previous:"Anterir",Search:"Buscar","Search results":"Resultados da busca","Select a tag":"Seleccione unha etiqueta",Settings:"Axustes","Settings navigation":"Navegación polos axustes","Smileys & Emotion":"Sorrisos e emocións","Start slideshow":"Iniciar o diaporama",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viaxes e lugares","Unable to search the group":"Non foi posíbel buscar o grupo","Write message, @ to mention someone …":"Escriba a mensaxe, @ para mencionar a alguén…"}},{locale:"he",translations:{"{tag} (invisible)":"{tag} (נסתר)","{tag} (restricted)":"{tag} (מוגבל)",Actions:"פעולות",Activities:"פעילויות","Animals & Nature":"חיות וטבע",Choose:"בחירה",Close:"סגירה",Custom:"בהתאמה אישית",Flags:"דגלים","Food & Drink":"מזון ומשקאות","Frequently used":"בשימוש תדיר",Next:"הבא","No emoji found":"לא נמצא אמוג׳י","No results":"אין תוצאות",Objects:"חפצים","Pause slideshow":"השהיית מצגת","People & Body":"אנשים וגוף","Pick an emoji":"נא לבחור אמוג׳י",Previous:"הקודם",Search:"חיפוש","Search results":"תוצאות חיפוש","Select a tag":"בחירת תגית",Settings:"הגדרות","Smileys & Emotion":"חייכנים ורגשונים","Start slideshow":"התחלת המצגת",Symbols:"סמלים","Travel & Places":"טיולים ומקומות","Unable to search the group":"לא ניתן לחפש בקבוצה"}},{locale:"hu_HU",translations:{"{tag} (invisible)":"{tag} (láthatatlan)","{tag} (restricted)":"{tag} (korlátozott)",Actions:"Műveletek",Activities:"Tevékenységek","Animals & Nature":"Állatok és természet","Anything shared with the same group of people will show up here":"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni","Avatar of {displayName}":"{displayName} profilképe","Avatar of {displayName}, {status}":"{displayName} profilképe, {status}","Cancel changes":"Változtatások elvetése","Change title":"Cím megváltoztatása",Choose:"Válassszon","Clear text":"Szöveg törlése",Close:"Bezárás","Close modal":"Ablak bezárása","Close navigation":"Navigáció bezárása","Close sidebar":"Oldalsáv bezárása","Confirm changes":"Változtatások megerősítése",Custom:"Egyéni","Edit item":"Elem szerkesztése","Error getting related resources":"Hiba a kapcsolódó erőforrások lekérésekor","Error parsing svg":"Hiba az SVG feldolgozásakor","External documentation for {title}":"Külső dokumentáció ehhez: {title}",Favorite:"Kedvenc",Flags:"Zászlók","Food & Drink":"Étel és ital","Frequently used":"Gyakran használt",Global:"Globális","Go back to the list":"Ugrás vissza a listához","Hide password":"Jelszó elrejtése","Message limit of {count} characters reached":"{count} karakteres üzenetkorlát elérve","More items …":"További elemek...",Next:"Következő","No emoji found":"Nem található emodzsi","No results":"Nincs találat",Objects:"Tárgyak",Open:"Megnyitás",'Open link to "{resourceTitle}"':"A(z) „{resourceTitle}” hivatkozásának megnyitása","Open navigation":"Navigáció megnyitása","Password is secure":"A jelszó biztonságos","Pause slideshow":"Diavetítés szüneteltetése","People & Body":"Emberek és test","Pick an emoji":"Válasszon egy emodzsit","Please select a time zone:":"Válasszon időzónát:",Previous:"Előző","Related resources":"Kapcsolódó erőforrások",Search:"Keresés","Search results":"Találatok","Select a tag":"Válasszon címkét",Settings:"Beállítások","Settings navigation":"Navigáció a beállításokban","Show password":"Jelszó megjelenítése","Smileys & Emotion":"Mosolyok és érzelmek","Start slideshow":"Diavetítés indítása",Submit:"Beküldés",Symbols:"Szimbólumok","Travel & Places":"Utazás és helyek","Type to search time zone":"Gépeljen az időzóna kereséséhez","Unable to search the group":"A csoport nem kereshető","Undo changes":"Változtatások visszavonása",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…"}},{locale:"is",translations:{"{tag} (invisible)":"{tag} (ósýnilegt)","{tag} (restricted)":"{tag} (takmarkað)",Actions:"Aðgerðir",Activities:"Aðgerðir","Animals & Nature":"Dýr og náttúra",Choose:"Velja",Close:"Loka",Custom:"Sérsniðið",Flags:"Flögg","Food & Drink":"Matur og drykkur","Frequently used":"Oftast notað",Next:"Næsta","No emoji found":"Ekkert tjáningartákn fannst","No results":"Engar niðurstöður",Objects:"Hlutir","Pause slideshow":"Gera hlé á skyggnusýningu","People & Body":"Fólk og líkami","Pick an emoji":"Veldu tjáningartákn",Previous:"Fyrri",Search:"Leita","Search results":"Leitarniðurstöður","Select a tag":"Veldu merki",Settings:"Stillingar","Smileys & Emotion":"Broskallar og tilfinningar","Start slideshow":"Byrja skyggnusýningu",Symbols:"Tákn","Travel & Places":"Staðir og ferðalög","Unable to search the group":"Get ekki leitað í hópnum"}},{locale:"it",translations:{"{tag} (invisible)":"{tag} (invisibile)","{tag} (restricted)":"{tag} (limitato)",Actions:"Azioni",Activities:"Attività","Animals & Nature":"Animali e natura","Anything shared with the same group of people will show up here":"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui","Avatar of {displayName}":"Avatar di {displayName}","Avatar of {displayName}, {status}":"Avatar di {displayName}, {status}","Cancel changes":"Annulla modifiche","Change title":"Modifica il titolo",Choose:"Scegli","Clear text":"Cancella il testo",Close:"Chiudi","Close modal":"Chiudi il messaggio modale","Close navigation":"Chiudi la navigazione","Close sidebar":"Chiudi la barra laterale","Confirm changes":"Conferma modifiche",Custom:"Personalizzato","Edit item":"Modifica l'elemento","Error getting related resources":"Errore nell'ottenere risorse correlate","Error parsing svg":"Errore nell'analizzare l'svg","External documentation for {title}":"Documentazione esterna per {title}",Favorite:"Preferito",Flags:"Bandiere","Food & Drink":"Cibo e bevande","Frequently used":"Usati di frequente",Global:"Globale","Go back to the list":"Torna all'elenco","Hide password":"Nascondi la password","Message limit of {count} characters reached":"Limite dei messaggi di {count} caratteri raggiunto","More items …":"Più elementi ...",Next:"Successivo","No emoji found":"Nessun emoji trovato","No results":"Nessun risultato",Objects:"Oggetti",Open:"Apri",'Open link to "{resourceTitle}"':'Apri il link a "{resourceTitle}"',"Open navigation":"Apri la navigazione","Password is secure":"La password è sicura","Pause slideshow":"Presentazione in pausa","People & Body":"Persone e corpo","Pick an emoji":"Scegli un emoji","Please select a time zone:":"Si prega di selezionare un fuso orario:",Previous:"Precedente","Related resources":"Risorse correlate",Search:"Cerca","Search results":"Risultati di ricerca","Select a tag":"Seleziona un'etichetta",Settings:"Impostazioni","Settings navigation":"Navigazione delle impostazioni","Show password":"Mostra la password","Smileys & Emotion":"Faccine ed emozioni","Start slideshow":"Avvia presentazione",Submit:"Invia",Symbols:"Simboli","Travel & Places":"Viaggi e luoghi","Type to search time zone":"Digita per cercare un fuso orario","Unable to search the group":"Impossibile cercare il gruppo","Undo changes":"Cancella i cambiamenti",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrivi un messaggio, "@" per menzionare qualcuno, ":" per il completamento automatico delle emoji ...'}},{locale:"ja_JP",translations:{"{tag} (invisible)":"{タグ} (不可視)","{tag} (restricted)":"{タグ} (制限付)",Actions:"操作",Activities:"アクティビティ","Animals & Nature":"動物と自然","Anything shared with the same group of people will show up here":"同じグループで共有しているものは、全てここに表示されます","Avatar of {displayName}":"{displayName} のアバター","Avatar of {displayName}, {status}":"{displayName}, {status} のアバター","Cancel changes":"変更をキャンセル","Change title":"タイトルを変更",Choose:"選択","Clear text":"テキストをクリア",Close:"閉じる","Close modal":"モーダルを閉じる","Close navigation":"ナビゲーションを閉じる","Close sidebar":"サイドバーを閉じる","Confirm changes":"変更を承認",Custom:"カスタム","Edit item":"編集","Error getting related resources":"関連リソースの取得エラー","External documentation for {title}":"{title} のための添付文書",Favorite:"お気に入り",Flags:"国旗","Food & Drink":"食べ物と飲み物","Frequently used":"よく使うもの",Global:"全体","Go back to the list":"リストに戻る","Hide password":"パスワードを非表示","Message limit of {count} characters reached":"{count} 文字のメッセージ上限に達しています","More items …":"他のアイテム",Next:"次","No emoji found":"絵文字が見つかりません","No results":"なし",Objects:"物",Open:"開く",'Open link to "{resourceTitle}"':'"{resourceTitle}"のリンクを開く',"Open navigation":"ナビゲーションを開く","Password is secure":"パスワードは保護されています","Pause slideshow":"スライドショーを一時停止","People & Body":"様々な人と体の部位","Pick an emoji":"絵文字を選択","Please select a time zone:":"タイムゾーンを選んで下さい:",Previous:"前","Related resources":"関連リソース",Search:"検索","Search results":"検索結果","Select a tag":"タグを選択",Settings:"設定","Settings navigation":"ナビゲーション設定","Show password":"パスワードを表示","Smileys & Emotion":"感情表現","Start slideshow":"スライドショーを開始",Submit:"提出",Symbols:"記号","Travel & Places":"旅行と場所","Type to search time zone":"タイムゾーン検索のため入力してください","Unable to search the group":"グループを検索できません","Undo changes":"変更を取り消し","Write message, @ to mention someone, : for emoji autocompletion …":"メッセージを書く、@で誰かを紹介する、: で絵文字を自動補完する ..."}},{locale:"lt_LT",translations:{"{tag} (invisible)":"{tag} (nematoma)","{tag} (restricted)":"{tag} (apribota)",Actions:"Veiksmai",Activities:"Veiklos","Animals & Nature":"Gyvūnai ir gamta",Choose:"Pasirinkti",Close:"Užverti",Custom:"Tinkinti","External documentation for {title}":"Išorinė {title} dokumentacija",Flags:"Vėliavos","Food & Drink":"Maistas ir gėrimai","Frequently used":"Dažniausiai naudoti","Message limit of {count} characters reached":"Pasiekta {count} simbolių žinutės riba",Next:"Kitas","No emoji found":"Nerasta jaustukų","No results":"Nėra rezultatų",Objects:"Objektai","Pause slideshow":"Pristabdyti skaidrių rodymą","People & Body":"Žmonės ir kūnas","Pick an emoji":"Pasirinkti jaustuką",Previous:"Ankstesnis",Search:"Ieškoti","Search results":"Paieškos rezultatai","Select a tag":"Pasirinkti žymę",Settings:"Nustatymai","Settings navigation":"Naršymas nustatymuose","Smileys & Emotion":"Šypsenos ir emocijos","Start slideshow":"Pradėti skaidrių rodymą",Submit:"Pateikti",Symbols:"Simboliai","Travel & Places":"Kelionės ir vietos","Unable to search the group":"Nepavyko atlikti paiešką grupėje","Write message, @ to mention someone …":"Rašykite žinutę, naudokite @ norėdami kažką paminėti…"}},{locale:"lv",translations:{"{tag} (invisible)":"{tag} (neredzams)","{tag} (restricted)":"{tag} (ierobežots)",Choose:"Izvēlēties",Close:"Aizvērt",Next:"Nākamais","No results":"Nav rezultātu","Pause slideshow":"Pauzēt slaidrādi",Previous:"Iepriekšējais","Select a tag":"Izvēlēties birku",Settings:"Iestatījumi","Start slideshow":"Sākt slaidrādi"}},{locale:"mk",translations:{"{tag} (invisible)":"{tag} (невидливо)","{tag} (restricted)":"{tag} (ограничено)",Actions:"Акции",Activities:"Активности","Animals & Nature":"Животни & Природа","Avatar of {displayName}":"Аватар на {displayName}","Avatar of {displayName}, {status}":"Аватар на {displayName}, {status}","Cancel changes":"Откажи ги промените","Change title":"Промени наслов",Choose:"Избери",Close:"Затвори","Close modal":"Затвори модал","Close navigation":"Затвори навигација","Confirm changes":"Потврди ги промените",Custom:"Прилагодени","Edit item":"Уреди","External documentation for {title}":"Надворешна документација за {title}",Favorite:"Фаворити",Flags:"Знамиња","Food & Drink":"Храна & Пијалоци","Frequently used":"Најчесто користени",Global:"Глобално","Go back to the list":"Врати се на листата",items:"ставки","Message limit of {count} characters reached":"Ограничувањето на должината на пораката од {count} карактери е надминато","More {dashboardItemType} …":"Повеќе {dashboardItemType} …",Next:"Следно","No emoji found":"Не се пронајдени емотикони","No results":"Нема резултати",Objects:"Објекти",Open:"Отвори","Open navigation":"Отвори навигација","Pause slideshow":"Пузирај слајдшоу","People & Body":"Луѓе & Тело","Pick an emoji":"Избери емотикон","Please select a time zone:":"Изберете временска зона:",Previous:"Предходно",Search:"Барај","Search results":"Резултати од барувањето","Select a tag":"Избери ознака",Settings:"Параметри","Settings navigation":"Параметри за навигација","Smileys & Emotion":"Смешковци & Емотикони","Start slideshow":"Стартувај слајдшоу",Submit:"Испрати",Symbols:"Симболи","Travel & Places":"Патувања & Места","Type to search time zone":"Напишете за да пребарате временска зона","Unable to search the group":"Неможе да се принајде групата","Undo changes":"Врати ги промените","Write message, @ to mention someone, : for emoji autocompletion …":"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ..."}},{locale:"my",translations:{"{tag} (invisible)":"{tag} (ကွယ်ဝှက်ထား)","{tag} (restricted)":"{tag} (ကန့်သတ်)",Actions:"လုပ်ဆောင်ချက်များ",Activities:"ပြုလုပ်ဆောင်တာများ","Animals & Nature":"တိရစ္ဆာန်များနှင့် သဘာဝ","Avatar of {displayName}":"{displayName} ၏ ကိုယ်ပွား","Cancel changes":"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်",Choose:"ရွေးချယ်ရန်",Close:"ပိတ်ရန်","Confirm changes":"ပြောင်းလဲမှုများ အတည်ပြုရန်",Custom:"အလိုကျချိန်ညှိမှု","External documentation for {title}":"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း",Flags:"အလံများ","Food & Drink":"အစားအသောက်","Frequently used":"မကြာခဏအသုံးပြုသော",Global:"ကမ္ဘာလုံးဆိုင်ရာ","Message limit of {count} characters reached":"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ",Next:"နောက်သို့ဆက်ရန်","No emoji found":"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ","No results":"ရလဒ်မရှိပါ",Objects:"အရာဝတ္ထုများ","Pause slideshow":"စလိုက်ရှိုး ခေတ္တရပ်ရန်","People & Body":"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်","Pick an emoji":"အီမိုဂျီရွေးရန်","Please select a time zone:":"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ",Previous:"ယခင်",Search:"ရှာဖွေရန်","Search results":"ရှာဖွေမှု ရလဒ်များ","Select a tag":"tag ရွေးချယ်ရန်",Settings:"ချိန်ညှိချက်များ","Settings navigation":"ချိန်ညှိချက်အညွှန်း","Smileys & Emotion":"စမိုင်လီများနှင့် အီမိုရှင်း","Start slideshow":"စလိုက်ရှိုးအား စတင်ရန်",Submit:"တင်သွင်းရန်",Symbols:"သင်္ကေတများ","Travel & Places":"ခရီးသွားလာခြင်းနှင့် နေရာများ","Type to search time zone":"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ","Unable to search the group":"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ","Write message, @ to mention someone …":"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်..."}},{locale:"nb_NO",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (beskyttet)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr og natur","Anything shared with the same group of people will show up here":"Alt som er delt med den samme gruppen vil vises her","Avatar of {displayName}":"Avataren til {displayName}","Avatar of {displayName}, {status}":"{displayName}'s avatar, {status}","Cancel changes":"Avbryt endringer","Change title":"Endre tittel",Choose:"Velg","Clear text":"Fjern tekst",Close:"Lukk","Close modal":"Lukk modal","Close navigation":"Lukk navigasjon","Close sidebar":"Lukk sidepanel","Confirm changes":"Bekreft endringer",Custom:"Tilpasset","Edit item":"Rediger","Error getting related resources":"Feil ved henting av relaterte ressurser","External documentation for {title}":"Ekstern dokumentasjon for {title}",Favorite:"Favoritt",Flags:"Flagg","Food & Drink":"Mat og drikke","Frequently used":"Ofte brukt",Global:"Global","Go back to the list":"Gå tilbake til listen","Hide password":"Skjul passord","Message limit of {count} characters reached":"Karakter begrensing {count} nådd i melding","More items …":"Flere gjenstander...",Next:"Neste","No emoji found":"Fant ingen emoji","No results":"Ingen resultater",Objects:"Objekter",Open:"Åpne",'Open link to "{resourceTitle}"':'Åpne link til "{resourceTitle}"',"Open navigation":"Åpne navigasjon","Password is secure":"Passordet er sikkert","Pause slideshow":"Pause lysbildefremvisning","People & Body":"Mennesker og kropp","Pick an emoji":"Velg en emoji","Please select a time zone:":"Vennligst velg tidssone",Previous:"Forrige","Related resources":"Relaterte ressurser",Search:"Søk","Search results":"Søkeresultater","Select a tag":"Velg en merkelapp",Settings:"Innstillinger","Settings navigation":"Navigasjonsinstillinger","Show password":"Vis passord","Smileys & Emotion":"Smilefjes og følelser","Start slideshow":"Start lysbildefremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Reise og steder","Type to search time zone":"Tast for å søke etter tidssone","Unable to search the group":"Kunne ikke søke i gruppen","Undo changes":"Tilbakestill endringer","Write message, @ to mention someone, : for emoji autocompletion …":"Skriv melding, @ for å nevne noen, : for emoji-autofullføring…"}},{locale:"nl",translations:{"{tag} (invisible)":"{tag} (onzichtbaar)","{tag} (restricted)":"{tag} (beperkt)",Actions:"Acties",Activities:"Activiteiten","Animals & Nature":"Dieren & Natuur","Avatar of {displayName}":"Avatar van {displayName}","Avatar of {displayName}, {status}":"Avatar van {displayName}, {status}","Cancel changes":"Wijzigingen annuleren",Choose:"Kies",Close:"Sluiten","Close navigation":"Navigatie sluiten","Confirm changes":"Wijzigingen bevestigen",Custom:"Aangepast","Edit item":"Item bewerken","External documentation for {title}":"Externe documentatie voor {title}",Flags:"Vlaggen","Food & Drink":"Eten & Drinken","Frequently used":"Vaak gebruikt",Global:"Globaal","Go back to the list":"Ga terug naar de lijst","Message limit of {count} characters reached":"Berichtlimiet van {count} karakters bereikt",Next:"Volgende","No emoji found":"Geen emoji gevonden","No results":"Geen resultaten",Objects:"Objecten","Open navigation":"Navigatie openen","Pause slideshow":"Pauzeer diavoorstelling","People & Body":"Mensen & Lichaam","Pick an emoji":"Kies een emoji","Please select a time zone:":"Selecteer een tijdzone:",Previous:"Vorige",Search:"Zoeken","Search results":"Zoekresultaten","Select a tag":"Selecteer een label",Settings:"Instellingen","Settings navigation":"Instellingen navigatie","Smileys & Emotion":"Smileys & Emotie","Start slideshow":"Start diavoorstelling",Submit:"Verwerken",Symbols:"Symbolen","Travel & Places":"Reizen & Plaatsen","Type to search time zone":"Type om de tijdzone te zoeken","Unable to search the group":"Kan niet in de groep zoeken","Undo changes":"Wijzigingen ongedaan maken","Write message, @ to mention someone, : for emoji autocompletion …":"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ..."}},{locale:"oc",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (limit)",Actions:"Accions",Choose:"Causir",Close:"Tampar",Next:"Seguent","No results":"Cap de resultat","Pause slideshow":"Metre en pausa lo diaporama",Previous:"Precedent","Select a tag":"Seleccionar una etiqueta",Settings:"Paramètres","Start slideshow":"Lançar lo diaporama"}},{locale:"pl",translations:{"{tag} (invisible)":"{tag} (niewidoczna)","{tag} (restricted)":"{tag} (ograniczona)",Actions:"Działania",Activities:"Aktywność","Animals & Nature":"Zwierzęta i natura","Anything shared with the same group of people will show up here":"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób","Avatar of {displayName}":"Awatar {displayName}","Avatar of {displayName}, {status}":"Awatar {displayName}, {status}","Cancel changes":"Anuluj zmiany","Change title":"Zmień tytuł",Choose:"Wybierz","Clear text":"Wyczyść tekst",Close:"Zamknij","Close modal":"Zamknij modal","Close navigation":"Zamknij nawigację","Close sidebar":"Zamknij pasek boczny","Confirm changes":"Potwierdź zmiany",Custom:"Zwyczajne","Edit item":"Edytuj element","Error getting related resources":"Błąd podczas pobierania powiązanych zasobów","Error parsing svg":"Błąd podczas analizowania svg","External documentation for {title}":"Dokumentacja zewnętrzna dla {title}",Favorite:"Ulubiony",Flags:"Flagi","Food & Drink":"Jedzenie i picie","Frequently used":"Często używane",Global:"Globalnie","Go back to the list":"Powrót do listy","Hide password":"Ukryj hasło","Message limit of {count} characters reached":"Przekroczono limit wiadomości wynoszący {count} znaków","More items …":"Więcej pozycji…",Next:"Następny","No emoji found":"Nie znaleziono emoji","No results":"Brak wyników",Objects:"Obiekty",Open:"Otwórz",'Open link to "{resourceTitle}"':'Otwórz link do "{resourceTitle}"',"Open navigation":"Otwórz nawigację","Password is secure":"Hasło jest bezpieczne","Pause slideshow":"Wstrzymaj pokaz slajdów","People & Body":"Ludzie i ciało","Pick an emoji":"Wybierz emoji","Please select a time zone:":"Wybierz strefę czasową:",Previous:"Poprzedni","Related resources":"Powiązane zasoby",Search:"Szukaj","Search results":"Wyniki wyszukiwania","Select a tag":"Wybierz etykietę",Settings:"Ustawienia","Settings navigation":"Ustawienia nawigacji","Show password":"Pokaż hasło","Smileys & Emotion":"Buźki i emotikony","Start slideshow":"Rozpocznij pokaz slajdów",Submit:"Wyślij",Symbols:"Symbole","Travel & Places":"Podróże i miejsca","Type to search time zone":"Wpisz, aby wyszukać strefę czasową","Unable to search the group":"Nie można przeszukać grupy","Undo changes":"Cofnij zmiany",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Napisz wiadomość, "@" aby o kimś wspomnieć, ":" dla autouzupełniania emoji…'}},{locale:"pt_BR",translations:{"{tag} (invisible)":"{tag} (invisível)","{tag} (restricted)":"{tag} (restrito) ",Actions:"Ações",Activities:"Atividades","Animals & Nature":"Animais & Natureza","Anything shared with the same group of people will show up here":"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar alterações","Change title":"Alterar título",Choose:"Escolher","Clear text":"Limpar texto",Close:"Fechar","Close modal":"Fechar modal","Close navigation":"Fechar navegação","Close sidebar":"Fechar barra lateral","Confirm changes":"Confirmar alterações",Custom:"Personalizado","Edit item":"Editar item","Error getting related resources":"Erro ao obter recursos relacionados","Error parsing svg":"Erro ao analisar svg","External documentation for {title}":"Documentação externa para {title}",Favorite:"Favorito",Flags:"Bandeiras","Food & Drink":"Comida & Bebida","Frequently used":"Mais usados",Global:"Global","Go back to the list":"Volte para a lista","Hide password":"Ocultar a senha","Message limit of {count} characters reached":"Limite de mensagem de {count} caracteres atingido","More items …":"Mais itens …",Next:"Próximo","No emoji found":"Nenhum emoji encontrado","No results":"Sem resultados",Objects:"Objetos",Open:"Aberto",'Open link to "{resourceTitle}"':'Abrir link para "{resourceTitle}"',"Open navigation":"Abrir navegação","Password is secure":"A senha é segura","Pause slideshow":"Pausar apresentação de slides","People & Body":"Pessoas & Corpo","Pick an emoji":"Escolha um emoji","Please select a time zone:":"Selecione um fuso horário: ",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Pesquisar","Search results":"Resultados da pesquisa","Select a tag":"Selecionar uma tag",Settings:"Configurações","Settings navigation":"Navegação de configurações","Show password":"Mostrar senha","Smileys & Emotion":"Smiles & Emoções","Start slideshow":"Iniciar apresentação de slides",Submit:"Enviar",Symbols:"Símbolo","Travel & Places":"Viagem & Lugares","Type to search time zone":"Digite para pesquisar o fuso horário ","Unable to search the group":"Não foi possível pesquisar o grupo","Undo changes":"Desfazer modificações",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escreva mensagens, use "@" para mencionar algum, use ":" for autocompletar emoji …'}},{locale:"pt_PT",translations:{"{tag} (invisible)":"{tag} (invisivel)","{tag} (restricted)":"{tag} (restrito)",Actions:"Ações",Choose:"Escolher",Close:"Fechar",Next:"Seguinte","No results":"Sem resultados","Pause slideshow":"Pausar diaporama",Previous:"Anterior","Select a tag":"Selecionar uma etiqueta",Settings:"Definições","Start slideshow":"Iniciar diaporama","Unable to search the group":"Não é possível pesquisar o grupo"}},{locale:"ro",translations:{"{tag} (invisible)":"{tag} (invizibil)","{tag} (restricted)":"{tag} (restricționat)",Actions:"Acțiuni",Activities:"Activități","Animals & Nature":"Animale și natură","Anything shared with the same group of people will show up here":"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici","Avatar of {displayName}":"Avatarul lui {displayName}","Avatar of {displayName}, {status}":"Avatarul lui {displayName}, {status}","Cancel changes":"Anulează modificările","Change title":"Modificați titlul",Choose:"Alegeți","Clear text":"Șterge textul",Close:"Închideți","Close modal":"Închideți modulul","Close navigation":"Închideți navigarea","Close sidebar":"Închide bara laterală","Confirm changes":"Confirmați modificările",Custom:"Personalizat","Edit item":"Editați elementul","Error getting related resources":" Eroare la returnarea resurselor legate","Error parsing svg":"Eroare de analizare a svg","External documentation for {title}":"Documentație externă pentru {title}",Favorite:"Favorit",Flags:"Marcaje","Food & Drink":"Alimente și băuturi","Frequently used":"Utilizate frecvent",Global:"Global","Go back to the list":"Întoarceți-vă la listă","Hide password":"Ascunde parola","Message limit of {count} characters reached":"Limita mesajului de {count} caractere a fost atinsă","More items …":"Mai multe articole ...",Next:"Următorul","No emoji found":"Nu s-a găsit niciun emoji","No results":"Nu există rezultate",Objects:"Obiecte",Open:"Deschideți",'Open link to "{resourceTitle}"':'Deschide legătura la "{resourceTitle}"',"Open navigation":"Deschideți navigația","Password is secure":"Parola este sigură","Pause slideshow":"Pauză prezentare de diapozitive","People & Body":"Oameni și corp","Pick an emoji":"Alege un emoji","Please select a time zone:":"Vă rugăm să selectați un fus orar:",Previous:"Anterior","Related resources":"Resurse legate",Search:"Căutare","Search results":"Rezultatele căutării","Select a tag":"Selectați o etichetă",Settings:"Setări","Settings navigation":"Navigare setări","Show password":"Arată parola","Smileys & Emotion":"Zâmbete și emoții","Start slideshow":"Începeți prezentarea de diapozitive",Submit:"Trimiteți",Symbols:"Simboluri","Travel & Places":"Călătorii și locuri","Type to search time zone":"Tastați pentru a căuta fusul orar","Unable to search the group":"Imposibilitatea de a căuta în grup","Undo changes":"Anularea modificărilor",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrie un mesaj, folosește "@" pentru a menționa pe cineva, folosește ":" pentru autocompletarea cu emoji ...'}},{locale:"ru",translations:{"{tag} (invisible)":"{tag} (невидимое)","{tag} (restricted)":"{tag} (ограниченное)",Actions:"Действия ",Activities:"События","Animals & Nature":"Животные и природа ","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Фотография {displayName}, {status}","Cancel changes":"Отменить изменения",Choose:"Выберите",Close:"Закрыть","Close modal":"Закрыть модальное окно","Close navigation":"Закрыть навигацию","Confirm changes":"Подтвердить изменения",Custom:"Пользовательское","Edit item":"Изменить элемент","External documentation for {title}":"Внешняя документация для {title}",Flags:"Флаги","Food & Drink":"Еда, напиток","Frequently used":"Часто используемый",Global:"Глобальный","Go back to the list":"Вернуться к списку",items:"элементов","Message limit of {count} characters reached":"Достигнуто ограничение на количество символов в {count}","More {dashboardItemType} …":"Больше {dashboardItemType} …",Next:"Следующее","No emoji found":"Эмодзи не найдено","No results":"Результаты отсуствуют",Objects:"Объекты",Open:"Открыть","Open navigation":"Открыть навигацию","Pause slideshow":"Приостановить показ слйдов","People & Body":"Люди и тело","Pick an emoji":"Выберите эмодзи","Please select a time zone:":"Пожалуйста, выберите часовой пояс:",Previous:"Предыдущее",Search:"Поиск","Search results":"Результаты поиска","Select a tag":"Выберите метку",Settings:"Параметры","Settings navigation":"Навигация по настройкам","Smileys & Emotion":"Смайлики и эмоции","Start slideshow":"Начать показ слайдов",Submit:"Утвердить",Symbols:"Символы","Travel & Places":"Путешествия и места","Type to search time zone":"Введите для поиска часового пояса","Unable to search the group":"Невозможно найти группу","Undo changes":"Отменить изменения","Write message, @ to mention someone, : for emoji autocompletion …":"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …"}},{locale:"sk_SK",translations:{"{tag} (invisible)":"{tag} (neviditeľný)","{tag} (restricted)":"{tag} (obmedzený)",Actions:"Akcie",Activities:"Aktivity","Animals & Nature":"Zvieratá a príroda","Avatar of {displayName}":"Avatar {displayName}","Avatar of {displayName}, {status}":"Avatar {displayName}, {status}","Cancel changes":"Zrušiť zmeny",Choose:"Vybrať",Close:"Zatvoriť","Close navigation":"Zavrieť navigáciu","Confirm changes":"Potvrdiť zmeny",Custom:"Zvyk","Edit item":"Upraviť položku","External documentation for {title}":"Externá dokumentácia pre {title}",Flags:"Vlajky","Food & Drink":"Jedlo a nápoje","Frequently used":"Často používané",Global:"Globálne","Go back to the list":"Naspäť na zoznam","Message limit of {count} characters reached":"Limit správy na {count} znakov dosiahnutý",Next:"Ďalší","No emoji found":"Nenašli sa žiadne emodži","No results":"Žiadne výsledky",Objects:"Objekty","Open navigation":"Otvoriť navigáciu","Pause slideshow":"Pozastaviť prezentáciu","People & Body":"Ľudia a telo","Pick an emoji":"Vyberte si emodži","Please select a time zone:":"Prosím vyberte časovú zónu:",Previous:"Predchádzajúci",Search:"Hľadať","Search results":"Výsledky vyhľadávania","Select a tag":"Vybrať štítok",Settings:"Nastavenia","Settings navigation":"Navigácia v nastaveniach","Smileys & Emotion":"Smajlíky a emócie","Start slideshow":"Začať prezentáciu",Submit:"Odoslať",Symbols:"Symboly","Travel & Places":"Cestovanie a miesta","Type to search time zone":"Začníte písať pre vyhľadávanie časovej zóny","Unable to search the group":"Skupinu sa nepodarilo nájsť","Undo changes":"Vrátiť zmeny","Write message, @ to mention someone, : for emoji autocompletion …":"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…"}},{locale:"sl",translations:{"{tag} (invisible)":"{tag} (nevidno)","{tag} (restricted)":"{tag} (omejeno)",Actions:"Dejanja",Activities:"Dejavnosti","Animals & Nature":"Živali in Narava","Avatar of {displayName}":"Podoba {displayName}","Avatar of {displayName}, {status}":"Prikazna slika {displayName}, {status}","Cancel changes":"Prekliči spremembe","Change title":"Spremeni naziv",Choose:"Izbor","Clear text":"Počisti besedilo",Close:"Zapri","Close modal":"Zapri pojavno okno","Close navigation":"Zapri krmarjenje","Close sidebar":"Zapri stransko vrstico","Confirm changes":"Potrdi spremembe",Custom:"Po meri","Edit item":"Uredi predmet","Error getting related resources":"Napaka pridobivanja povezanih virov","External documentation for {title}":"Zunanja dokumentacija za {title}",Favorite:"Priljubljeno",Flags:"Zastavice","Food & Drink":"Hrana in Pijača","Frequently used":"Pogostost uporabe",Global:"Splošno","Go back to the list":"Vrni se na seznam","Hide password":"Skrij geslo","Message limit of {count} characters reached":"Dosežena omejitev {count} znakov na sporočilo.","More items …":"Več predmetov ...",Next:"Naslednji","No emoji found":"Ni najdenih izraznih ikon","No results":"Ni zadetkov",Objects:"Predmeti",Open:"Odpri",'Open link to "{resourceTitle}"':"Odpri povezavo do »{resourceTitle}«","Open navigation":"Odpri krmarjenje","Password is secure":"Geslo je varno","Pause slideshow":"Ustavi predstavitev","People & Body":"Ljudje in Telo","Pick a date":"Izbor datuma","Pick a date and a time":"Izbor datuma in časa","Pick a month":"Izbor meseca","Pick a time":"Izbor časa","Pick a week":"Izbor tedna","Pick a year":"Izbor leta","Pick an emoji":"Izbor izrazne ikone","Please select a time zone:":"Izbor časovnega pasu:",Previous:"Predhodni","Related resources":"Povezani viri",Search:"Iskanje","Search results":"Zadetki iskanja","Select a tag":"Izbor oznake",Settings:"Nastavitve","Settings navigation":"Krmarjenje nastavitev","Show password":"Pokaži geslo","Smileys & Emotion":"Izrazne ikone","Start slideshow":"Začni predstavitev",Submit:"Pošlji",Symbols:"Simboli","Travel & Places":"Potovanja in Kraji","Type to search time zone":"Vpišite niz za iskanje časovnega pasu","Unable to search the group":"Ni mogoče iskati po skupini","Undo changes":"Razveljavi spremembe","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …"}},{locale:"sr",translations:{"{tag} (invisible)":"{tag} (nevidljivo)","{tag} (restricted)":"{tag} (ograničeno)",Actions:"Radnje",Activities:"Aktivnosti","Animals & Nature":"Životinje i Priroda","Avatar of {displayName}":"Avatar za {displayName}","Avatar of {displayName}, {status}":"Avatar za {displayName}, {status}","Cancel changes":"Otkaži izmene","Change title":"Izmeni naziv",Choose:"Изаберите",Close:"Затвори","Close modal":"Zatvori modal","Close navigation":"Zatvori navigaciju","Close sidebar":"Zatvori bočnu traku","Confirm changes":"Potvrdite promene",Custom:"Po meri","Edit item":"Uredi stavku","External documentation for {title}":"Eksterna dokumentacija za {title}",Favorite:"Omiljeni",Flags:"Zastave","Food & Drink":"Hrana i Piće","Frequently used":"Često korišćeno",Global:"Globalno","Go back to the list":"Natrag na listu",items:"stavke","Message limit of {count} characters reached":"Dostignuto je ograničenje za poruke od {count} znakova","More {dashboardItemType} …":"Više {dashboardItemType} …",Next:"Следеће","No emoji found":"Nije pronađen nijedan emodži","No results":"Нема резултата",Objects:"Objekti",Open:"Otvori","Open navigation":"Otvori navigaciju","Pause slideshow":"Паузирај слајд шоу","People & Body":"Ljudi i Telo","Pick an emoji":"Izaberi emodži","Please select a time zone:":"Molimo izaberite vremensku zonu:",Previous:"Претходно",Search:"Pretraži","Search results":"Rezultati pretrage","Select a tag":"Изаберите ознаку",Settings:"Поставке","Settings navigation":"Navigacija u podešavanjima","Smileys & Emotion":"Smajli i Emocije","Start slideshow":"Покрени слајд шоу",Submit:"Prihvati",Symbols:"Simboli","Travel & Places":"Putovanja i Mesta","Type to search time zone":"Ukucaj da pretražiš vremenske zone","Unable to search the group":"Nije moguće pretražiti grupu","Undo changes":"Poništi promene","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…"}},{locale:"sv",translations:{"{tag} (invisible)":"{tag} (osynlig)","{tag} (restricted)":"{tag} (begränsad)",Actions:"Åtgärder",Activities:"Aktiviteter","Animals & Nature":"Djur & Natur","Anything shared with the same group of people will show up here":"Något som delats med samma grupp av personer kommer att visas här","Avatar of {displayName}":"{displayName}s avatar","Avatar of {displayName}, {status}":"{displayName}s avatar, {status}","Cancel changes":"Avbryt ändringar","Change title":"Ändra titel",Choose:"Välj","Clear text":"Ta bort text",Close:"Stäng","Close modal":"Stäng modal","Close navigation":"Stäng navigering","Close sidebar":"Stäng sidopanel","Confirm changes":"Bekräfta ändringar",Custom:"Anpassad","Edit item":"Ändra","Error getting related resources":"Problem att hämta relaterade resurser","External documentation for {title}":"Extern dokumentation för {title}",Favorite:"Favorit",Flags:"Flaggor","Food & Drink":"Mat & Dryck","Frequently used":"Används ofta",Global:"Global","Go back to the list":"Gå tillbaka till listan","Hide password":"Göm lössenordet","Message limit of {count} characters reached":"Meddelandegräns {count} tecken används","More items …":"Fler objekt",Next:"Nästa","No emoji found":"Hittade inga emojis","No results":"Inga resultat",Objects:"Objekt",Open:"Öppna",'Open link to "{resourceTitle}"':'Öppna länk till "{resourceTitle}"',"Open navigation":"Öppna navigering","Password is secure":"Lössenordet är säkert","Pause slideshow":"Pausa bildspelet","People & Body":"Kropp & Själ","Pick an emoji":"Välj en emoji","Please select a time zone:":"Välj tidszon:",Previous:"Föregående","Related resources":"Relaterade resurser",Search:"Sök","Search results":"Sökresultat","Select a tag":"Välj en tag",Settings:"Inställningar","Settings navigation":"Inställningsmeny","Show password":"Visa lössenordet","Smileys & Emotion":"Selfies & Känslor","Start slideshow":"Starta bildspelet",Submit:"Skicka",Symbols:"Symboler","Travel & Places":"Resor & Sevärdigheter","Type to search time zone":"Skriv för att välja tidszon","Unable to search the group":"Kunde inte söka i gruppen","Undo changes":"Ångra ändringar",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv meddelande, använd "@" för att nämna någon, använd ":" för automatiska emojiförslag ...'}},{locale:"tr",translations:{"{tag} (invisible)":"{tag} (görünmez)","{tag} (restricted)":"{tag} (kısıtlı)",Actions:"İşlemler",Activities:"Etkinlikler","Animals & Nature":"Hayvanlar ve Doğa","Anything shared with the same group of people will show up here":"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir","Avatar of {displayName}":"{displayName} avatarı","Avatar of {displayName}, {status}":"{displayName}, {status} avatarı","Cancel changes":"Değişiklikleri iptal et","Change title":"Başlığı değiştir",Choose:"Seçin","Clear text":"Metni temizle",Close:"Kapat","Close modal":"Üste açılan pencereyi kapat","Close navigation":"Gezinmeyi kapat","Close sidebar":"Yan çubuğu kapat","Confirm changes":"Değişiklikleri onayla",Custom:"Özel","Edit item":"Ögeyi düzenle","Error getting related resources":"İlgili kaynaklar alınırken sorun çıktı","Error parsing svg":"svg işlenirken sorun çıktı","External documentation for {title}":"{title} için dış belgeler",Favorite:"Sık kullanılanlara ekle",Flags:"Bayraklar","Food & Drink":"Yeme ve İçme","Frequently used":"Sık kullanılanlar",Global:"Evrensel","Go back to the list":"Listeye dön","Hide password":"Parolayı gizle","Message limit of {count} characters reached":"{count} karakter ileti sınırına ulaşıldı","More items …":"Diğer ögeler…",Next:"Sonraki","No emoji found":"Herhangi bir emoji bulunamadı","No results":"Herhangi bir sonuç bulunamadı",Objects:"Nesneler",Open:"Aç",'Open link to "{resourceTitle}"':'"{resourceTitle}" bağlantısını aç',"Open navigation":"Gezinmeyi aç","Password is secure":"Parola güvenli","Pause slideshow":"Slayt sunumunu duraklat","People & Body":"İnsanlar ve Beden","Pick an emoji":"Bir emoji seçin","Please select a time zone:":"Lütfen bir saat dilimi seçin:",Previous:"Önceki","Related resources":"İlgili kaynaklar",Search:"Arama","Search results":"Arama sonuçları","Select a tag":"Bir etiket seçin",Settings:"Ayarlar","Settings navigation":"Gezinme ayarları","Show password":"Parolayı görüntüle","Smileys & Emotion":"İfadeler ve Duygular","Start slideshow":"Slayt sunumunu başlat",Submit:"Gönder",Symbols:"Simgeler","Travel & Places":"Gezi ve Yerler","Type to search time zone":"Saat dilimi aramak için yazmaya başlayın","Unable to search the group":"Grupta arama yapılamadı","Undo changes":"Değişiklikleri geri al",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için ":" kullanın…'}},{locale:"uk",translations:{"{tag} (invisible)":"{tag} (невидимий)","{tag} (restricted)":"{tag} (обмежений)",Actions:"Дії",Activities:"Діяльність","Animals & Nature":"Тварини та природа","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Аватар {displayName}, {status}","Cancel changes":"Скасувати зміни","Change title":"Змінити назву",Choose:"ВиберітьВиберіть","Clear text":"Очистити текст",Close:"Закрити","Close modal":"Закрити модаль","Close navigation":"Закрити навігацію","Close sidebar":"Закрити бічну панель","Confirm changes":"Підтвердити зміни",Custom:"Власне","Edit item":"Редагувати елемент","External documentation for {title}":"Зовнішня документація для {title}",Favorite:"Улюблений",Flags:"Прапори","Food & Drink":"Їжа та напої","Frequently used":"Найчастіші",Global:"Глобальний","Go back to the list":"Повернутися до списку","Hide password":"Приховати пароль",items:"елементи","Message limit of {count} characters reached":"Вичерпано ліміт у {count} символів для повідомлення","More {dashboardItemType} …":"Більше {dashboardItemType}…",Next:"Вперед","No emoji found":"Емоційки відсутні","No results":"Відсутні результати",Objects:"Об'єкти",Open:"Відкрити","Open navigation":"Відкрити навігацію","Password is secure":"Пароль безпечний","Pause slideshow":"Пауза у показі слайдів","People & Body":"Люди та жести","Pick an emoji":"Виберіть емоційку","Please select a time zone:":"Виберіть часовий пояс:",Previous:"Назад",Search:"Пошук","Search results":"Результати пошуку","Select a tag":"Виберіть позначку",Settings:"Налаштування","Settings navigation":"Навігація у налаштуваннях","Show password":"Показати пароль","Smileys & Emotion":"Смайли та емоції","Start slideshow":"Почати показ слайдів",Submit:"Надіслати",Symbols:"Символи","Travel & Places":"Поїздки та місця","Type to search time zone":"Введіть для пошуку часовий пояс","Unable to search the group":"Неможливо шукати в групі","Undo changes":"Скасувати зміни","Write message, @ to mention someone, : for emoji autocompletion …":"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…"}},{locale:"zh_CN",translations:{"{tag} (invisible)":"{tag} (不可见)","{tag} (restricted)":"{tag} (受限)",Actions:"行为",Activities:"活动","Animals & Nature":"动物 & 自然","Anything shared with the same group of people will show up here":"与同组用户分享的所有内容都会显示于此","Avatar of {displayName}":"{displayName}的头像","Avatar of {displayName}, {status}":"{displayName}的头像,{status}","Cancel changes":"取消更改","Change title":"更改标题",Choose:"选择","Clear text":"清除文本",Close:"关闭","Close modal":"关闭窗口","Close navigation":"关闭导航","Close sidebar":"关闭侧边栏","Confirm changes":"确认更改",Custom:"自定义","Edit item":"编辑项目","Error getting related resources":"获取相关资源时出错","Error parsing svg":"解析 svg 时出错","External documentation for {title}":"{title}的外部文档",Favorite:"喜爱",Flags:"旗帜","Food & Drink":"食物 & 饮品","Frequently used":"经常使用",Global:"全局","Go back to the list":"返回至列表","Hide password":"隐藏密码","Message limit of {count} characters reached":"已达到 {count} 个字符的消息限制","More items …":"更多项目…",Next:"下一个","No emoji found":"表情未找到","No results":"无结果",Objects:"物体",Open:"打开",'Open link to "{resourceTitle}"':'打开"{resourceTitle}"的连接',"Open navigation":"开启导航","Password is secure":"密码安全","Pause slideshow":"暂停幻灯片","People & Body":"人 & 身体","Pick an emoji":"选择一个表情","Please select a time zone:":"请选择一个时区:",Previous:"上一个","Related resources":"相关资源",Search:"搜索","Search results":"搜索结果","Select a tag":"选择一个标签",Settings:"设置","Settings navigation":"设置向导","Show password":"显示密码","Smileys & Emotion":"笑脸 & 情感","Start slideshow":"开始幻灯片",Submit:"提交",Symbols:"符号","Travel & Places":"旅游 & 地点","Type to search time zone":"打字以搜索时区","Unable to search the group":"无法搜索分组","Undo changes":"撤销更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'写信息,使用"@"来提及某人,使用":"进行表情符号自动完成 ...'}},{locale:"zh_HK",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然","Anything shared with the same group of people will show up here":"與同一組人共享的任何內容都會顯示在此處","Avatar of {displayName}":"{displayName} 的頭像","Avatar of {displayName}, {status}":"{displayName} 的頭像,{status}","Cancel changes":"取消更改","Change title":"更改標題",Choose:"選擇","Clear text":"清除文本",Close:"關閉","Close modal":"關閉模態","Close navigation":"關閉導航","Close sidebar":"關閉側邊欄","Confirm changes":"確認更改",Custom:"自定義","Edit item":"編輯項目","Error getting related resources":"獲取相關資源出錯","Error parsing svg":"解析 svg 時出錯","External documentation for {title}":"{title} 的外部文檔",Favorite:"喜愛",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"經常使用",Global:"全球的","Go back to the list":"返回清單","Hide password":"隱藏密碼","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制","More items …":"更多項目 …",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件",Open:"打開",'Open link to "{resourceTitle}"':"打開指向 “{resourceTitle}” 的鏈結","Open navigation":"開啟導航","Password is secure":"密碼是安全的","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號","Please select a time zone:":"請選擇時區:",Previous:"上一個","Related resources":"相關資源",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Show password":"顯示密碼","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Submit:"提交",Symbols:"標誌","Travel & Places":"旅遊與景點","Type to search time zone":"鍵入以搜索時區","Unable to search the group":"無法搜尋群組","Undo changes":"取消更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'寫訊息,使用 "@" 來指代某人,使用 ":" 用於表情符號自動填充 ...'}},{locale:"zh_TW",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然",Choose:"選擇",Close:"關閉",Custom:"自定義",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"最近使用","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號",Previous:"上一個",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Symbols:"標誌","Travel & Places":"旅遊與景點","Unable to search the group":"無法搜尋群組","Write message, @ to mention someone …":"輸入訊息時可使用 @ 來標示某人..."}}].forEach((function(e){var t={};for(var n in e.translations)e.translations[n].pluralId?t[n]={msgid:n,msgid_plural:e.translations[n].pluralId,msgstr:e.translations[n].msgstr}:t[n]={msgid:n,msgstr:[e.translations[n]]};a.addTranslation(e.locale,{translations:{"":t}})}));var r=a.build(),i=(r.ngettext.bind(r),r.gettext.bind(r))},1205:(e,t,n)=>{n.d(t,{Z:()=>a});const a=function(e){return Math.random().toString(36).replace(/[^a-z]+/g,"").slice(0,e||5)}},6115:(e,t,n)=>{n.d(t,{Z:()=>r});const r=(0,function(){if(xC)return g_;xC=1,ap(),Object.defineProperty(g_,"__esModule",{value:!0}),g_.getLogger=function(){return n().build()},g_.getLoggerBuilder=n;var e=function(){if(m_)return v_;m_=1,Object.defineProperty(v_,"__esModule",{value:!0}),v_.ConsoleLogger=void 0,v_.buildConsoleLogger=function(e){return new n(e)},dp(),ap();var e=A_();function t(e,t){for(var n=0;n{var a=n(6464),r=n(9084);function i(){return(new Date).getTime()}var o,s=Array.prototype.slice,l={};o=void 0!==n.g&&n.g.console?n.g.console:typeof window<"u"&&window.console?window.console:{};for(var u=[[function(){},"log"],[function(){o.log.apply(o,arguments)},"info"],[function(){o.log.apply(o,arguments)},"warn"],[function(){o.warn.apply(o,arguments)},"error"],[function(e){l[e]=i()},"time"],[function(e){var t=l[e];if(!t)throw new Error("No such label: "+e);delete l[e];var n=i()-t;o.log(e+": "+n+"ms")},"timeEnd"],[function(){var e=new Error;e.name="Trace",e.message=a.format.apply(null,arguments),o.error(e.stack)},"trace"],[function(e){o.log(a.inspect(e)+"\n")},"dir"],[function(e){if(!e){var t=s.call(arguments,1);r.ok(!1,a.format.apply(null,t))}},"assert"]],c=0;c{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-61417734]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-61417734]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition:background-color .1s linear !important;transition:border .1s linear;background-color:var(--color-primary-element-lighter),var(--color-primary-element-light);color:var(--color-primary-light-text)}.button-vue *[data-v-61417734]{cursor:pointer}.button-vue[data-v-61417734]:focus{outline:none}.button-vue[data-v-61417734]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-61417734]{cursor:default}.button-vue[data-v-61417734]:hover:not(:disabled){background-color:var(--color-primary-light-hover)}.button-vue[data-v-61417734]:active{background-color:var(--color-primary-element-lighter),var(--color-primary-element-light)}.button-vue__wrapper[data-v-61417734]{display:inline-flex;align-items:center;justify-content:space-around}.button-vue__icon[data-v-61417734]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-61417734]{font-weight:bold;margin-bottom:1px;padding:2px 0}.button-vue--icon-only[data-v-61417734]{width:44px !important}.button-vue--text-only[data-v-61417734]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-61417734]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-61417734]{padding:0 16px 0 4px}.button-vue--wide[data-v-61417734]{width:100%}.button-vue[data-v-61417734]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-61417734]{outline:2px solid var(--color-primary-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-61417734]{background-color:var(--color-primary-element);color:var(--color-primary-text)}.button-vue--vue-primary[data-v-61417734]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-61417734]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-61417734]{color:var(--color-primary-light-text);background-color:var(--color-primary-light)}.button-vue--vue-secondary[data-v-61417734]:hover:not(:disabled){color:var(--color-primary-light-text);background-color:var(--color-primary-light-hover)}.button-vue--vue-tertiary[data-v-61417734]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-61417734]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-61417734]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-61417734]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-61417734]{color:var(--color-primary-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-61417734]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-61417734]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-61417734]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-61417734]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-61417734]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-61417734]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-61417734]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-61417734]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-61417734]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-61417734]:active{background-color:var(--color-error)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcButton/NcButton.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAIA,kBAAA,CACA,iDAAA,CACA,4BAAA,CAkBA,wFAAA,CACA,qCAAA,CAxBA,+BACC,cAAA,CAOD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCMiB,CDJjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,iDAAA,CAKD,oCACC,wFAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,4BAAA,CAGD,mCACC,WCpCe,CDqCf,UCrCe,CDsCf,eCtCe,CDuCf,cCvCe,CDwCf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,2CAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,+BAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,qCAAA,CACA,2CAAA,CACA,iEACC,qCAAA,CACA,iDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,+BAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n\n.button-vue {\n\tposition: relative;\n\twidth: fit-content;\n\toverflow: hidden;\n\tborder: 0;\n\tpadding: 0;\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\tmin-height: $clickable-area;\n\tmin-width: $clickable-area;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t// Cursor pointer on element and all children\n\tcursor: pointer;\n\t& * {\n\t\tcursor: pointer;\n\t}\n\tborder-radius: math.div($clickable-area, 2);\n\ttransition: background-color 0.1s linear !important;\n\ttransition: border 0.1s linear;\n\n\t// No outline feedback for focus. Handled with a toggled class in js (see data)\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\t& * {\n\t\t\tcursor: default;\n\t\t}\n\t\topacity: $opacity_disabled;\n\t\t// Gives a wash out effect\n\t\tfilter: saturate($opacity_normal);\n\t}\n\n\t// Default button type\n\tbackground-color: var(--color-primary-element-lighter), var(--color-primary-element-light);\n\tcolor: var(--color-primary-light-text);\n\t&:hover:not(:disabled) {\n\t\tbackground-color: var(--color-primary-light-hover);\n\t}\n\n\t// Back to the default color for this button when active\n\t// TODO: add ripple effect\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-lighter), var(--color-primary-element-light);\n\t}\n\n\t&__wrapper {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: space-around;\n\t}\n\n\t&__icon {\n\t\theight: $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-height: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t&__text {\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1px;\n\t\tpadding: 2px 0;\n\t}\n\n\t// Icon-only button\n\t&--icon-only {\n\t\twidth: $clickable-area !important;\n\t}\n\n\t// Text-only button\n\t&--text-only {\n\t\tpadding: 0 12px;\n\t\t& .button-vue__text {\n\t\t\tmargin-left: 4px;\n\t\t\tmargin-right: 4px;\n\t\t}\n\t}\n\n\t// Icon and text button\n\t&--icon-and-text {\n\t\tpadding: 0 16px 0 4px;\n\t}\n\n\t// Wide button spans the whole width of the container\n\t&--wide {\n\t\twidth: 100%;\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t&.button-vue--vue-tertiary-on-primary {\n\t\t\toutline: 2px solid var(--color-primary-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Button types\n\n\t// Primary\n\t&--vue-primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tcolor: var(--color-primary-text);\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-primary-element-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Secondary\n\t&--vue-secondary {\n\t\tcolor: var(--color-primary-light-text);\n\t\tbackground-color: var(--color-primary-light);\n\t\t&:hover:not(:disabled) {\n\t\t\tcolor: var(--color-primary-light-text);\n\t\t\tbackground-color: var(--color-primary-light-hover);\n\t\t}\n\t}\n\n\t// Tertiary\n\t&--vue-tertiary {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Tertiary, no background\n\t&--vue-tertiary-no-background {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Tertiary on primary color (like the header)\n\t&--vue-tertiary-on-primary {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: transparent;\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Success\n\t&--vue-success {\n\t\tbackground-color: var(--color-success);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// : add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-success);\n\t\t}\n\t}\n\n\t// Warning\n\t&--vue-warning {\n\t\tbackground-color: var(--color-warning);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-warning);\n\t\t}\n\t}\n\n\t// Error\n\t&--vue-error {\n\t\tbackground-color: var(--color-error);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-error);\n\t\t}\n\t}\n}\n\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},2966:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-2dca60be]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-2dca60be]{position:relative;width:100%;border-radius:var(--border-radius-large)}.input-field__main-wrapper[data-v-2dca60be]{height:36px;position:relative}.input-field__input[data-v-2dca60be]{margin:0;padding:0 12px;font-size:var(--default-font-size);background-color:var(--color-main-background);color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);height:36px !important;border-radius:var(--border-radius-large);text-overflow:ellipsis;cursor:pointer;width:100%;-webkit-appearance:textfield !important;-moz-appearance:textfield !important}.input-field__input[data-v-2dca60be]:active:not([disabled]),.input-field__input[data-v-2dca60be]:hover:not([disabled]),.input-field__input[data-v-2dca60be]:focus:not([disabled]){border-color:var(--color-primary-element)}.input-field__input[data-v-2dca60be]:focus{cursor:text}.input-field__input[data-v-2dca60be]:focus-visible{box-shadow:unset !important}.input-field__input--success[data-v-2dca60be]{border-color:var(--color-success) !important}.input-field__input--success[data-v-2dca60be]:focus-visible{box-shadow:#f8fafc 0px 0px 0px 2px,var(--color-primary-element) 0px 0px 0px 4px,rgba(0,0,0,.05) 0px 1px 2px 0px}.input-field__input--error[data-v-2dca60be]{border-color:var(--color-error) !important}.input-field__input--error[data-v-2dca60be]:focus-visible{box-shadow:#f8fafc 0px 0px 0px 2px,var(--color-primary-element) 0px 0px 0px 4px,rgba(0,0,0,.05) 0px 1px 2px 0px}.input-field__input--leading-icon[data-v-2dca60be]{padding-left:28px}.input-field__input--trailing-icon[data-v-2dca60be]{padding-right:28px}.input-field__label[data-v-2dca60be]{padding:4px 0;display:block}.input-field__label--hidden[data-v-2dca60be]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.input-field__icon[data-v-2dca60be]{position:absolute;height:32px;width:32px;display:flex;align-items:center;justify-content:center;opacity:.7}.input-field__icon--leading[data-v-2dca60be]{bottom:2px;left:2px}.input-field__icon--trailing[data-v-2dca60be]{bottom:2px;right:2px}.input-field__clear-button.button-vue[data-v-2dca60be]{position:absolute;top:2px;right:1px;min-width:unset;min-height:unset;height:32px;width:32px !important;border-radius:var(--border-radius-large)}.input-field__helper-text-message[data-v-2dca60be]{padding:4px 0;display:flex;align-items:center}.input-field__helper-text-message__icon[data-v-2dca60be]{margin-right:8px;align-self:start;margin-top:4px}.input-field__helper-text-message--error[data-v-2dca60be]{color:var(--color-error)}.input-field__helper-text-message--success[data-v-2dca60be]{color:var(--color-success)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcInputField/NcInputField.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,8BACC,iBAAA,CACA,UAAA,CACA,wCAAA,CAEA,4CACC,WAAA,CACA,iBAAA,CAGD,qCACC,QAAA,CACA,cAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,gDAAA,CACA,sBAAA,CACA,wCAAA,CACA,sBAAA,CACA,cAAA,CACA,UAAA,CACA,uCAAA,CACA,oCAAA,CAEA,kLAGC,yCAAA,CAGD,2CACC,WAAA,CAGD,mDACC,2BAAA,CAGD,8CACC,4CAAA,CACA,4DACC,+GAAA,CAIF,4CACC,0CAAA,CACA,0DACC,+GAAA,CAIF,mDACC,iBAAA,CAGD,oDACC,kBAAA,CAIF,qCACC,aAAA,CACA,aAAA,CAEA,6CACC,iBAAA,CACA,aAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,eAAA,CAIF,oCACC,iBAAA,CACA,WAAA,CACA,UAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,6CACC,UAAA,CACA,QAAA,CAGD,8CACC,UAAA,CACA,SAAA,CAIF,uDACC,iBAAA,CACA,OAAA,CACA,SAAA,CACA,eAAA,CACA,gBAAA,CACA,WAAA,CACA,qBAAA,CACA,wCAAA,CAGD,mDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,yDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,0DACC,wBAAA,CAGD,4DACC,0BAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"69d54a5\"; @import 'variables'; @import 'material-icons';\n\n\n.input-field {\n\tposition: relative;\n\twidth: 100%;\n\tborder-radius: var(--border-radius-large);\n\n\t&__main-wrapper {\n\t\theight: 36px;\n\t\tposition: relative;\n\t}\n\n\t&__input {\n\t\tmargin: 0;\n\t\tpadding: 0 12px;\n\t\tfont-size: var(--default-font-size);\n\t\tbackground-color: var(--color-main-background);\n\t\tcolor: var(--color-main-text);\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\theight: 36px !important;\n\t\tborder-radius: var(--border-radius-large);\n\t\ttext-overflow: ellipsis;\n\t\tcursor: pointer;\n\t\twidth: 100%;\n\t\t-webkit-appearance: textfield !important;\n\t\t-moz-appearance: textfield !important;\n\n\t\t&:active:not([disabled]),\n\t\t&:hover:not([disabled]),\n\t\t&:focus:not([disabled]) {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\n\t\t&:focus {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: unset !important; // Override server rules\n\t\t}\n\n\t\t&--success {\n\t\t\tborder-color: var(--color-success) !important; //Override hover border color\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\n\t\t\t}\n\t\t}\n\n\t\t&--error {\n\t\t\tborder-color: var(--color-error) !important; //Override hover border color\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\n\t\t\t}\n\t\t}\n\n\t\t&--leading-icon {\n\t\t\tpadding-left: 28px;\n\t\t}\n\n\t\t&--trailing-icon {\n\t\t\tpadding-right: 28px;\n\t\t}\n\t}\n\n\t&__label {\n\t\tpadding: 4px 0;\n\t\tdisplay: block;\n\n\t\t&--hidden {\n\t\t\tposition: absolute;\n\t\t\tleft: -10000px;\n\t\t\ttop: auto;\n\t\t\twidth: 1px;\n\t\t\theight: 1px;\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tposition: absolute;\n\t\theight: 32px;\n\t\twidth: 32px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\topacity: 0.7;\n\t\t&--leading {\n\t\t\tbottom: 2px;\n\t\t\tleft: 2px;\n\t\t}\n\n\t\t&--trailing {\n\t\t\tbottom: 2px;\n\t\t\tright: 2px;\n\t\t}\n\t}\n\n\t&__clear-button.button-vue {\n\t\tposition: absolute;\n\t\ttop: 2px;\n\t\tright: 1px;\n\t\tmin-width: unset;\n\t\tmin-height: unset;\n\t\theight: 32px;\n\t\twidth: 32px !important;\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\n\t\t&--success {\n\t\t\tcolor: var(--color-success);\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=o},3645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",a=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),a&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),a&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,a,r,i){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(a)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=i),n&&(c[2]&&(c[1]="@media ".concat(c[2]," {").concat(c[1],"}")),c[2]=n),r&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=r):c[4]="".concat(r)),t.push(c))}},t}},7537:e=>{e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var a=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),i="/*# ".concat(r," */");return[t].concat([i]).join("\n")}return[t].join("\n")}},4679:(e,t,n)=>{var a=n(3379),r=n.n(a),i=n(7795),o=n.n(i),s=n(569),l=n.n(s),u=n(3565),c=n.n(u),d=n(9216),p=n.n(d),h=n(4589),m=n.n(h),f=n(2966),g={};g.styleTagTransform=m(),g.setAttributes=c(),g.insert=l().bind(null,"head"),g.domAPI=o(),g.insertStyleElement=p(),r()(f.Z,g),f.Z&&f.Z.locals&&f.Z.locals},3379:e=>{var t=[];function n(e){for(var n=-1,a=0;a{var t={};e.exports=function(e,n){var a=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch{n=null}t[e]=n}return t[e]}(e);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(n)}},9216:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7795:e=>{e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var a="";n.supports&&(a+="@supports (".concat(n.supports,") {")),n.media&&(a+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(a+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),a+=n.css,r&&(a+="}"),n.media&&(a+="}"),n.supports&&(a+="}");var i=n.sourceMap;i&&typeof btoa<"u"&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleTagTransform(a,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},9563:(e,t,n)=>{n.d(t,{Z:()=>u});var a=n(7492),r=n(5495),i=(n(5534),n(1900)),o=n(4348),s=n.n(o),l=(0,i.Z)(r.Z,a.s,a.x,!1,null,"2dca60be",null);"function"==typeof s()&&s()(l);const u=l.exports},5495:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n(9456).Z},5534:(e,t,n)=>{n(4679)},2102:()=>{},4348:()=>{},6239:()=>{},1900:(e,t,n)=>{function a(e,t,n,a,r,i,o,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||typeof __VUE_SSR_CONTEXT__>"u"||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}n.d(t,{Z:()=>a})},768:e=>{e.exports=MC},754:e=>{e.exports=Sm()},4262:e=>{e.exports=Ah()},9084:e=>{e.exports=Eh},3465:e=>{e.exports=function(){if(PC)return RC;function e(e,t,n){var a,r,i,o,s;function l(){var u=Date.now()-o;u=0?a=setTimeout(l,t-u):(a=null,n||(s=e.apply(i,r),i=r=null))}null==t&&(t=100);var u=function(){i=this,r=arguments,o=Date.now();var u=n&&!a;return a||(a=setTimeout(l,t)),u&&(s=e.apply(i,r),i=r=null),s};return u.clear=function(){a&&(clearTimeout(a),a=null)},u.flush=function(){a&&(s=e.apply(i,r),i=r=null,clearTimeout(a),a=null)},u}return PC=1,e.debounce=e,RC=e}()},6464:e=>{e.exports=Eh},5512:e=>{e.exports=LC},9873:e=>{e.exports=IC}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var i=t[a]={id:a,exports:{}};return e[a](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch{if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;var r={};return(()=>{function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function a(e){for(var n=1;nO});const o=ZC;var s=n.n(o);const l=GC;var u=n.n(l),c=n(9563),d=n(3465),p=n.n(d),h=n(768),m=n.n(h);const f=(HC||(HC=1,Object.defineProperty($C,"__esModule",{value:!0}),$C.loadState=function(e,t,n){var a=document.querySelector("#initial-state-".concat(e,"-").concat(t));if(null===a){if(void 0!==n)return n;throw new Error("Could not find initial state ".concat(t," of ").concat(e))}try{return JSON.parse(atob(a.value))}catch{throw new Error("Could not parse initial state ".concat(t," of ").concat(e))}}),$C);var g=n(4262),v=n(932),_=n(6115);function A(e){return(A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function b(){b=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch{l=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var i=t&&t.prototype instanceof p?t:p,o=Object.create(i.prototype),s=new S(r||[]);return a(o,"_invoke",{value:T(e,n,s)}),o}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function p(){}function h(){}function m(){}var f={};l(f,i,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(E([])));v&&v!==t&&n.call(v,i)&&(f=v);var _=m.prototype=p.prototype=Object.create(f);function y(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function F(e,t){function r(a,i,o,s){var l=c(e[a],e,i);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==A(d)&&n.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,o,s)}),(function(e){r("throw",e,o,s)})):t.resolve(d).then((function(e){u.value=e,o(u)}),(function(e){return r("throw",e,o,s)}))}s(l.arg)}var i;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return i=i?i.then(a,a):a()}})}function T(e,t,n){var a="suspendedStart";return function(r,i){if("executing"===a)throw new Error("Generator is already running");if("completed"===a){if("throw"===r)throw i;return{value:void 0,done:!0}}for(n.method=r,n.arg=i;;){var o=n.delegate;if(o){var s=C(o,n);if(s){if(s===d)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===a)throw a="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a="executing";var l=c(e,t,n);if("normal"===l.type){if(a=n.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(a="completed",n.method="throw",n.arg=l.arg)}}}function C(e,t){var n=t.method,a=e.iterator[n];if(void 0===a)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),d;var r=c(a,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,d;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function E(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,r=function t(){for(;++a=0;--r){var i=this.tryEntries[r],o=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(s&&l){if(this.prev=0;--a){var r=this.tryEntries[a];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if("throw"===a.type){var r=a.arg;w(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),d}},e}function y(e,t,n,a,r,i,o){try{var s=e[i](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(a,r)}function F(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function T(e){for(var t=1;t0?this.helperText:this.internalHelpMessage},rules:function(){var e=this.minlength,t=this.passwordPolicy;return{minlength:null!=e?e:null==t?void 0:t.minLength}},trailingButtonLabel:function(){return this.isPasswordHidden?(0,v.t)("Show password"):(0,v.t)("Hide password")}},watch:{value:function(e){if(this.checkPasswordStrength){if(null===this.passwordPolicy)return;this.passwordPolicy&&this.checkPassword(e)}}},methods:{handleInput:function(e){this.$emit("update:value",e.target.value)},togglePasswordVisibility:function(){this.isPasswordHidden=!this.isPasswordHidden},checkPassword:p()((w=b().mark((function e(t){var n,a;return b().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,m().post((0,g.generateOcsUrl)("apps/password_policy/api/v1/validate"),{password:t});case 3:if(n=e.sent,a=n.data,this.isValid=a.ocs.data.passed,!a.ocs.data.passed){e.next=10;break}return this.internalHelpMessage=(0,v.t)("Password is secure"),this.$emit("valid"),e.abrupt("return");case 10:this.internalHelpMessage=a.ocs.data.reason,this.$emit("invalid"),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(0),_.Z.error("Password policy returned an error",e.t0);case 17:case"end":return e.stop()}}),e,this,[[0,14]])})),S=function(){var e=this,t=arguments;return new Promise((function(n,a){var r=w.apply(e,t);function i(e){y(r,n,a,i,o,"next",e)}function o(e){y(r,n,a,i,o,"throw",e)}i(void 0)}))},function(e){return S.apply(this,arguments)}),500)}};var w,S,E=n(1900),D=n(6239),x=n.n(D),N=(0,E.Z)(k,(function(){var e=this,t=e._self._c;return t("NcInputField",e._g(e._b({ref:"inputField",attrs:{type:e.isPasswordHidden?"password":"text","show-trailing-button":!0,"helper-text":e.computedHelperText,error:e.computedError,success:e.computedSuccess,minlength:e.rules.minlength},on:{"trailing-button-click":e.togglePasswordVisibility,input:e.handleInput},scopedSlots:e._u([{key:"trailing-button-icon",fn:function(){return[e.isPasswordHidden?t("Eye",{attrs:{size:18}}):t("EyeOff",{attrs:{size:18}})]},proxy:!0}])},"NcInputField",a(a({},e.$attrs),e.$props),!1),e.$listeners),[e._t("default")],2)}),[],!1,null,null,null);"function"==typeof x()&&x()(N);const O=N.exports})(),r})(),e.exports=n()}(f_);const qC=Ji(f_.exports),VC="password-confirmation-dialog";class WC{constructor(e,t,n){s(this,"gt"),this.gt=new Fm({debug:n,sourceLocale:"en"});for(let e in t)this.gt.addTranslations(e,"messages",t[e]);this.gt.setLocale(e)}subtitudePlaceholders(e,t){return e.replace(/{([^{}]*)}/g,((e,n)=>{const a=t[n];return"string"==typeof a||"number"==typeof a?a.toString():e}))}gettext(e,t={}){return this.subtitudePlaceholders(this.gt.gettext(e),t)}ngettext(e,t,n,a={}){return this.subtitudePlaceholders(this.gt.ngettext(e,t,n).replace(/%n/g,n.toString()),a)}}const KC=(new class{constructor(){s(this,"locale"),s(this,"translations",{}),s(this,"debug",!1)}setLanguage(e){return this.locale=e,this}detectLocale(){return this.setLanguage((document.documentElement.lang||"en").replace("-","_"))}addTranslation(e,t){return this.translations[e]=t,this}enableDebugMode(){return this.debug=!0,this}build(){return new WC(this.locale||"en",this.translations,this.debug)}}).detectLocale();[].map((({locale:e,json:t})=>KC.addTranslation(e,t)));const QC=KC.build();QC.ngettext.bind(QC);const JC=QC.gettext.bind(QC),XC=Ma.extend({name:"Dialog",components:{NcButton:Dh,NcModal:r_,NcNoteCard:p_,NcPasswordField:qC},data:()=>({password:"",showError:!1,dialogId:VC,titleText:JC("Authentication required"),subtitleText:JC("This action requires you to confirm your password"),passwordLabelText:JC("Password"),errorText:JC("Failed to authenticate, please try again"),confirmText:JC("Confirm")}),mounted(){this.$nextTick((()=>{this.$refs.field.$el.querySelector('input[type="password"]').focus()}))},methods:{async confirm(){this.showError=!1;const e=bh.generateUrl("/login/confirm");try{const{data:t}=await kh.post(e,{password:this.password});window.nc_lastLogin=t.lastLogin,this.$emit("confirmed")}catch{this.showError=!0}},close(){this.$emit("close")}}}),ek=Hv(XC,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcModal",{staticClass:"dialog",attrs:{id:e.dialogId,size:"small",container:null},on:{close:e.close}},[t("div",{staticClass:"dialog__container"},[t("h2",{staticClass:"dialog__title"},[e._v(e._s(e.titleText))]),t("p",[e._v(e._s(e.subtitleText))]),t("NcPasswordField",{ref:"field",attrs:{value:e.password,label:e.passwordLabelText},on:{"update:value":function(t){e.password=t},keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.confirm.apply(null,arguments)}}}),e.showError?t("NcNoteCard",{attrs:{"show-alert":!0}},[t("p",[e._v(e._s(e.errorText))])]):e._e(),t("NcButton",{staticClass:"dialog__button",attrs:{type:"primary","aria-label":e.confirmText},on:{click:e.confirm}},[e._v(" "+e._s(e.confirmText)+" ")])],1)])}),[],!1,null,"cf6b9033",null,null).exports,tk=Date.now();t.confirmPassword=()=>{if(Boolean(document.getElementById(VC)))return Promise.reject(new Error(JC("Password confirmation dialog already mounted")));if(!(()=>{const e=tk-1e3*window.nc_pageLoad,t=Date.now()-(e+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&t>18e5})())return Promise.resolve();const e=document.createElement("div");e.setAttribute("id",VC);const t=document.querySelectorAll(".modal-mask");Boolean(t.length)?t[t.length-1].prepend(e):document.body.prepend(e);const n=(new(Ma.extend(ek))).$mount(e);return new Promise(((e,t)=>{n.$on("confirmed",(()=>{n.$destroy(),e()})),n.$on("close",(()=>{n.$destroy(),t()}))}))}},79753:(e,t,n)=>{"use strict";n(69070),Object.defineProperty(t,"__esModule",{value:!0}),t.linkTo=t.imagePath=t.getRootUrl=t.generateUrl=t.generateRemoteUrl=t.generateOcsUrl=t.generateFilePath=void 0,n(19601),n(74916),n(15306),n(41539),n(39714),n(82772),t.linkTo=function(e,t){return r(e,"",t)},t.generateRemoteUrl=function(e){return window.location.protocol+"//"+window.location.host+function(e){return i()+"/remote.php/"+e}(e)},t.generateOcsUrl=function(e,t,n){var r=1===Object.assign({ocsVersion:2},n||{}).ocsVersion?1:2;return window.location.protocol+"//"+window.location.host+i()+"/ocs/v"+r+".php"+a(e,t,n)};var a=function(e,t,n){var a,r=Object.assign({escape:!0},n||{});return"/"!==e.charAt(0)&&(e="/"+e),a=(a=t||{})||{},e.replace(/{([^{}]*)}/g,(function(e,t){var n=a[t];return r.escape?"string"==typeof n||"number"==typeof n?encodeURIComponent(n.toString()):encodeURIComponent(e):"string"==typeof n||"number"==typeof n?n.toString():e}))};t.generateUrl=function(e,t,n){var r,o,s,l=Object.assign({noRewrite:!1},n||{});return!0!==(null===(r=window)||void 0===r||null===(o=r.OC)||void 0===o||null===(s=o.config)||void 0===s?void 0:s.modRewriteWorking)||l.noRewrite?i()+"/index.php"+a(e,t,n):i()+a(e,t,n)},t.imagePath=function(e,t){return-1===t.indexOf(".")?r(e,"img",t+".svg"):r(e,"img",t)};var r=function(e,t,n){var a,r,o,s=-1!==(null===(a=window)||void 0===a||null===(r=a.OC)||void 0===r||null===(o=r.coreApps)||void 0===o?void 0:o.indexOf(e)),l=i();if("php"!==n.substring(n.length-3)||s)if("php"===n.substring(n.length-3)||s)l+="settings"!==e&&"core"!==e&&"search"!==e||"ajax"!==t?"/":"/index.php/",s||(l+="apps/"),""!==e&&(l+=e+="/"),t&&(l+=t+"/"),l+=n;else{var u,c,d;l=null===(u=window)||void 0===u||null===(c=u.OC)||void 0===c||null===(d=c.appswebroots)||void 0===d?void 0:d[e],t&&(l+="/"+t+"/"),"/"!==l.substring(l.length-1)&&(l+="/"),l+=n}else l+="/index.php/apps/"+e,"index.php"!==n&&(l+="/",t&&(l+=encodeURI(t+"/")),l+=n);return l};t.generateFilePath=r;var i=function(){var e,t;return(null===(e=window)||void 0===e||null===(t=e.OC)||void 0===t?void 0:t.webroot)||""};t.getRootUrl=i},41922:(e,t)=>{"use strict";var n;t.D=void 0,t.D=n,function(e){e[e.SHARE_TYPE_USER=0]="SHARE_TYPE_USER",e[e.SHARE_TYPE_GROUP=1]="SHARE_TYPE_GROUP",e[e.SHARE_TYPE_LINK=3]="SHARE_TYPE_LINK",e[e.SHARE_TYPE_EMAIL=4]="SHARE_TYPE_EMAIL",e[e.SHARE_TYPE_REMOTE=6]="SHARE_TYPE_REMOTE",e[e.SHARE_TYPE_CIRCLE=7]="SHARE_TYPE_CIRCLE",e[e.SHARE_TYPE_GUEST=8]="SHARE_TYPE_GUEST",e[e.SHARE_TYPE_REMOTE_GROUP=9]="SHARE_TYPE_REMOTE_GROUP",e[e.SHARE_TYPE_ROOM=10]="SHARE_TYPE_ROOM",e[e.SHARE_TYPE_DECK=12]="SHARE_TYPE_DECK"}(n||(t.D=n={}))},29960:function(e,t,n){var a=n(25108);"undefined"!=typeof self&&self,e.exports=(()=>{var e={646:e=>{e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t{e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},860:e=>{e.exports=function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}},206:e=>{e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}},319:(e,t,n)=>{var a=n(646),r=n(860),i=n(206);e.exports=function(e){return a(e)||r(e)||i()}},8:e=>{function t(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?e.exports=t=function(e){return typeof e}:e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(n)}e.exports=t}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var i=t[a]={exports:{}};return e[a](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";n.r(r),n.d(r,{VueSelect:()=>_,default:()=>b,mixins:()=>A});var e=n(319),t=n.n(e),i=n(8),o=n.n(i),s=n(713),l=n.n(s);const u={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer:function(){this.autoscroll&&this.maybeAdjustScroll()},open:function(e){var t=this;this.autoscroll&&e&&this.$nextTick((function(){return t.maybeAdjustScroll()}))}},methods:{maybeAdjustScroll:function(){var e,t=(null===(e=this.$refs.dropdownMenu)||void 0===e?void 0:e.children[this.typeAheadPointer])||!1;if(t){var n=this.getDropdownViewport(),a=t.getBoundingClientRect(),r=a.top,i=a.bottom,o=a.height;if(rn.bottom)return this.$refs.dropdownMenu.scrollTop=t.offsetTop-(n.height-o)}},getDropdownViewport:function(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},c={data:function(){return{typeAheadPointer:-1}},watch:{filteredOptions:function(){if(this.resetFocusOnOptionsChange)for(var e=0;e=0;e--)if(this.selectable(this.filteredOptions[e])){this.typeAheadPointer=e;break}},typeAheadDown:function(){for(var e=this.typeAheadPointer+1;e0&&void 0!==arguments[0]?arguments[0]:null;return this.mutableLoading=null==e?!this.mutableLoading:e}}};function p(e,t,n,a,r,i,o,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}const h={Deselect:p({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"}},[t("path",{attrs:{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"}})])}),[],!1,null,null,null).exports,OpenIndicator:p({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"}},[t("path",{attrs:{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"}})])}),[],!1,null,null,null).exports},m={inserted:function(e,t,n){var a=n.context;if(a.appendToBody){document.body.appendChild(e);var r=a.$refs.toggle.getBoundingClientRect(),i=r.height,o=r.top,s=r.left,l=r.width,u=window.scrollX||window.pageXOffset,c=window.scrollY||window.pageYOffset;e.unbindPosition=a.calculatePosition(e,a,{width:l+"px",left:u+s+"px",top:c+o+i+"px"})}},unbind:function(e,t,n){n.context.appendToBody&&(e.unbindPosition&&"function"==typeof e.unbindPosition&&e.unbindPosition(),e.parentNode&&e.parentNode.removeChild(e))}};var f=0;function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function v(e){for(var t=1;t-1}},filter:{type:Function,default:function(e,t){var n=this;return e.filter((function(e){var a=n.getOptionLabel(e);return"number"==typeof a&&(a=a.toString()),n.filterBy(e,a,t)}))}},createOption:{type:Function,default:function(e){return"object"===o()(this.optionList[0])?l()({},this.label,e):e}},resetFocusOnOptionsChange:{type:Boolean,default:!0},resetOnOptionsChange:{default:!1,validator:function(e){return["function","boolean"].includes(o()(e))}},clearSearchOnBlur:{type:Function,default:function(e){var t=e.clearSearchOnSelect,n=e.multiple;return t&&!n}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:function(){return[13]}},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:function(e,t){return e}},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default:function(e,t,n){var a=n.width,r=n.top,i=n.left;e.style.top=r,e.style.left=i,e.style.width=a}},dropdownShouldOpen:{type:Function,default:function(e){var t=e.noDrop,n=e.open,a=e.mutableLoading;return!t&&n&&!a}},keyboardFocusBorder:{type:Boolean,default:!1},uid:{type:[String,Number],default:function(){return++f}}},data:function(){return{search:"",open:!1,isComposing:!1,isKeyboardNavigation:!1,pushedTags:[],_value:[]}},computed:{isTrackingValues:function(){return void 0===this.value||this.$options.propsData.hasOwnProperty("reduce")},selectedValue:function(){var e=this.value;return this.isTrackingValues&&(e=this.$data._value),null!=e&&""!==e?[].concat(e):[]},optionList:function(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl:function(){return this.$scopedSlots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope:function(){var e=this,t={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:v({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":"vs".concat(this.uid,"__combobox"),"aria-controls":"vs".concat(this.uid,"__listbox"),ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":"vs".concat(this.uid,"__option-").concat(this.typeAheadPointer)}:{}),events:{compositionstart:function(){return e.isComposing=!0},compositionend:function(){return e.isComposing=!1},keydown:this.onSearchKeyDown,keypress:this.onSearchKeyPress,blur:this.onSearchBlur,focus:this.onSearchFocus,input:function(t){return e.search=t.target.value}}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:t,listFooter:t,header:v({},t,{deselect:this.deselect}),footer:v({},t,{deselect:this.deselect})}},childComponents:function(){return v({},h,{},this.components)},stateClasses:function(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching:function(){return!!this.search},dropdownOpen:function(){return this.dropdownShouldOpen(this)},searchPlaceholder:function(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions:function(){var e=this,t=function(t){return null!==e.limit?t.slice(0,e.limit):t},n=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return t(n);var a=this.search.length?this.filter(n,this.search,this):n;if(this.taggable&&this.search.length){var r=this.createOption(this.search);this.optionExists(r)||a.unshift(r)}return t(a)},isValueEmpty:function(){return 0===this.selectedValue.length},showClearButton:function(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options:function(e,t){var n=this;!this.taggable&&("function"==typeof n.resetOnOptionsChange?n.resetOnOptionsChange(e,t,n.selectedValue):n.resetOnOptionsChange)&&this.clearSelection(),this.value&&this.isTrackingValues&&this.setInternalValueFromOptions(this.value)},value:{immediate:!0,handler:function(e){this.isTrackingValues&&this.setInternalValueFromOptions(e)}},multiple:function(){this.clearSelection()},open:function(e){this.$emit(e?"open":"close")},search:function(e){e.length&&(this.open=!0)}},created:function(){this.mutableLoading=this.loading,this.$on("option:created",this.pushTag)},methods:{setInternalValueFromOptions:function(e){var t=this;Array.isArray(e)?this.$data._value=e.map((function(e){return t.findOptionFromReducedValue(e)})):this.$data._value=this.findOptionFromReducedValue(e)},select:function(e){this.$emit("option:selecting",e),this.isOptionSelected(e)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(e):(this.taggable&&!this.optionExists(e)&&this.$emit("option:created",e),this.multiple&&(e=this.selectedValue.concat(e)),this.updateValue(e),this.$emit("option:selected",e)),this.onAfterSelect(e)},deselect:function(e){var t=this;this.$emit("option:deselecting",e),this.updateValue(this.selectedValue.filter((function(n){return!t.optionComparator(n,e)}))),this.$emit("option:deselected",e)},keyboardDeselect:function(e,t){var n,a;this.deselect(e);var r=null===(n=this.$refs.deselectButtons)||void 0===n?void 0:n[t+1],i=null===(a=this.$refs.deselectButtons)||void 0===a?void 0:a[t-1],o=null!=r?r:i;o?o.focus():this.searchEl.focus()},clearSelection:function(){this.updateValue(this.multiple?[]:null),this.searchEl.focus()},onAfterSelect:function(e){var t=this;this.closeOnSelect&&(this.open=!this.open),this.clearSearchOnSelect&&(this.search=""),this.noDrop&&this.multiple&&this.$nextTick((function(){return t.$refs.search.focus()}))},updateValue:function(e){var t=this;void 0===this.value&&(this.$data._value=e),null!==e&&(e=Array.isArray(e)?e.map((function(e){return t.reduce(e)})):this.reduce(e)),this.$emit("input",e)},toggleDropdown:function(e){var n=e.target!==this.searchEl;n&&e.preventDefault();var a=[].concat(t()(this.$refs.deselectButtons||[]),t()([this.$refs.clearButton]||0));void 0===this.searchEl||a.filter(Boolean).some((function(t){return t.contains(e.target)||t===e.target}))?e.preventDefault():this.open&&n?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected:function(e){var t=this;return this.selectedValue.some((function(n){return t.optionComparator(n,e)}))},isOptionDeselectable:function(e){return this.isOptionSelected(e)&&this.deselectFromDropdown},hasKeyboardFocusBorder:function(e){return!(!this.keyboardFocusBorder||!this.isKeyboardNavigation)&&e===this.typeAheadPointer},optionComparator:function(e,t){return this.getOptionKey(e)===this.getOptionKey(t)},findOptionFromReducedValue:function(e){var n=this,a=[].concat(t()(this.options),t()(this.pushedTags)).filter((function(t){return JSON.stringify(n.reduce(t))===JSON.stringify(e)}));return 1===a.length?a[0]:a.find((function(e){return n.optionComparator(e,n.$data._value)}))||e},closeSearchOptions:function(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue:function(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){var e=null;this.multiple&&(e=t()(this.selectedValue.slice(0,this.selectedValue.length-1))),this.updateValue(e)}},optionExists:function(e){var t=this;return this.optionList.some((function(n){return t.optionComparator(n,e)}))},optionAriaSelected:function(e){return this.selectable(e)?String(this.isOptionSelected(e)):null},normalizeOptionForSlot:function(e){return"object"===o()(e)?e:l()({},this.label,e)},pushTag:function(e){this.pushedTags.push(e)},onEscape:function(){this.search.length?this.search="":this.open=!1},onSearchBlur:function(){if(!this.mousedown||this.searching){var e=this.clearSearchOnSelect,t=this.multiple;return this.clearSearchOnBlur({clearSearchOnSelect:e,multiple:t})&&(this.search=""),void this.closeSearchOptions()}this.mousedown=!1,0!==this.search.length||0!==this.options.length||this.closeSearchOptions()},onSearchFocus:function(){this.open=!0,this.$emit("search:focus")},onMousedown:function(){this.mousedown=!0},onMouseUp:function(){this.mousedown=!1},onMouseMove:function(e,t){this.isKeyboardNavigation=!1,this.selectable(e)&&(this.typeAheadPointer=t)},onSearchKeyDown:function(e){var t=this,n=function(e){if(e.preventDefault(),t.open)return!t.isComposing&&t.typeAheadSelect();t.open=!0},a={8:function(e){return t.maybeDeleteValue()},9:function(e){return t.onTab()},27:function(e){return t.onEscape()},38:function(e){if(e.preventDefault(),t.isKeyboardNavigation=!0,t.open)return t.typeAheadUp();t.open=!0},40:function(e){if(e.preventDefault(),t.isKeyboardNavigation=!0,t.open)return t.typeAheadDown();t.open=!0}};this.selectOnKeyCodes.forEach((function(e){return a[e]=n}));var r=this.mapKeydown(a,this);if("function"==typeof r[e.keyCode])return r[e.keyCode](e)},onSearchKeyPress:function(e){this.open||32!==e.keyCode||(e.preventDefault(),this.open=!0)}}},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"v-select",class:e.stateClasses,attrs:{dir:e.dir}},[e._t("header",null,null,e.scope.header),e._v(" "),n("div",{ref:"toggle",staticClass:"vs__dropdown-toggle",attrs:{id:"vs"+e.uid+"__combobox",role:"combobox","aria-expanded":e.dropdownOpen.toString(),"aria-owns":"vs"+e.uid+"__listbox","aria-label":"Search for option"},on:{mousedown:function(t){return e.toggleDropdown(t)}}},[n("div",{ref:"selectedOptions",staticClass:"vs__selected-options"},[e._l(e.selectedValue,(function(t,a){return e._t("selected-option-container",[n("span",{key:e.getOptionKey(t),staticClass:"vs__selected"},[e._t("selected-option",[e._v("\n "+e._s(e.getOptionLabel(t))+"\n ")],null,e.normalizeOptionForSlot(t)),e._v(" "),e.multiple?n("button",{ref:"deselectButtons",refInFor:!0,staticClass:"vs__deselect",attrs:{disabled:e.disabled,type:"button",title:"Deselect "+e.getOptionLabel(t),"aria-label":"Deselect "+e.getOptionLabel(t)},on:{mousedown:function(n){return n.stopPropagation(),e.deselect(t)},keydown:function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:e.keyboardDeselect(t,a)}}},[n(e.childComponents.Deselect,{tag:"component"})],1):e._e()],2)],{option:e.normalizeOptionForSlot(t),deselect:e.deselect,multiple:e.multiple,disabled:e.disabled})})),e._v(" "),e._t("search",[n("input",e._g(e._b({staticClass:"vs__search"},"input",e.scope.search.attributes,!1),e.scope.search.events))],null,e.scope.search)],2),e._v(" "),n("div",{ref:"actions",staticClass:"vs__actions"},[n("button",{directives:[{name:"show",rawName:"v-show",value:e.showClearButton,expression:"showClearButton"}],ref:"clearButton",staticClass:"vs__clear",attrs:{disabled:e.disabled,type:"button",title:"Clear Selected","aria-label":"Clear Selected"},on:{click:e.clearSelection}},[n(e.childComponents.Deselect,{tag:"component"})],1),e._v(" "),e._t("open-indicator",[e.noDrop?e._e():n(e.childComponents.OpenIndicator,e._b({tag:"component"},"component",e.scope.openIndicator.attributes,!1))],null,e.scope.openIndicator),e._v(" "),e._t("spinner",[n("div",{directives:[{name:"show",rawName:"v-show",value:e.mutableLoading,expression:"mutableLoading"}],staticClass:"vs__spinner"},[e._v("Loading...")])],null,e.scope.spinner)],2)]),e._v(" "),n("transition",{attrs:{name:e.transition}},[e.dropdownOpen?n("ul",{directives:[{name:"append-to-body",rawName:"v-append-to-body"}],key:"vs"+e.uid+"__listbox",ref:"dropdownMenu",staticClass:"vs__dropdown-menu",attrs:{id:"vs"+e.uid+"__listbox",role:"listbox","aria-multiselectable":e.multiple,tabindex:"-1"},on:{mousedown:function(t){return t.preventDefault(),e.onMousedown(t)},mouseup:e.onMouseUp}},[e._t("list-header",null,null,e.scope.listHeader),e._v(" "),e._l(e.filteredOptions,(function(t,a){return n("li",{key:e.getOptionKey(t),staticClass:"vs__dropdown-option",class:{"vs__dropdown-option--deselect":e.isOptionDeselectable(t)&&a===e.typeAheadPointer,"vs__dropdown-option--selected":e.isOptionSelected(t),"vs__dropdown-option--highlight":a===e.typeAheadPointer,"vs__dropdown-option--kb-focus":e.hasKeyboardFocusBorder(a),"vs__dropdown-option--disabled":!e.selectable(t)},attrs:{id:"vs"+e.uid+"__option-"+a,role:"option","aria-selected":e.optionAriaSelected(t)},on:{mousemove:function(n){return e.onMouseMove(t,a)},click:function(n){n.preventDefault(),n.stopPropagation(),e.selectable(t)&&e.select(t)}}},[e._t("option",[e._v("\n "+e._s(e.getOptionLabel(t))+"\n ")],null,e.normalizeOptionForSlot(t))],2)})),e._v(" "),0===e.filteredOptions.length?n("li",{staticClass:"vs__no-options"},[e._t("no-options",[e._v("\n Sorry, no matching options.\n ")],null,e.scope.noOptions)],2):e._e(),e._v(" "),e._t("list-footer",null,null,e.scope.listFooter)],2):n("ul",{staticStyle:{display:"none",visibility:"hidden"},attrs:{id:"vs"+e.uid+"__listbox",role:"listbox"}})]),e._v(" "),e._t("footer",null,null,e.scope.footer)],2)}),[],!1,null,null,null).exports,A={ajax:d,pointer:c,pointerScroll:u},b=_})(),r})()},45400:(e,t,n)=>{var a,r=n(25108);self,a=()=>(()=>{var e={723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var a=n(2734),r=n.n(a);const i={before(){this.$slots.default&&""!==this.text.trim()||(r().util.warn("".concat(this.$options.name," cannot be empty and requires a meaningful text content"),this),this.$destroy(),this.$el.remove())},beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?this.$slots.default[0].text.trim():""}}}},1139:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a={mixins:[n(723).Z],props:{icon:{type:String,default:""},name:{type:String,default:null},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:""},ariaHidden:{type:Boolean,default:null}},emits:["click"],computed:{nameTitleFallback(){return null===this.name&&this.title?(r.warn("The `title` prop was renamed. Please use the `name` prop instead if you intend to set the main content text."),this.title):this.name},isIconUrl(){try{return new URL(this.icon)}catch(e){return!1}}},methods:{onClick(e){if(this.$emit("click",e),this.closeAfterClick){const e=function(e,t){let n=e.$parent;for(;n;){if("NcActions"===n.$options.name)return n;n=n.$parent}}(this);e&&e.closeMenu&&e.closeMenu(!1)}}}}},3100:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-1418d792]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.active[data-v-1418d792]{background-color:var(--color-background-hover);border-radius:6px;padding:0}.action--disabled[data-v-1418d792]{pointer-events:none;opacity:.5}.action--disabled[data-v-1418d792]:hover,.action--disabled[data-v-1418d792]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-1418d792]{opacity:1 !important}.action-button[data-v-1418d792]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:rgba(0,0,0,0);box-shadow:none;font-weight:normal;font-size:var(--default-font-size);line-height:44px}.action-button>span[data-v-1418d792]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-1418d792]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px;background-repeat:no-repeat}.action-button[data-v-1418d792] .material-design-icon{width:44px;height:44px;opacity:1}.action-button[data-v-1418d792] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-button p[data-v-1418d792]{max-width:220px;line-height:1.6em;padding:10.8px 0;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-1418d792]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-1418d792]{font-weight:bold;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline-block}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/assets/action.scss","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCiBC,2BACC,8CAAA,CACA,iBAAA,CACA,SAAA,CAMF,mCACC,mBAAA,CACA,UCMiB,CDLjB,kFACC,cAAA,CACA,UCGgB,CDDjB,qCACC,oBAAA,CAOF,gCACC,YAAA,CACA,sBAAA,CAEA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,kBCxBY,CDyBZ,qBAAA,CAEA,cAAA,CACA,kBAAA,CAEA,4BAAA,CACA,QAAA,CACA,eAAA,CACA,8BAAA,CACA,eAAA,CAEA,kBAAA,CACA,kCAAA,CACA,gBC9Ce,CDgDf,qCACC,cAAA,CACA,kBAAA,CAGD,sCACC,UCtDc,CDuDd,WCvDc,CDwDd,SCrCY,CDsCZ,+BAAA,CACA,oBCtDS,CDuDT,2BAAA,CAGD,sDACC,UC/Dc,CDgEd,WChEc,CDiEd,SC9CY,CDgDZ,iFACC,qBAAA,CAKF,kCACC,eAAA,CACA,iBAAA,CAGA,gBAAA,CAEA,cAAA,CACA,eAAA,CAGA,eAAA,CACA,sBAAA,CAGD,0CACC,cAAA,CAEA,oBAAA,CAGD,uCACC,gBAAA,CACA,sBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,oBAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Marco Ambrosini \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n@mixin action-active {\n\tli {\n\t\t&.active {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder-radius: 6px;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n\n@mixin action--disabled {\n\t.action--disabled {\n\t\tpointer-events: none;\n\t\topacity: $opacity_disabled;\n\t\t&:hover, &:focus {\n\t\t\tcursor: default;\n\t\t\topacity: $opacity_disabled;\n\t\t}\n\t\t& * {\n\t\t\topacity: 1 !important;\n\t\t}\n\t}\n}\n\n\n@mixin action-item($name) {\n\t.action-#{$name} {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tpadding-right: $icon-margin;\n\t\tbox-sizing: border-box; // otherwise router-link overflows in Firefox\n\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\n\t\tcolor: var(--color-main-text);\n\t\tborder: 0;\n\t\tborder-radius: 0; // otherwise Safari will cut the border-radius area\n\t\tbackground-color: transparent;\n\t\tbox-shadow: none;\n\n\t\tfont-weight: normal;\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: $clickable-area;\n\n\t\t& > span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t&__icon {\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\topacity: $opacity_full;\n\t\t\tbackground-position: $icon-margin center;\n\t\t\tbackground-size: $icon-size;\n\t\t\tbackground-repeat: no-repeat;\n\t\t}\n\n\t\t&:deep(.material-design-icon) {\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\topacity: $opacity_full;\n\n\t\t\t.material-design-icon__svg {\n\t\t\t\tvertical-align: middle;\n\t\t\t}\n\t\t}\n\n\t\t// long text area\n\t\tp {\n\t\t\tmax-width: 220px;\n\t\t\tline-height: 1.6em;\n\n\t\t\t// 14px are currently 1em line-height. Mixing units as '44px - 1.6em' does not work.\n\t\t\tpadding: #{math.div($clickable-area - 1.6 * 14px, 2)} 0;\n\n\t\t\tcursor: pointer;\n\t\t\ttext-align: left;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t&__longtext {\n\t\t\tcursor: pointer;\n\t\t\t// allow the use of `\\n`\n\t\t\twhite-space: pre-wrap;\n\t\t}\n\n\t\t&__title {\n\t\t\tfont-weight: bold;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t\tmax-width: 100%;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},3645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",a=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),a&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),a&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,a,r,i){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(a)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=i),n&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=n):c[2]=n),r&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=r):c[4]="".concat(r)),t.push(c))}},t}},7537:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var a=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),i="/*# ".concat(r," */");return[t].concat([i]).join("\n")}return[t].join("\n")}},3379:e=>{"use strict";var t=[];function n(e){for(var n=-1,a=0;a{"use strict";var t={};e.exports=function(e,n){var a=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(n)}},9216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7795:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var a="";n.supports&&(a+="@supports (".concat(n.supports,") {")),n.media&&(a+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(a+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),a+=n.css,r&&(a+="}"),n.media&&(a+="}"),n.supports&&(a+="}");var i=n.sourceMap;i&&"undefined"!=typeof btoa&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleTagTransform(a,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},4216:()=>{},1900:(e,t,n)=>{"use strict";function a(e,t,n,a,r,i,o,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}n.d(t,{Z:()=>a})},2734:e=>{"use strict";e.exports=n(20144)}},t={};function a(n){var r=t[n];if(void 0!==r)return r.exports;var i=t[n]={id:n,exports:{}};return e[n](i,i.exports,a),i.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nc=void 0;var i={};return(()=>{"use strict";a.r(i),a.d(i,{default:()=>y});const e={name:"NcActionButton",mixins:[a(1139).Z],props:{disabled:{type:Boolean,default:!1},ariaHidden:{type:Boolean,default:null}},computed:{isFocusable(){return!this.disabled}}};var t=a(3379),n=a.n(t),r=a(7795),o=a.n(r),s=a(569),l=a.n(s),u=a(3565),c=a.n(u),d=a(9216),p=a.n(d),h=a(4589),m=a.n(h),f=a(3100),g={};g.styleTagTransform=m(),g.setAttributes=c(),g.insert=l().bind(null,"head"),g.domAPI=o(),g.insertStyleElement=p(),n()(f.Z,g),f.Z&&f.Z.locals&&f.Z.locals;var v=a(1900),_=a(4216),A=a.n(_),b=(0,v.Z)(e,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"action",class:{"action--disabled":e.disabled},attrs:{role:"presentation"}},[t("button",{staticClass:"action-button",class:{focusable:e.isFocusable},attrs:{"aria-label":e.ariaLabel,title:e.title,role:"menuitem",type:"button"},on:{click:e.onClick}},[e._t("icon",(function(){return[t("span",{staticClass:"action-button__icon",class:[e.isIconUrl?"action-button__icon--url":e.icon],style:{backgroundImage:e.isIconUrl?"url(".concat(e.icon,")"):null},attrs:{"aria-hidden":e.ariaHidden}})]})),e._v(" "),e.nameTitleFallback?t("p",[t("strong",{staticClass:"action-button__title"},[e._v("\n\t\t\t\t"+e._s(e.nameTitleFallback)+"\n\t\t\t")]),e._v(" "),t("br"),e._v(" "),t("span",{staticClass:"action-button__longtext",domProps:{textContent:e._s(e.text)}})]):e.isLongText?t("p",{staticClass:"action-button__longtext",domProps:{textContent:e._s(e.text)}}):t("span",{staticClass:"action-button__text"},[e._v(e._s(e.text))]),e._v(" "),e._e()],2)])}),[],!1,null,"1418d792",null);"function"==typeof A()&&A()(b);const y=b.exports})(),i})(),e.exports=a()},79570:(e,t,n)=>{var a,r=n(25108);self,a=()=>(()=>{var e={9456:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var a=n(1631),i=n(1205),o=n(5512),s=n.n(o),l=n(6915),u=n.n(l);const c={name:"NcInputField",components:{NcButton:a.default,AlertCircle:s(),Check:u()},inheritAttrs:!1,props:{value:{type:String,required:!0},type:{type:String,default:"text",validator:e=>["text","password","email","tel","url","search","number"].includes(e)},label:{type:String,default:void 0},labelOutside:{type:Boolean,default:!1},labelVisible:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},showTrailingButton:{type:Boolean,default:!1},trailingButtonLabel:{type:String,default:""},success:{type:Boolean,default:!1},error:{type:Boolean,default:!1},helperText:{type:String,default:""},disabled:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["update:value","trailing-button-click"],computed:{computedId(){return this.$attrs.id&&""!==this.$attrs.id?this.$attrs.id:this.inputName},inputName:()=>"input"+(0,i.Z)(),hasLeadingIcon(){return this.$slots.default},hasTrailingIcon(){return this.success},hasPlaceholder(){return""!==this.placeholder&&void 0!==this.placeholder},computedPlaceholder(){return this.labelVisible?this.hasPlaceholder?this.placeholder:"":this.hasPlaceholder?this.placeholder:this.label},isValidLabel(){const e=this.label||this.labelOutside;return e||r.warn("You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation."),e}},methods:{focus(){this.$refs.input.focus()},select(){this.$refs.input.select()},handleInput(e){this.$emit("update:value",e.target.value)},handleTrailingButtonClick(e){this.$emit("trailing-button-click",e)}}}},3921:(e,t,n)=>{"use strict";n.d(t,{s:()=>a,x:()=>r});var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"input-field"},[!e.labelOutside&&e.isValidLabel?t("label",{staticClass:"input-field__label",class:{"input-field__label--hidden":!e.labelVisible},attrs:{for:e.computedId}},[e._v("\n\t\t"+e._s(e.label)+"\n\t")]):e._e(),e._v(" "),t("div",{staticClass:"input-field__main-wrapper"},[t("input",e._g(e._b({ref:"input",staticClass:"input-field__input",class:[e.inputClass,{"input-field__input--trailing-icon":e.showTrailingButton||e.hasTrailingIcon,"input-field__input--leading-icon":e.hasLeadingIcon,"input-field__input--success":e.success,"input-field__input--error":e.error}],attrs:{id:e.computedId,type:e.type,disabled:e.disabled,placeholder:e.computedPlaceholder,"aria-describedby":e.helperText.length>0?"".concat(e.inputName,"-helper-text"):"","aria-live":"polite"},domProps:{value:e.value},on:{input:e.handleInput}},"input",e.$attrs,!1),e.$listeners)),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.hasLeadingIcon,expression:"hasLeadingIcon"}],staticClass:"input-field__icon input-field__icon--leading"},[e._t("default")],2),e._v(" "),e.showTrailingButton?t("NcButton",{staticClass:"input-field__clear-button",attrs:{type:"tertiary-no-background","aria-label":e.trailingButtonLabel,disabled:e.disabled},on:{click:e.handleTrailingButtonClick},scopedSlots:e._u([{key:"icon",fn:function(){return[e._t("trailing-button-icon")]},proxy:!0}],null,!0)}):e.success||e.error?t("div",{staticClass:"input-field__icon input-field__icon--trailing"},[e.success?t("Check",{attrs:{size:18}}):e.error?t("AlertCircle",{attrs:{size:18}}):e._e()],1):e._e()],1),e._v(" "),e.helperText.length>0?t("p",{staticClass:"input-field__helper-text-message",class:{"input-field__helper-text-message--error":e.error,"input-field__helper-text-message--success":e.success},attrs:{id:"".concat(e.inputName,"-helper-text")}},[e.success?t("Check",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):e.error?t("AlertCircle",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):e._e(),e._v("\n\t\t"+e._s(e.helperText)+"\n\t")],1):e._e()])},r=[]},8091:(e,t,n)=>{"use strict";n.d(t,{default:()=>I});var a=n(2297),i=n(306),o=n(5378),s=n(7993),l=n(3351),u=n(932),c=n(768),d=n.n(c),p=n(1441),h=n.n(p),m=n(3607),f=n(542),g=n(7672),v=n(4262),_=n(4055);const A=(0,g.getBuilder)("nextcloud").persist().build();function b(e,t){e&&A.setItem("user-has-avatar."+e,t)}const y={name:"NcAvatar",directives:{ClickOutside:_.vOnClickOutside},components:{DotsHorizontal:h(),NcLoadingIcon:o.default,NcPopover:a.default,NcPopoverMenu:i.default},mixins:[l.iQ],props:{url:{type:String,default:void 0},iconClass:{type:String,default:void 0},user:{type:String,default:void 0},showUserStatus:{type:Boolean,default:!0},showUserStatusCompact:{type:Boolean,default:!0},preloadedUserStatus:{type:Object,default:void 0},isGuest:{type:Boolean,default:!1},displayName:{type:String,default:void 0},size:{type:Number,default:32},allowPlaceholder:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1},disableMenu:{type:Boolean,default:!1},tooltipMessage:{type:String,default:null},isNoUser:{type:Boolean,default:!1},menuPosition:{type:String,default:"center"},menuContainer:{type:[String,Object,Element,Boolean],default:"body"}},data:()=>({avatarUrlLoaded:null,avatarSrcSetLoaded:null,userDoesNotExist:!1,isAvatarLoaded:!1,isMenuLoaded:!1,contactsMenuLoading:!1,contactsMenuActions:[],contactsMenuOpenState:!1}),computed:{avatarAriaLabel(){var e,t;if(this.hasMenu)return this.hasStatus&&this.showUserStatus&&this.showUserStatusCompact?(0,u.t)("Avatar of {displayName}, {status}",{displayName:null!==(t=this.displayName)&&void 0!==t?t:this.user,status:this.userStatus.status}):(0,u.t)("Avatar of {displayName}",{displayName:null!==(e=this.displayName)&&void 0!==e?e:this.user})},canDisplayUserStatus(){return this.showUserStatus&&this.hasStatus&&["online","away","dnd"].includes(this.userStatus.status)},showUserStatusIconOnAvatar(){return this.showUserStatus&&this.showUserStatusCompact&&this.hasStatus&&"dnd"!==this.userStatus.status&&this.userStatus.icon},getUserIdentifier(){return this.isDisplayNameDefined?this.displayName:this.isUserDefined?this.user:""},isUserDefined(){return void 0!==this.user},isDisplayNameDefined(){return void 0!==this.displayName},isUrlDefined(){return void 0!==this.url},hasMenu(){var e;return!this.disableMenu&&(this.isMenuLoaded?this.menu.length>0:!(this.user===(null===(e=(0,m.getCurrentUser)())||void 0===e?void 0:e.uid)||this.userDoesNotExist||this.url))},shouldShowPlaceholder(){return this.allowPlaceholder&&this.userDoesNotExist},avatarStyle(){return{"--size":this.size+"px",lineHeight:this.size+"px",fontSize:Math.round(.45*this.size)+"px"}},initialsWrapperStyle(){const{r:e,g:t,b:n}=(0,s.default)(this.getUserIdentifier);return{backgroundColor:"rgba(".concat(e,", ").concat(t,", ").concat(n,", 0.1)")}},initialsStyle(){const{r:e,g:t,b:n}=(0,s.default)(this.getUserIdentifier);return{color:"rgb(".concat(e,", ").concat(t,", ").concat(n,")")}},tooltip(){return!this.disableTooltip&&(this.tooltipMessage?this.tooltipMessage:this.displayName)},initials(){let e;if(this.shouldShowPlaceholder){const t=this.getUserIdentifier,n=t.indexOf(" ");""===t?e="?":(e=String.fromCodePoint(t.codePointAt(0)),-1!==n&&(e=e.concat(String.fromCodePoint(t.codePointAt(n+1)))))}return e.toUpperCase()},menu(){const e=this.contactsMenuActions.map((e=>({href:e.hyperlink,icon:e.icon,longtext:e.title})));return this.showUserStatus&&(this.userStatus.icon||this.userStatus.message)?[{href:"#",icon:"data:image/svg+xml;utf8,".concat(function(e){const t=document.createTextNode(e),n=document.createElement("p");return n.appendChild(t),n.innerHTML}(this.userStatus.icon),""),text:"".concat(this.userStatus.message)}].concat(e):e}},watch:{url(){this.userDoesNotExist=!1,this.loadAvatarUrl()},user(){this.userDoesNotExist=!1,this.isMenuLoaded=!1,this.loadAvatarUrl()}},mounted(){this.loadAvatarUrl(),(0,f.subscribe)("settings:avatar:updated",this.loadAvatarUrl),(0,f.subscribe)("settings:display-name:updated",this.loadAvatarUrl),this.showUserStatus&&this.user&&!this.isNoUser&&(this.preloadedUserStatus?(this.userStatus.status=this.preloadedUserStatus.status||"",this.userStatus.message=this.preloadedUserStatus.message||"",this.userStatus.icon=this.preloadedUserStatus.icon||"",this.hasStatus=null!==this.preloadedUserStatus.status):this.fetchUserStatus(this.user),(0,f.subscribe)("user_status:status.updated",this.handleUserStatusUpdated))},beforeDestroy(){(0,f.unsubscribe)("settings:avatar:updated",this.loadAvatarUrl),(0,f.unsubscribe)("settings:display-name:updated",this.loadAvatarUrl),this.showUserStatus&&this.user&&!this.isNoUser&&(0,f.unsubscribe)("user_status:status.updated",this.handleUserStatusUpdated)},methods:{handlePopoverAfterShow(){const e=this.$refs.popoverMenu.$el.getElementsByTagName("a");e.length&&e[0].focus()},handlePopoverAfterHide(){this.$refs.main.focus()},handleUserStatusUpdated(e){this.user===e.userId&&(this.userStatus={status:e.status,icon:e.icon,message:e.message})},async toggleMenu(){this.hasMenu&&(this.contactsMenuOpenState||await this.fetchContactsMenu(),this.contactsMenuOpenState=!this.contactsMenuOpenState)},closeMenu(){this.contactsMenuOpenState=!1},async fetchContactsMenu(){this.contactsMenuLoading=!0;try{const e=encodeURIComponent(this.user),{data:t}=await d().post((0,v.generateUrl)("contactsmenu/findOne"),"shareType=0&shareWith=".concat(e));this.contactsMenuActions=t.topAction?[t.topAction].concat(t.actions):t.actions}catch(e){this.contactsMenuOpenState=!1}this.contactsMenuLoading=!1,this.isMenuLoaded=!0},loadAvatarUrl(){if(this.isAvatarLoaded=!1,!this.isUrlDefined&&(!this.isUserDefined||this.isNoUser))return this.isAvatarLoaded=!0,void(this.userDoesNotExist=!0);if(this.isUrlDefined)this.updateImageIfValid(this.url);else if(this.size<=64){const e=this.avatarUrlGenerator(this.user,64),t=[e+" 1x",this.avatarUrlGenerator(this.user,512)+" 8x"].join(", ");this.updateImageIfValid(e,t)}else{const e=this.avatarUrlGenerator(this.user,512);this.updateImageIfValid(e)}},avatarUrlGenerator(e,t){var n;const a="invert(100%)"===window.getComputedStyle(document.body).getPropertyValue("--background-invert-if-dark");let r="/avatar/{user}/{size}"+(a?"/dark":"");this.isGuest&&(r="/avatar/guest/{user}/{size}"+(a?"/dark":""));let i=(0,v.generateUrl)(r,{user:e,size:t});return e===(null===(n=(0,m.getCurrentUser)())||void 0===n?void 0:n.uid)&&"undefined"!=typeof oc_userconfig&&(i+="?v="+oc_userconfig.avatar.version),i},updateImageIfValid(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=function(e){const t=A.getItem("user-has-avatar."+e);return"string"==typeof t?Boolean(t):null}(this.user);if(this.isUserDefined&&"boolean"==typeof n)return this.isAvatarLoaded=!0,this.avatarUrlLoaded=e,t&&(this.avatarSrcSetLoaded=t),void(!1===n&&(this.userDoesNotExist=!0));const a=new Image;a.onload=()=>{this.avatarUrlLoaded=e,t&&(this.avatarSrcSetLoaded=t),this.isAvatarLoaded=!0,b(this.user,!0)},a.onerror=()=>{r.debug("Invalid avatar url",e),this.avatarUrlLoaded=null,this.avatarSrcSetLoaded=null,this.userDoesNotExist=!0,this.isAvatarLoaded=!1,b(this.user,!1)},t&&(a.srcset=t),a.src=e}}};var F=n(3379),T=n.n(F),C=n(7795),k=n.n(C),w=n(569),S=n.n(w),E=n(3565),D=n.n(E),x=n(9216),N=n.n(x),O=n(4589),j=n.n(O),M=n(2242),R={};R.styleTagTransform=j(),R.setAttributes=D(),R.insert=S().bind(null,"head"),R.domAPI=k(),R.insertStyleElement=N(),T()(M.Z,R),M.Z&&M.Z.locals&&M.Z.locals;var P=n(1900),B=n(3051),L=n.n(B),z=(0,P.Z)(y,(function(){var e=this,t=e._self._c;return t("div",e._g({directives:[{name:"click-outside",rawName:"v-click-outside",value:e.closeMenu,expression:"closeMenu"}],ref:"main",staticClass:"avatardiv popovermenu-wrapper",class:{"avatardiv--unknown":e.userDoesNotExist,"avatardiv--with-menu":e.hasMenu},style:e.avatarStyle,attrs:{title:e.tooltip,tabindex:e.hasMenu?"0":void 0,"aria-label":e.avatarAriaLabel,role:e.hasMenu?"button":void 0},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.toggleMenu.apply(null,arguments)}}},e.hasMenu?{click:e.toggleMenu}:{}),[e._t("icon",(function(){return[e.iconClass?t("div",{staticClass:"avatar-class-icon",class:e.iconClass}):e.isAvatarLoaded&&!e.userDoesNotExist?t("img",{attrs:{src:e.avatarUrlLoaded,srcset:e.avatarSrcSetLoaded,alt:""}}):e._e()]})),e._v(" "),e.hasMenu?t("NcPopover",{attrs:{placement:"auto",container:e.menuContainer,shown:e.contactsMenuOpenState},on:{"after-show":e.handlePopoverAfterShow,"after-hide":e.handlePopoverAfterHide},scopedSlots:e._u([{key:"trigger",fn:function(){return[e.contactsMenuLoading?t("NcLoadingIcon"):t("DotsHorizontal",{staticClass:"icon-more",attrs:{size:20}})]},proxy:!0}],null,!1,2037777893)},[t("NcPopoverMenu",{ref:"popoverMenu",attrs:{menu:e.menu}})],1):e._e(),e._v(" "),e.showUserStatusIconOnAvatar?t("div",{staticClass:"avatardiv__user-status avatardiv__user-status--icon"},[e._v("\n\t\t"+e._s(e.userStatus.icon)+"\n\t")]):e.canDisplayUserStatus?t("div",{staticClass:"avatardiv__user-status",class:"avatardiv__user-status--"+e.userStatus.status}):e._e(),e._v(" "),!e.userDoesNotExist||e.iconClass||e.$slots.icon?e._e():t("div",{staticClass:"avatardiv__initials-wrapper",style:e.initialsWrapperStyle},[t("div",{staticClass:"unknown",style:e.initialsStyle},[e._v("\n\t\t\t"+e._s(e.initials)+"\n\t\t")])])],2)}),[],!1,null,"f73be20c",null);"function"==typeof L()&&L()(z);const I=z.exports},1631:(e,t,n)=>{"use strict";n.d(t,{default:()=>T});const a={name:"NcButton",props:{disabled:{type:Boolean,default:!1},type:{type:String,validator:e=>-1!==["primary","secondary","tertiary","tertiary-no-background","tertiary-on-primary","error","warning","success"].indexOf(e),default:"secondary"},nativeType:{type:String,validator:e=>-1!==["submit","reset","button"].indexOf(e),default:"button"},wide:{type:Boolean,default:!1},ariaLabel:{type:String,default:null},href:{type:String,default:null},download:{type:String,default:null},to:{type:[String,Object],default:null},exact:{type:Boolean,default:!1},ariaHidden:{type:Boolean,default:null}},render(e){var t,n,a,i,o,s=this;const l=null===(t=this.$slots.default)||void 0===t||null===(n=t[0])||void 0===n||null===(a=n.text)||void 0===a||null===(i=a.trim)||void 0===i?void 0:i.call(a),u=!!l,c=null===(o=this.$slots)||void 0===o?void 0:o.icon;l||this.ariaLabel||r.warn("You need to fill either the text or the ariaLabel props in the button component.",{text:l,ariaLabel:this.ariaLabel},this);const d=function(){let{navigate:t,isActive:n,isExactActive:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(s.to||!s.href?"button":"a",{class:["button-vue",{"button-vue--icon-only":c&&!u,"button-vue--text-only":u&&!c,"button-vue--icon-and-text":c&&u,["button-vue--vue-".concat(s.type)]:s.type,"button-vue--wide":s.wide,active:n,"router-link-exact-active":a}],attrs:{"aria-label":s.ariaLabel,disabled:s.disabled,type:s.href?null:s.nativeType,role:s.href?"button":null,href:!s.to&&s.href?s.href:null,target:!s.to&&s.href?"_self":null,rel:!s.to&&s.href?"nofollow noreferrer noopener":null,download:!s.to&&s.href&&s.download?s.download:null,...s.$attrs},on:{...s.$listeners,click:e=>{var n,a;null===(n=s.$listeners)||void 0===n||null===(a=n.click)||void 0===a||a.call(n,e),null==t||t(e)}}},[e("span",{class:"button-vue__wrapper"},[c?e("span",{class:"button-vue__icon",attrs:{"aria-hidden":s.ariaHidden}},[s.$slots.icon]):null,u?e("span",{class:"button-vue__text"},[l]):null])])};return this.to?e("router-link",{props:{custom:!0,to:this.to,exact:this.exact},scopedSlots:{default:d}}):d()}};var i=n(3379),o=n.n(i),s=n(7795),l=n.n(s),u=n(569),c=n.n(u),d=n(3565),p=n.n(d),h=n(9216),m=n.n(h),f=n(4589),g=n.n(f),v=n(7233),_={};_.styleTagTransform=g(),_.setAttributes=p(),_.insert=c().bind(null,"head"),_.domAPI=l(),_.insertStyleElement=m(),o()(v.Z,_),v.Z&&v.Z.locals&&v.Z.locals;var A=n(1900),b=n(2102),y=n.n(b),F=(0,A.Z)(a,void 0,void 0,!1,null,"488fcfba",null);"function"==typeof y()&&y()(F);const T=F.exports},9050:(e,t,n)=>{"use strict";n.d(t,{default:()=>C});const a=["date","datetime-local","month","time","week"],r={name:"NcDateTimePickerNative",inheritAttrs:!1,props:{value:{type:Date,required:!0},id:{type:String,required:!0},type:{type:String,default:"date",validate:e=>a.includes(e)},label:{type:String,default:"Please choose a date"},min:{type:[Date,Boolean],default:null},max:{type:[Date,Boolean],default:null},hideLabel:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["input"],computed:{formattedValue(){return this.formatValue(this.value)},formattedMin(){return!!this.min&&this.formatValue(this.min)},formattedMax(){return!!this.max&&this.formatValue(this.max)},listeners(){return{...this.$listeners,input:e=>{if(isNaN(e.target.valueAsNumber))return this.$emit("input","");if("time"===this.type){const t=e.target.value;if(""===this.value){const{yyyy:e,MM:n,dd:a}=this.getReadableDate(new Date);return this.$emit("input",new Date("".concat(e,"-").concat(n,"-").concat(a,"T").concat(t)))}const{yyyy:n,MM:a,dd:r}=this.getReadableDate(this.value);return this.$emit("input",new Date("".concat(n,"-").concat(a,"-").concat(r,"T").concat(t)))}if("month"===this.type){const t=(new Date(e.target.value).getMonth()+1).toString().padStart(2,"0");if(""===this.value){const{yyyy:e,dd:n,hh:a,mm:r}=this.getReadableDate(new Date);return this.$emit("input",new Date("".concat(e,"-").concat(t,"-").concat(n,"T").concat(a,":").concat(r)))}const{yyyy:n,dd:a,hh:r,mm:i}=this.getReadableDate(this.value);return this.$emit("input",new Date("".concat(n,"-").concat(t,"-").concat(a,"T").concat(r,":").concat(i)))}const t=1e3*new Date(e.target.valueAsNumber).getTimezoneOffset()*60,n=e.target.valueAsNumber+t;return this.$emit("input",new Date(n))}}}},methods:{getReadableDate(e){if(e instanceof Date)return{yyyy:e.getFullYear().toString().padStart(4,"0"),MM:(e.getMonth()+1).toString().padStart(2,"0"),dd:e.getDate().toString().padStart(2,"0"),hh:e.getHours().toString().padStart(2,"0"),mm:e.getMinutes().toString().padStart(2,"0")}},formatValue(e){if(!(e instanceof Date))return"";{const{yyyy:t,MM:n,dd:a,hh:r,mm:i}=this.getReadableDate(e);if("datetime-local"===this.type)return"".concat(t,"-").concat(n,"-").concat(a,"T").concat(r,":").concat(i);if("date"===this.type)return"".concat(t,"-").concat(n,"-").concat(a);if("month"===this.type)return"".concat(t,"-").concat(n);if("time"===this.type)return"".concat(r,":").concat(i);if("week"===this.type){const n=new Date(t,0,1),a=Math.floor((e-n)/864e5),r=Math.ceil(a/7);return"".concat(t,"-W").concat(r)}}}}};var i=n(3379),o=n.n(i),s=n(7795),l=n.n(s),u=n(569),c=n.n(u),d=n(3565),p=n.n(d),h=n(9216),m=n.n(h),f=n(4589),g=n.n(f),v=n(8940),_={};_.styleTagTransform=g(),_.setAttributes=p(),_.insert=c().bind(null,"head"),_.domAPI=l(),_.insertStyleElement=m(),o()(v.Z,_),v.Z&&v.Z.locals&&v.Z.locals;var A=n(1900),b=n(8795),y=n.n(b),F=(0,A.Z)(r,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"native-datetime-picker"},[t("label",{class:{"hidden-visually":e.hideLabel},attrs:{for:e.id}},[e._v(e._s(e.label))]),e._v(" "),t("input",e._g(e._b({staticClass:"native-datetime-picker--input",class:e.inputClass,attrs:{id:e.id,type:e.type,min:e.formattedMin,max:e.formattedMax},domProps:{value:e.formattedValue}},"input",e.$attrs,!1),e.listeners))])}),[],!1,null,"b5e8dce0",null);"function"==typeof y()&&y()(F);const T=F.exports;(0,n(7645).Z)(T);const C=T},3308:(e,t,a)=>{"use strict";a.d(t,{default:()=>Y});var i=a(3379),o=a.n(i),s=a(7795),l=a.n(s),u=a(569),c=a.n(u),d=a(3565),p=a.n(d),h=a(9216),m=a.n(h),f=a(4589),g=a.n(f),v=a(9934),_={};_.styleTagTransform=g(),_.setAttributes=p(),_.insert=c().bind(null,"head"),_.domAPI=l(),_.insertStyleElement=m(),o()(v.Z,_),v.Z&&v.Z.locals&&v.Z.locals;var A=a(932),b=a(2644),y=a(2297),F=a(3648);const T=n(22117);var C=a.n(T);const k=n(97859);var w=a.n(k);const S=n(9944),E=n(20235);var D=a.n(E);const x={date:"YYYY-MM-DD",datetime:"YYYY-MM-DD H:mm:ss",year:"YYYY",month:"YYYY-MM",time:"H:mm:ss",week:"w"},N={name:"NcDatetimePicker",components:{CalendarBlank:C(),DatePicker:D(),NcPopover:y.default,NcTimezonePicker:b.default,Web:w()},mixins:[F.Z],inheritAttrs:!1,props:{clearable:{type:Boolean,default:!1},minuteStep:{type:Number,default:10},type:{type:String,default:"date"},format:{type:String,default:null},formatter:{type:Object,default:null},lang:{type:Object,default:null},value:{default:()=>new Date},timezoneId:{type:String,default:"UTC"},showTimezoneSelect:{type:Boolean,default:!1},highlightTimezone:{type:Boolean,default:!1},appendToBody:{type:Boolean,default:!1},showWeekNumber:{type:Boolean,default:!1},placeholder:{type:String,default:null}},emits:["update:value","update:timezone-id"],data(){return{showTimezonePopover:!1,tzVal:this.timezoneId}},computed:{defaultLang:()=>({formatLocale:{months:(0,S.getMonthNames)(),monthsShort:(0,S.getMonthNamesShort)(),weekdays:(0,S.getDayNames)(),weekdaysShort:(0,S.getDayNamesShort)(),weekdaysMin:(0,S.getDayNamesMin)(),firstDayOfWeek:(0,S.getFirstDay)()},monthFormat:"MMM"}),defaultPlaceholder(){return"time"===this.type?(0,A.t)("Pick a time"):"month"===this.type?(0,A.t)("Pick a month"):"year"===this.type?(0,A.t)("Pick a year"):"week"===this.type?(0,A.t)("Pick a week"):"date"===this.type?(0,A.t)("Pick a date"):(0,A.t)("Pick a date and a time")},formatTypeMap(){var e;return null!==(e=x[this.type])&&void 0!==e?e:x.date}},methods:{handleSelectYear(e){const t=this.$refs.datepicker.currentValue;if(t)try{const n=new Date(new Date(t).setFullYear(e));this.$refs.datepicker.selectDate(n)}catch(n){r.error("Invalid value",t,e)}},handleSelectMonth(e){const t=this.$refs.datepicker.currentValue;if(t)try{const n=new Date(new Date(t).setMonth(e));this.$refs.datepicker.selectDate(n)}catch(n){r.error("Invalid value",t,e)}},toggleTimezonePopover(){this.showTimezoneSelect&&(this.showTimezonePopover=!this.showTimezonePopover)}}};var O=a(6526),j={};j.styleTagTransform=g(),j.setAttributes=p(),j.insert=c().bind(null,"head"),j.domAPI=l(),j.insertStyleElement=m(),o()(O.Z,j),O.Z&&O.Z.locals&&O.Z.locals;var M=a(2618),R={};R.styleTagTransform=g(),R.setAttributes=p(),R.insert=c().bind(null,"head"),R.domAPI=l(),R.insertStyleElement=m(),o()(M.Z,R),M.Z&&M.Z.locals&&M.Z.locals;var P=a(1900),B=a(8538),L=a.n(B),z=(0,P.Z)(N,(function(){var e=this,t=e._self._c;return t("DatePicker",e._g(e._b({ref:"datepicker",attrs:{"append-to-body":e.appendToBody,clearable:e.clearable,format:e.format?e.format:e.formatTypeMap,formatter:e.formatter,lang:e.lang?e.lang:e.defaultLang,"minute-step":e.minuteStep,placeholder:e.placeholder?e.placeholder:e.defaultPlaceholder,"popup-class":{"show-week-number":e.showWeekNumber},"show-week-number":e.showWeekNumber,type:e.type,value:e.value},on:{"select-year":e.handleSelectYear,"select-month":e.handleSelectMonth,"update:value":function(t){return e.$emit("update:value",e.value)}},scopedSlots:e._u([{key:"icon-calendar",fn:function(){return[e.showTimezoneSelect?t("NcPopover",{attrs:{shown:e.showTimezonePopover,"popover-base-class":"timezone-select__popper"},on:{"update:shown":function(t){e.showTimezonePopover=t}},scopedSlots:e._u([{key:"trigger",fn:function(){return[t("button",{staticClass:"datetime-picker-inline-icon",class:{"datetime-picker-inline-icon--highlighted":e.highlightTimezone},on:{mousedown:function(e){return e.stopPropagation(),e.preventDefault(),(()=>{}).apply(null,arguments)}}},[t("Web",{attrs:{size:20}})],1)]},proxy:!0}],null,!1,3375037618)},[e._v(" "),t("div",{staticClass:"timezone-popover-wrapper__title"},[t("strong",[e._v("\n\t\t\t\t\t"+e._s(e.t("Please select a time zone:"))+"\n\t\t\t\t")])]),e._v(" "),t("NcTimezonePicker",{staticClass:"timezone-popover-wrapper__timezone-select",on:{input:function(t){return e.$emit("update:timezone-id",arguments[0])}},model:{value:e.tzVal,callback:function(t){e.tzVal=t},expression:"tzVal"}})],1):t("CalendarBlank",{attrs:{size:20}})]},proxy:!0},e._l(e.$scopedSlots,(function(t,n){return{key:n,fn:function(t){return[e._t(n,null,null,t)]}}}))],null,!0)},"DatePicker",e.$attrs,!1),e.$listeners))}),[],!1,null,"68e9c068",null);"function"==typeof L()&&L()(z);const I=z.exports;(0,a(7645).Z)(I);const Y=I},4378:(e,t,n)=>{"use strict";n.d(t,{default:()=>b});var a=n(281),r=n(1336);const i={name:"NcEllipsisedOption",components:{NcHighlight:a.default},props:{name:{type:String,default:""},search:{type:String,default:""}},computed:{needsTruncate(){return this.name&&this.name.length>=10},split(){return this.name.length-Math.min(Math.floor(this.name.length/2),10)},part1(){return this.needsTruncate?this.name.slice(0,this.split):this.name},part2(){return this.needsTruncate?this.name.slice(this.split):""},highlight1(){return this.search?(0,r.Z)(this.name,this.search):[]},highlight2(){return this.highlight1.map((e=>({start:e.start-this.split,end:e.end-this.split})))}}};var o=n(3379),s=n.n(o),l=n(7795),u=n.n(l),c=n(569),d=n.n(c),p=n(3565),h=n.n(p),m=n(9216),f=n.n(m),g=n(4589),v=n.n(g),_=n(436),A={};A.styleTagTransform=v(),A.setAttributes=h(),A.insert=d().bind(null,"head"),A.domAPI=u(),A.insertStyleElement=f(),s()(_.Z,A),_.Z&&_.Z.locals&&_.Z.locals;const b=(0,n(1900).Z)(i,(function(){var e=this,t=e._self._c;return t("span",{staticClass:"name-parts",attrs:{title:e.name}},[t("NcHighlight",{staticClass:"name-parts__first",attrs:{text:e.part1,search:e.search,highlight:e.highlight1}}),e._v(" "),e.part2?t("NcHighlight",{staticClass:"name-parts__last",attrs:{text:e.part2,search:e.search,highlight:e.highlight2}}):e._e()],1)}),[],!1,null,"3daafbe0",null).exports},281:(e,t,n)=>{"use strict";n.d(t,{default:()=>u});var a=n(1336);const r={name:"NcHighlight",props:{text:{type:String,default:""},search:{type:String,default:""},highlight:{type:Array,default:()=>[]}},computed:{ranges(){let e=[];return this.search||0!==this.highlight.length?(e=this.highlight.length>0?this.highlight:(0,a.Z)(this.text,this.search),e.forEach(((t,n)=>{t.end(t.start0&&e.push({start:t.start<0?0:t.start,end:t.end>this.text.length?this.text.length:t.end}),e)),[]),e.sort(((e,t)=>e.start-t.start)),e=e.reduce(((e,t)=>{if(e.length){const n=e.length-1;e[n].end>=t.start?e[n]={start:e[n].start,end:Math.max(e[n].end,t.end)}:e.push(t)}else e.push(t);return e}),[]),e):e},chunks(){if(0===this.ranges.length)return[{start:0,end:this.text.length,highlight:!1,text:this.text}];const e=[];let t=0,n=0;for(;t=this.ranges.length&&tt.highlight?e("strong",{},t.text):t.text))):e("span",{},this.text)}};var i=n(1900),o=n(6274),s=n.n(o),l=(0,i.Z)(r,void 0,void 0,!1,null,null,null);"function"==typeof s()&&s()(l);const u=l.exports},3458:(e,t,a)=>{"use strict";a.d(t,{default:()=>C});const r=n(62466),i={name:"NcIconSvgWrapper",props:{svg:{type:String,default:""},title:{type:String,default:""}},data:()=>({cleanSvg:""}),async beforeMount(){await this.sanitizeSVG()},methods:{async sanitizeSVG(){this.svg&&(this.cleanSvg=await(0,r.sanitizeSVG)(this.svg))}}};var o=a(3379),s=a.n(o),l=a(7795),u=a.n(l),c=a(569),d=a.n(c),p=a(3565),h=a.n(p),m=a(9216),f=a.n(m),g=a(4589),v=a.n(g),_=a(8973),A={};A.styleTagTransform=v(),A.setAttributes=h(),A.insert=d().bind(null,"head"),A.domAPI=u(),A.insertStyleElement=f(),s()(_.Z,A),_.Z&&_.Z.locals&&_.Z.locals;var b=a(1900),y=a(1287),F=a.n(y),T=(0,b.Z)(i,(function(){var e=this;return(0,e._self._c)("span",{staticClass:"icon-vue",attrs:{role:"img","aria-hidden":!e.title,"aria-label":e.title},domProps:{innerHTML:e._s(e.cleanSvg)}})}),[],!1,null,"a3da3488",null);"function"==typeof F()&&F()(T);const C=T.exports},6750:(e,t,n)=>{"use strict";n.d(t,{default:()=>S});var a=n(8091),r=n(281),i=n(3458),o=n(3351);const s={name:"NcListItemIcon",components:{NcAvatar:a.default,NcHighlight:r.default,NcIconSvgWrapper:i.default},mixins:[o.iQ],props:{title:{type:String,required:!0},subtitle:{type:String,default:""},icon:{type:String,default:""},iconSvg:{type:String,default:""},iconTitle:{type:String,default:""},search:{type:String,default:""},avatarSize:{type:Number,default:32},noMargin:{type:Boolean,default:!1},displayName:{type:String,default:null},isNoUser:{type:Boolean,default:!1},id:{type:String,default:null}},data:()=>({margin:8}),computed:{hasIcon(){return""!==this.icon},hasIconSvg(){return""!==this.iconSvg},isValidSubtitle(){var e,t;return""!==(null===(e=this.subtitle)||void 0===e||null===(t=e.trim)||void 0===t?void 0:t.call(e))},isSizeBigEnough(){return this.avatarSize>=32},cssVars(){const e=this.noMargin?0:this.margin;return{"--height":this.avatarSize+2*e+"px","--margin":this.margin+"px"}}},beforeMount(){this.isNoUser||this.subtitle||this.fetchUserStatus(this.user)}},l=s;var u=n(3379),c=n.n(u),d=n(7795),p=n.n(d),h=n(569),m=n.n(h),f=n(3565),g=n.n(f),v=n(9216),_=n.n(v),A=n(4589),b=n.n(A),y=n(808),F={};F.styleTagTransform=b(),F.setAttributes=g(),F.insert=m().bind(null,"head"),F.domAPI=p(),F.insertStyleElement=_(),c()(y.Z,F),y.Z&&y.Z.locals&&y.Z.locals;var T=n(1900),C=n(8488),k=n.n(C),w=(0,T.Z)(l,(function(){var e=this,t=e._self._c;return t("span",e._g({staticClass:"option",style:e.cssVars,attrs:{id:e.id}},e.$listeners),[t("NcAvatar",e._b({staticClass:"option__avatar",attrs:{"disable-menu":!0,"disable-tooltip":!0,"display-name":e.displayName||e.title,"is-no-user":e.isNoUser,size:e.avatarSize}},"NcAvatar",e.$attrs,!1)),e._v(" "),t("div",{staticClass:"option__details"},[t("NcHighlight",{staticClass:"option__lineone",attrs:{text:e.title,search:e.search}}),e._v(" "),e.isValidSubtitle&&e.isSizeBigEnough?t("NcHighlight",{staticClass:"option__linetwo",attrs:{text:e.subtitle,search:e.search}}):e.hasStatus?t("span",[t("span",[e._v(e._s(e.userStatus.icon))]),e._v(" "),t("span",[e._v(e._s(e.userStatus.message))])]):e._e()],1),e._v(" "),e._t("default",(function(){return[e.hasIconSvg?t("NcIconSvgWrapper",{staticClass:"option__icon",attrs:{svg:e.iconSvg,title:e.iconTitle}}):e.hasIcon?t("span",{staticClass:"icon option__icon",class:e.icon,attrs:{"aria-label":e.iconTitle}}):e._e()]}))],2)}),[],!1,null,"4f3daf70",null);"function"==typeof k()&&k()(w);const S=w.exports},5378:(e,t,n)=>{"use strict";n.d(t,{default:()=>F});const a={name:"NcLoadingIcon",props:{size:{type:Number,default:20},appearance:{type:String,validator:e=>["auto","light","dark"].includes(e),default:"auto"},title:{type:String,default:""}},computed:{colors(){const e=["#777","#CCC"];return"light"===this.appearance?e:"dark"===this.appearance?e.reverse():["var(--color-loading-light)","var(--color-loading-dark)"]}}};var r=n(3379),i=n.n(r),o=n(7795),s=n.n(o),l=n(569),u=n.n(l),c=n(3565),d=n.n(c),p=n(9216),h=n.n(p),m=n(4589),f=n.n(m),g=n(5030),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=u().bind(null,"head"),v.domAPI=s(),v.insertStyleElement=h(),i()(g.Z,v),g.Z&&g.Z.locals&&g.Z.locals;var _=n(1900),A=n(9280),b=n.n(A),y=(0,_.Z)(a,(function(){var e=this,t=e._self._c;return t("span",{staticClass:"material-design-icon loading-icon",attrs:{"aria-label":e.title,role:"img"}},[t("svg",{attrs:{width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{fill:e.colors[0],d:"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z"}}),e._v(" "),t("path",{attrs:{fill:e.colors[1],d:"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,"c4a9cada",null);"function"==typeof b()&&b()(y);const F=y.exports},8628:(e,t,a)=>{"use strict";a.d(t,{default:()=>F});const r=n(82640);var i=a.n(r);const o=n(32768);var s=a.n(o),l=a(9563),u=a(3465),c=a.n(u),d=a(768),p=a.n(d),h=a(733),m=a(4262),f=a(932),g=a(6115);const v={name:"NcPasswordField",components:{NcInputField:l.Z,Eye:i(),EyeOff:s()},inheritAttrs:!1,props:{...l.Z.props,helperText:{type:String,default:""},checkPasswordStrength:{type:Boolean,default:!1},minlength:{type:Number,default:0},maxlength:{type:Number,default:null},showTrailingButton:{type:Boolean,default:!0}},emits:["valid","invalid","update:value"],data:()=>({isPasswordHidden:!0,internalHelpMessage:"",passwordPolicy:(0,h.loadState)("core","capabilities",{}).password_policy||null,isValid:null}),computed:{computedError(){return this.error||!1===this.isValid},computedSuccess(){return this.success||!0===this.isValid},computedHelperText(){return this.helperText.length>0?this.helperText:this.internalHelpMessage},rules(){const{minlength:e,passwordPolicy:t}=this;return{minlength:null!=e?e:null==t?void 0:t.minLength}},trailingButtonLabelPassword(){return this.isPasswordHidden?(0,f.t)("Show password"):(0,f.t)("Hide password")}},watch:{value(e){if(this.checkPasswordStrength){if(null===this.passwordPolicy)return;this.passwordPolicy&&this.checkPassword(e)}}},methods:{focus(){this.$refs.inputField.focus()},select(){this.$refs.inputField.select()},handleInput(e){this.$emit("update:value",e.target.value)},togglePasswordVisibility(){this.isPasswordHidden=!this.isPasswordHidden},checkPassword:c()((async function(e){try{const{data:t}=await p().post((0,m.generateOcsUrl)("apps/password_policy/api/v1/validate"),{password:e});if(this.isValid=t.ocs.data.passed,t.ocs.data.passed)return this.internalHelpMessage=(0,f.t)("Password is secure"),void this.$emit("valid");this.internalHelpMessage=t.ocs.data.reason,this.$emit("invalid")}catch(e){g.Z.error("Password policy returned an error",e)}}),500)}};var _=a(1900),A=a(6239),b=a.n(A),y=(0,_.Z)(v,(function(){var e=this,t=e._self._c;return t("NcInputField",e._g(e._b({ref:"inputField",attrs:{type:e.isPasswordHidden?"password":"text","show-trailing-button":e.showTrailingButton&&!0,"trailing-button-label":e.trailingButtonLabelPassword,"helper-text":e.computedHelperText,error:e.computedError,success:e.computedSuccess,minlength:e.rules.minlength},on:{"trailing-button-click":e.togglePasswordVisibility,input:e.handleInput},scopedSlots:e._u([{key:"trailing-button-icon",fn:function(){return[e.isPasswordHidden?t("Eye",{attrs:{size:18}}):t("EyeOff",{attrs:{size:18}})]},proxy:!0}])},"NcInputField",{...e.$attrs,...e.$props},!1),e.$listeners),[e._t("default")],2)}),[],!1,null,null,null);"function"==typeof b()&&b()(y);const F=y.exports},2297:(e,t,n)=>{"use strict";n.d(t,{default:()=>S});var a=n(9454),i=n(4505),o=n(1206);const s={name:"NcPopover",components:{Dropdown:a.Dropdown},inheritAttrs:!1,props:{popoverBaseClass:{type:String,default:""},focusTrap:{type:Boolean,default:!0},setReturnFocus:{default:void 0,type:[HTMLElement,SVGElement,String,Boolean]}},emits:["after-show","after-hide"],beforeDestroy(){this.clearFocusTrap()},methods:{async useFocusTrap(){var e,t;if(await this.$nextTick(),!this.focusTrap)return;const n=null===(e=this.$refs.popover)||void 0===e||null===(t=e.$refs.popperContent)||void 0===t?void 0:t.$el;n&&(this.$focusTrap=(0,i.createFocusTrap)(n,{escapeDeactivates:!1,allowOutsideClick:!0,setReturnFocus:this.setReturnFocus,trapStack:(0,o.L)()}),this.$focusTrap.activate())},clearFocusTrap(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var t;null===(t=this.$focusTrap)||void 0===t||t.deactivate(e),this.$focusTrap=null}catch(e){r.warn(e)}},afterShow(){this.$nextTick((()=>{this.$emit("after-show"),this.useFocusTrap()}))},afterHide(){this.$emit("after-hide"),this.clearFocusTrap()}}},l=s;var u=n(3379),c=n.n(u),d=n(7795),p=n.n(d),h=n(569),m=n.n(h),f=n(3565),g=n.n(f),v=n(9216),_=n.n(v),A=n(4589),b=n.n(A),y=n(1625),F={};F.styleTagTransform=b(),F.setAttributes=g(),F.insert=m().bind(null,"head"),F.domAPI=p(),F.insertStyleElement=_(),c()(y.Z,F),y.Z&&y.Z.locals&&y.Z.locals;var T=n(1900),C=n(2405),k=n.n(C),w=(0,T.Z)(l,(function(){var e=this;return(0,e._self._c)("Dropdown",e._g(e._b({ref:"popover",attrs:{distance:10,"arrow-padding":10,"no-auto-focus":!0,"popper-class":e.popoverBaseClass},on:{"apply-show":e.afterShow,"apply-hide":e.afterHide},scopedSlots:e._u([{key:"popper",fn:function(){return[e._t("default")]},proxy:!0}],null,!0)},"Dropdown",e.$attrs,!1),e.$listeners),[e._t("trigger")],2)}),[],!1,null,null,null);"function"==typeof k()&&k()(w);const S=w.exports},306:(e,t,n)=>{"use strict";n.d(t,{default:()=>S});const a={name:"NcPopoverMenuItem",props:{item:{type:Object,required:!0,default:()=>({key:"nextcloud-link",href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}),validator:e=>!e.input||-1!==["text","checkbox"].indexOf(e.input)}},computed:{key(){return this.item.key?this.item.key:Math.round(16*Math.random()*1e6).toString(16)},iconIsUrl(){try{return new URL(this.item.icon),!0}catch(e){return!1}}},methods:{action(e){this.item.action&&this.item.action(e)}}};var r=n(3379),i=n.n(r),o=n(7795),s=n.n(o),l=n(569),u=n.n(l),c=n(3565),d=n.n(c),p=n(9216),h=n.n(p),m=n(4589),f=n.n(m),g=n(8369),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=u().bind(null,"head"),v.domAPI=s(),v.insertStyleElement=h(),i()(g.Z,v),g.Z&&g.Z.locals&&g.Z.locals;var _=n(408),A={};A.styleTagTransform=f(),A.setAttributes=d(),A.insert=u().bind(null,"head"),A.domAPI=s(),A.insertStyleElement=h(),i()(_.Z,A),_.Z&&_.Z.locals&&_.Z.locals;var b=n(1900);const y={name:"NcPopoverMenu",components:{NcPopoverMenuItem:(0,b.Z)(a,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"popover__menuitem"},[e.item.href?t("a",{staticClass:"focusable",attrs:{href:e.item.href?e.item.href:"#",target:e.item.target?e.item.target:"",download:e.item.download,rel:"nofollow noreferrer noopener"},on:{click:e.action}},[e.iconIsUrl?t("img",{attrs:{src:e.item.icon}}):t("span",{class:e.item.icon}),e._v(" "),e.item.text&&e.item.longtext?t("p",[t("strong",{staticClass:"menuitem-text"},[e._v("\n\t\t\t\t"+e._s(e.item.text)+"\n\t\t\t")]),t("br"),e._v(" "),t("span",{staticClass:"menuitem-text-detail"},[e._v("\n\t\t\t\t"+e._s(e.item.longtext)+"\n\t\t\t")])]):e.item.text?t("span",[e._v("\n\t\t\t"+e._s(e.item.text)+"\n\t\t")]):e.item.longtext?t("p",[e._v("\n\t\t\t"+e._s(e.item.longtext)+"\n\t\t")]):e._e()]):e.item.input?t("span",{staticClass:"menuitem",class:{active:e.item.active}},["checkbox"!==e.item.input?t("span",{class:e.item.icon}):e._e(),e._v(" "),"text"===e.item.input?t("form",{class:e.item.input,on:{submit:function(t){return t.preventDefault(),e.item.action.apply(null,arguments)}}},[t("input",{attrs:{type:e.item.input,placeholder:e.item.text,required:""},domProps:{value:e.item.value}}),e._v(" "),t("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]):["checkbox"===e.item.input?t("input",{directives:[{name:"model",rawName:"v-model",value:e.item.model,expression:"item.model"}],class:e.item.input,attrs:{id:e.key,type:"checkbox"},domProps:{checked:Array.isArray(e.item.model)?e._i(e.item.model,null)>-1:e.item.model},on:{change:[function(t){var n=e.item.model,a=t.target,r=!!a.checked;if(Array.isArray(n)){var i=e._i(n,null);a.checked?i<0&&e.$set(e.item,"model",n.concat([null])):i>-1&&e.$set(e.item,"model",n.slice(0,i).concat(n.slice(i+1)))}else e.$set(e.item,"model",r)},e.item.action]}}):"radio"===e.item.input?t("input",{directives:[{name:"model",rawName:"v-model",value:e.item.model,expression:"item.model"}],class:e.item.input,attrs:{id:e.key,type:"radio"},domProps:{checked:e._q(e.item.model,null)},on:{change:[function(t){return e.$set(e.item,"model",null)},e.item.action]}}):t("input",{directives:[{name:"model",rawName:"v-model",value:e.item.model,expression:"item.model"}],class:e.item.input,attrs:{id:e.key,type:e.item.input},domProps:{value:e.item.model},on:{change:e.item.action,input:function(t){t.target.composing||e.$set(e.item,"model",t.target.value)}}}),e._v(" "),t("label",{attrs:{for:e.key},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.item.action.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.item.text)+"\n\t\t\t")])]],2):e.item.action?t("button",{staticClass:"menuitem focusable",class:{active:e.item.active},attrs:{disabled:e.item.disabled,type:"button"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.item.action.apply(null,arguments)}}},[t("span",{class:e.item.icon}),e._v(" "),e.item.text&&e.item.longtext?t("p",[t("strong",{staticClass:"menuitem-text"},[e._v("\n\t\t\t\t"+e._s(e.item.text)+"\n\t\t\t")]),t("br"),e._v(" "),t("span",{staticClass:"menuitem-text-detail"},[e._v("\n\t\t\t\t"+e._s(e.item.longtext)+"\n\t\t\t")])]):e.item.text?t("span",[e._v("\n\t\t\t"+e._s(e.item.text)+"\n\t\t")]):e.item.longtext?t("p",[e._v("\n\t\t\t"+e._s(e.item.longtext)+"\n\t\t")]):e._e()]):t("span",{staticClass:"menuitem",class:{active:e.item.active}},[t("span",{class:e.item.icon}),e._v(" "),e.item.text&&e.item.longtext?t("p",[t("strong",{staticClass:"menuitem-text"},[e._v("\n\t\t\t\t"+e._s(e.item.text)+"\n\t\t\t")]),t("br"),e._v(" "),t("span",{staticClass:"menuitem-text-detail"},[e._v("\n\t\t\t\t"+e._s(e.item.longtext)+"\n\t\t\t")])]):e.item.text?t("span",[e._v("\n\t\t\t"+e._s(e.item.text)+"\n\t\t")]):e.item.longtext?t("p",[e._v("\n\t\t\t"+e._s(e.item.longtext)+"\n\t\t")]):e._e()])])}),[],!1,null,"127b0c62",null).exports},props:{menu:{type:Array,default:()=>[{href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}],required:!0}}};var F=n(2),T={};T.styleTagTransform=f(),T.setAttributes=d(),T.insert=u().bind(null,"head"),T.domAPI=s(),T.insertStyleElement=h(),i()(F.Z,T),F.Z&&F.Z.locals&&F.Z.locals;var C=n(1174),k=n.n(C),w=(0,b.Z)(y,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"popover__menu"},e._l(e.menu,(function(e,n){return t("NcPopoverMenuItem",{key:n,attrs:{item:e}})})),1)}),[],!1,null,"31ffd2d4",null);"function"==typeof k()&&k()(w);const S=w.exports},4196:(e,t,a)=>{"use strict";a.d(t,{default:()=>R});const r=n(29960);var i=a.n(r);n(65468);const o=n(11362);var s=a(4875),l=a.n(s),u=a(8618),c=a.n(u),d=a(4378),p=a(6750),h=a(5378),m=a(3648);const f={name:"NcSelect",components:{ChevronDown:l(),NcEllipsisedOption:d.default,NcListItemIcon:p.default,NcLoadingIcon:h.default,VueSelect:i()},mixins:[m.Z],props:{...i().props,appendToBody:{type:Boolean,default:!0},calculatePosition:{type:Function,default:null},closeOnSelect:{type:Boolean,default:!0},components:{type:Object,default:()=>({Deselect:{render:e=>e(c(),{props:{size:20,fillColor:"var(--vs-controls-color)"},style:{cursor:"pointer"}})}})},limit:{type:Number,default:null},disabled:{type:Boolean,default:!1},filterBy:{type:Function,default:null},inputClass:{type:[String,Object],default:null},inputId:{type:String,default:null},keyboardFocusBorder:{type:Boolean,default:!0},label:{type:String,default:null},loading:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},noWrap:{type:Boolean,default:!1},options:{type:Array,default:()=>[]},placeholder:{type:String,default:""},placement:{type:String,default:"bottom"},userSelect:{type:Boolean,default:!1},value:{type:[String,Number,Object,Array],default:null}," ":{}},emits:[" "],data:()=>({search:""}),computed:{localCalculatePosition(){return null!==this.calculatePosition?this.calculatePosition:(e,t,n)=>{let{width:a}=n;e.style.width=a;const r={name:"addClass",fn:t=>(e.classList.add("vs__dropdown-menu--floating"),{})},i={name:"togglePlacementClass",fn(n){let{placement:a}=n;return t.$el.classList.toggle("select--drop-up","top"===a),e.classList.toggle("vs__dropdown-menu--floating-placement-top","top"===a),{}}};return(0,o.autoUpdate)(t.$refs.toggle,e,(()=>{(0,o.computePosition)(t.$refs.toggle,e,{placement:this.placement,middleware:[(0,o.offset)(-1),r,i,(0,o.flip)(),(0,o.shift)({limiter:(0,o.limitShift)()})]}).then((t=>{let{x:n,y:a}=t;Object.assign(e.style,{left:"".concat(n,"px"),top:"".concat(a,"px")})}))}))}},localFilterBy(){return null!==this.filterBy?this.filterBy:this.userSelect?(e,t,n)=>("".concat(t," ").concat(e.subtitle)||"").toLocaleLowerCase().indexOf(n.toLocaleLowerCase())>-1:i().props.filterBy.default},localLabel(){return null!==this.label?this.label:this.userSelect?"displayName":i().props.label.default},propsToForward(){const{inputClass:e,noWrap:t,placement:n,userSelect:a,...r}=this.$props;return{...r,calculatePosition:this.localCalculatePosition,filterBy:this.localFilterBy,label:this.localLabel}}}},g=f;var v=a(3379),_=a.n(v),A=a(7795),b=a.n(A),y=a(569),F=a.n(y),T=a(3565),C=a.n(T),k=a(9216),w=a.n(k),S=a(4589),E=a.n(S),D=a(394),x={};x.styleTagTransform=E(),x.setAttributes=C(),x.insert=F().bind(null,"head"),x.domAPI=b(),x.insertStyleElement=w(),_()(D.Z,x),D.Z&&D.Z.locals&&D.Z.locals;var N=a(1900),O=a(8220),j=a.n(O),M=(0,N.Z)(g,(function(){var e=this,t=e._self._c;return t("VueSelect",e._g(e._b({staticClass:"select",class:{"select--no-wrap":e.noWrap},on:{search:t=>e.search=t},scopedSlots:e._u([{key:"search",fn:function(n){let{attributes:a,events:r}=n;return[t("input",e._g(e._b({class:["vs__search",e.inputClass]},"input",a,!1),r))]}},{key:"open-indicator",fn:function(n){let{attributes:a}=n;return[t("ChevronDown",e._b({attrs:{"fill-color":"var(--vs-controls-color)",size:26}},"ChevronDown",a,!1))]}},{key:"option",fn:function(n){return[e.userSelect?t("NcListItemIcon",e._b({attrs:{title:n[e.localLabel],search:e.search}},"NcListItemIcon",n,!1)):t("NcEllipsisedOption",{attrs:{name:String(n[e.localLabel]),search:e.search}})]}},{key:"selected-option",fn:function(n){return[e.userSelect?t("NcListItemIcon",e._b({attrs:{title:n[e.localLabel],search:e.search}},"NcListItemIcon",n,!1)):t("NcEllipsisedOption",{attrs:{name:String(n[e.localLabel]),search:e.search}})]}},{key:"spinner",fn:function(n){return[n.loading?t("NcLoadingIcon"):e._e()]}},{key:"no-options",fn:function(){return[e._v("\n\t\t"+e._s(e.t("No results"))+"\n\t")]},proxy:!0},e._l(e.$scopedSlots,(function(t,n){return{key:n,fn:function(t){return[e._t(n,null,null,t)]}}}))],null,!0)},"VueSelect",e.propsToForward,!1),e.$listeners))}),[],!1,null,null,null);"function"==typeof j()&&j()(M);const R=M.exports},6442:(e,t,a)=>{"use strict";a.d(t,{default:()=>v});var r=a(9563),i=a(8618),o=a.n(i),s=a(3875),l=a.n(s);const u=n(92425);var c=a.n(u),d=a(932);const p={name:"NcTextField",components:{NcInputField:r.Z,Close:o(),ArrowRight:l(),Undo:c()},inheritAttrs:!1,props:{...r.Z.props,trailingButtonIcon:{type:String,default:"close",validator:e=>["close","arrowRight","undo"].includes(e)}},emits:["update:value"],computed:{clearTextLabel(){return this.trailingButtonLabel||(0,d.t)("Clear text")}},methods:{focus(){this.$refs.inputField.focus()},select(){this.$refs.inputField.select()},handleInput(e){this.$emit("update:value",e.target.value)}}};var h=a(1900),m=a(5439),f=a.n(m),g=(0,h.Z)(p,(function(){var e=this,t=e._self._c;return t("NcInputField",e._g(e._b({ref:"inputField",attrs:{"trailing-button-label":e.clearTextLabel},on:{input:e.handleInput},scopedSlots:e._u(["search"!==e.type?{key:"trailing-button-icon",fn:function(){return["close"===e.trailingButtonIcon?t("Close",{attrs:{size:20}}):"arrowRight"===e.trailingButtonIcon?t("ArrowRight",{attrs:{size:20}}):"undo"===e.trailingButtonIcon?t("Undo",{attrs:{size:20}}):e._e()]},proxy:!0}:null],null,!0)},"NcInputField",{...e.$attrs,...e.$props},!1),e.$listeners),[e._t("default")],2)}),[],!1,null,null,null);"function"==typeof f()&&f()(g);const v=g.exports},2644:(e,t,a)=>{"use strict";a.d(t,{default:()=>f});var r=a(932);function i(e){return e.split("_").join(" ").replace("St ","St. ").split("/").join(" - ")}const o=JSON.parse('{"i8":"2.2019c","j3":{"AUS Central Standard Time":{"aliasTo":"Australia/Darwin"},"AUS Eastern Standard Time":{"aliasTo":"Australia/Sydney"},"Afghanistan Standard Time":{"aliasTo":"Asia/Kabul"},"Africa/Asmera":{"aliasTo":"Africa/Asmara"},"Africa/Timbuktu":{"aliasTo":"Africa/Bamako"},"Alaskan Standard Time":{"aliasTo":"America/Anchorage"},"America/Argentina/ComodRivadavia":{"aliasTo":"America/Argentina/Catamarca"},"America/Buenos_Aires":{"aliasTo":"America/Argentina/Buenos_Aires"},"America/Louisville":{"aliasTo":"America/Kentucky/Louisville"},"America/Montreal":{"aliasTo":"America/Toronto"},"America/Santa_Isabel":{"aliasTo":"America/Tijuana"},"Arab Standard Time":{"aliasTo":"Asia/Riyadh"},"Arabian Standard Time":{"aliasTo":"Asia/Dubai"},"Arabic Standard Time":{"aliasTo":"Asia/Baghdad"},"Argentina Standard Time":{"aliasTo":"America/Argentina/Buenos_Aires"},"Asia/Calcutta":{"aliasTo":"Asia/Kolkata"},"Asia/Katmandu":{"aliasTo":"Asia/Kathmandu"},"Asia/Rangoon":{"aliasTo":"Asia/Yangon"},"Asia/Saigon":{"aliasTo":"Asia/Ho_Chi_Minh"},"Atlantic Standard Time":{"aliasTo":"America/Halifax"},"Atlantic/Faeroe":{"aliasTo":"Atlantic/Faroe"},"Atlantic/Jan_Mayen":{"aliasTo":"Europe/Oslo"},"Azerbaijan Standard Time":{"aliasTo":"Asia/Baku"},"Azores Standard Time":{"aliasTo":"Atlantic/Azores"},"Bahia Standard Time":{"aliasTo":"America/Bahia"},"Bangladesh Standard Time":{"aliasTo":"Asia/Dhaka"},"Belarus Standard Time":{"aliasTo":"Europe/Minsk"},"Canada Central Standard Time":{"aliasTo":"America/Regina"},"Cape Verde Standard Time":{"aliasTo":"Atlantic/Cape_Verde"},"Caucasus Standard Time":{"aliasTo":"Asia/Yerevan"},"Cen. Australia Standard Time":{"aliasTo":"Australia/Adelaide"},"Central America Standard Time":{"aliasTo":"America/Guatemala"},"Central Asia Standard Time":{"aliasTo":"Asia/Almaty"},"Central Brazilian Standard Time":{"aliasTo":"America/Cuiaba"},"Central Europe Standard Time":{"aliasTo":"Europe/Budapest"},"Central European Standard Time":{"aliasTo":"Europe/Warsaw"},"Central Pacific Standard Time":{"aliasTo":"Pacific/Guadalcanal"},"Central Standard Time":{"aliasTo":"America/Chicago"},"Central Standard Time (Mexico)":{"aliasTo":"America/Mexico_City"},"China Standard Time":{"aliasTo":"Asia/Shanghai"},"E. Africa Standard Time":{"aliasTo":"Africa/Nairobi"},"E. Australia Standard Time":{"aliasTo":"Australia/Brisbane"},"E. South America Standard Time":{"aliasTo":"America/Sao_Paulo"},"Eastern Standard Time":{"aliasTo":"America/New_York"},"Egypt Standard Time":{"aliasTo":"Africa/Cairo"},"Ekaterinburg Standard Time":{"aliasTo":"Asia/Yekaterinburg"},"Etc/GMT":{"aliasTo":"UTC"},"Etc/GMT+0":{"aliasTo":"UTC"},"Etc/UCT":{"aliasTo":"UTC"},"Etc/UTC":{"aliasTo":"UTC"},"Etc/Unversal":{"aliasTo":"UTC"},"Etc/Zulu":{"aliasTo":"UTC"},"Europe/Belfast":{"aliasTo":"Europe/London"},"FLE Standard Time":{"aliasTo":"Europe/Kiev"},"Fiji Standard Time":{"aliasTo":"Pacific/Fiji"},"GMT":{"aliasTo":"UTC"},"GMT Standard Time":{"aliasTo":"Europe/London"},"GMT+0":{"aliasTo":"UTC"},"GMT0":{"aliasTo":"UTC"},"GTB Standard Time":{"aliasTo":"Europe/Bucharest"},"Georgian Standard Time":{"aliasTo":"Asia/Tbilisi"},"Greenland Standard Time":{"aliasTo":"America/Godthab"},"Greenwich":{"aliasTo":"UTC"},"Greenwich Standard Time":{"aliasTo":"Atlantic/Reykjavik"},"Hawaiian Standard Time":{"aliasTo":"Pacific/Honolulu"},"India Standard Time":{"aliasTo":"Asia/Calcutta"},"Iran Standard Time":{"aliasTo":"Asia/Tehran"},"Israel Standard Time":{"aliasTo":"Asia/Jerusalem"},"Jordan Standard Time":{"aliasTo":"Asia/Amman"},"Kaliningrad Standard Time":{"aliasTo":"Europe/Kaliningrad"},"Korea Standard Time":{"aliasTo":"Asia/Seoul"},"Libya Standard Time":{"aliasTo":"Africa/Tripoli"},"Line Islands Standard Time":{"aliasTo":"Pacific/Kiritimati"},"Magadan Standard Time":{"aliasTo":"Asia/Magadan"},"Mauritius Standard Time":{"aliasTo":"Indian/Mauritius"},"Middle East Standard Time":{"aliasTo":"Asia/Beirut"},"Montevideo Standard Time":{"aliasTo":"America/Montevideo"},"Morocco Standard Time":{"aliasTo":"Africa/Casablanca"},"Mountain Standard Time":{"aliasTo":"America/Denver"},"Mountain Standard Time (Mexico)":{"aliasTo":"America/Chihuahua"},"Myanmar Standard Time":{"aliasTo":"Asia/Rangoon"},"N. Central Asia Standard Time":{"aliasTo":"Asia/Novosibirsk"},"Namibia Standard Time":{"aliasTo":"Africa/Windhoek"},"Nepal Standard Time":{"aliasTo":"Asia/Katmandu"},"New Zealand Standard Time":{"aliasTo":"Pacific/Auckland"},"Newfoundland Standard Time":{"aliasTo":"America/St_Johns"},"North Asia East Standard Time":{"aliasTo":"Asia/Irkutsk"},"North Asia Standard Time":{"aliasTo":"Asia/Krasnoyarsk"},"Pacific SA Standard Time":{"aliasTo":"America/Santiago"},"Pacific Standard Time":{"aliasTo":"America/Los_Angeles"},"Pacific Standard Time (Mexico)":{"aliasTo":"America/Santa_Isabel"},"Pacific/Johnston":{"aliasTo":"Pacific/Honolulu"},"Pakistan Standard Time":{"aliasTo":"Asia/Karachi"},"Paraguay Standard Time":{"aliasTo":"America/Asuncion"},"Romance Standard Time":{"aliasTo":"Europe/Paris"},"Russia Time Zone 10":{"aliasTo":"Asia/Srednekolymsk"},"Russia Time Zone 11":{"aliasTo":"Asia/Kamchatka"},"Russia Time Zone 3":{"aliasTo":"Europe/Samara"},"Russian Standard Time":{"aliasTo":"Europe/Moscow"},"SA Eastern Standard Time":{"aliasTo":"America/Cayenne"},"SA Pacific Standard Time":{"aliasTo":"America/Bogota"},"SA Western Standard Time":{"aliasTo":"America/La_Paz"},"SE Asia Standard Time":{"aliasTo":"Asia/Bangkok"},"Samoa Standard Time":{"aliasTo":"Pacific/Apia"},"Singapore Standard Time":{"aliasTo":"Asia/Singapore"},"South Africa Standard Time":{"aliasTo":"Africa/Johannesburg"},"Sri Lanka Standard Time":{"aliasTo":"Asia/Colombo"},"Syria Standard Time":{"aliasTo":"Asia/Damascus"},"Taipei Standard Time":{"aliasTo":"Asia/Taipei"},"Tasmania Standard Time":{"aliasTo":"Australia/Hobart"},"Tokyo Standard Time":{"aliasTo":"Asia/Tokyo"},"Tonga Standard Time":{"aliasTo":"Pacific/Tongatapu"},"Turkey Standard Time":{"aliasTo":"Europe/Istanbul"},"UCT":{"aliasTo":"UTC"},"US Eastern Standard Time":{"aliasTo":"America/Indiana/Indianapolis"},"US Mountain Standard Time":{"aliasTo":"America/Phoenix"},"US/Central":{"aliasTo":"America/Chicago"},"US/Eastern":{"aliasTo":"America/New_York"},"US/Mountain":{"aliasTo":"America/Denver"},"US/Pacific":{"aliasTo":"America/Los_Angeles"},"US/Pacific-New":{"aliasTo":"America/Los_Angeles"},"Ulaanbaatar Standard Time":{"aliasTo":"Asia/Ulaanbaatar"},"Universal":{"aliasTo":"UTC"},"Venezuela Standard Time":{"aliasTo":"America/Caracas"},"Vladivostok Standard Time":{"aliasTo":"Asia/Vladivostok"},"W. Australia Standard Time":{"aliasTo":"Australia/Perth"},"W. Central Africa Standard Time":{"aliasTo":"Africa/Lagos"},"W. Europe Standard Time":{"aliasTo":"Europe/Berlin"},"West Asia Standard Time":{"aliasTo":"Asia/Tashkent"},"West Pacific Standard Time":{"aliasTo":"Pacific/Port_Moresby"},"Yakutsk Standard Time":{"aliasTo":"Asia/Yakutsk"},"Z":{"aliasTo":"UTC"},"Zulu":{"aliasTo":"UTC"},"utc":{"aliasTo":"UTC"}},"Ao":{"Africa/Abidjan":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0051900","longitude":"-0040200"},"Africa/Accra":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0053300","longitude":"+0001300"},"Africa/Addis_Ababa":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0090200","longitude":"+0384200"},"Africa/Algiers":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0364700","longitude":"+0030300"},"Africa/Asmara":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0152000","longitude":"+0385300"},"Africa/Bamako":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0123900","longitude":"-0080000"},"Africa/Bangui":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0042200","longitude":"+0183500"},"Africa/Banjul":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0132800","longitude":"-0163900"},"Africa/Bissau":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0115100","longitude":"-0153500"},"Africa/Blantyre":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0154700","longitude":"+0350000"},"Africa/Brazzaville":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0041600","longitude":"+0151700"},"Africa/Bujumbura":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0032300","longitude":"+0292200"},"Africa/Cairo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0300300","longitude":"+0311500"},"Africa/Casablanca":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:20180325T020000\\r\\nRDATE:20180325T020000\\r\\nRDATE:20180617T020000\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:20180513T030000\\r\\nRDATE:20180513T030000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:20190609T020000\\r\\nRDATE:20190609T020000\\r\\nRDATE:20200524T020000\\r\\nRDATE:20210516T020000\\r\\nRDATE:20220508T020000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:20181028T030000\\r\\nRDATE:20181028T030000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:20190505T030000\\r\\nRDATE:20190505T030000\\r\\nRDATE:20200419T030000\\r\\nRDATE:20210411T030000\\r\\nRDATE:20220327T030000\\r\\nEND:DAYLIGHT"],"latitude":"+0333900","longitude":"-0073500"},"Africa/Ceuta":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0355300","longitude":"-0051900"},"Africa/Conakry":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0093100","longitude":"-0134300"},"Africa/Dakar":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0144000","longitude":"-0172600"},"Africa/Dar_es_Salaam":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0064800","longitude":"+0391700"},"Africa/Djibouti":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0113600","longitude":"+0430900"},"Africa/Douala":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0040300","longitude":"+0094200"},"Africa/El_Aaiun":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:20180325T020000\\r\\nRDATE:20180325T020000\\r\\nRDATE:20180617T020000\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:20180513T030000\\r\\nRDATE:20180513T030000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:20181028T030000\\r\\nRDATE:20181028T030000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:20190505T030000\\r\\nRDATE:20190505T030000\\r\\nRDATE:20200419T030000\\r\\nRDATE:20210411T030000\\r\\nRDATE:20220327T030000\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:+01\\r\\nDTSTART:20190609T020000\\r\\nRDATE:20190609T020000\\r\\nRDATE:20200524T020000\\r\\nRDATE:20210516T020000\\r\\nRDATE:20220508T020000\\r\\nEND:STANDARD"],"latitude":"+0270900","longitude":"-0131200"},"Africa/Freetown":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0083000","longitude":"-0131500"},"Africa/Gaborone":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0243900","longitude":"+0255500"},"Africa/Harare":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0175000","longitude":"+0310300"},"Africa/Johannesburg":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0261500","longitude":"+0280000"},"Africa/Juba":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0045100","longitude":"+0313700"},"Africa/Kampala":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0001900","longitude":"+0322500"},"Africa/Khartoum":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0153600","longitude":"+0323200"},"Africa/Kigali":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0015700","longitude":"+0300400"},"Africa/Kinshasa":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0041800","longitude":"+0151800"},"Africa/Lagos":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0062700","longitude":"+0032400"},"Africa/Libreville":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0002300","longitude":"+0092700"},"Africa/Lome":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0060800","longitude":"+0011300"},"Africa/Luanda":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0084800","longitude":"+0131400"},"Africa/Lubumbashi":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0114000","longitude":"+0272800"},"Africa/Lusaka":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0152500","longitude":"+0281700"},"Africa/Malabo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0034500","longitude":"+0084700"},"Africa/Maputo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0255800","longitude":"+0323500"},"Africa/Maseru":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0292800","longitude":"+0273000"},"Africa/Mbabane":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:SAST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0261800","longitude":"+0310600"},"Africa/Mogadishu":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0020400","longitude":"+0452200"},"Africa/Monrovia":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0061800","longitude":"-0104700"},"Africa/Nairobi":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0011700","longitude":"+0364900"},"Africa/Ndjamena":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0120700","longitude":"+0150300"},"Africa/Niamey":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0133100","longitude":"+0020700"},"Africa/Nouakchott":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0180600","longitude":"-0155700"},"Africa/Ouagadougou":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0122200","longitude":"-0013100"},"Africa/Porto-Novo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0062900","longitude":"+0023700"},"Africa/Sao_Tome":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WAT\\r\\nDTSTART:20180101T010000\\r\\nRDATE:20180101T010000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:20190101T020000\\r\\nRDATE:20190101T020000\\r\\nEND:STANDARD"],"latitude":"+0002000","longitude":"+0064400"},"Africa/Tripoli":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0325400","longitude":"+0131100"},"Africa/Tunis":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0364800","longitude":"+0101100"},"Africa/Windhoek":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0223400","longitude":"+0170600"},"America/Adak":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:HDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0515248","longitude":"-1763929"},"America/Anchorage":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0611305","longitude":"-1495401"},"America/Anguilla":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0181200","longitude":"-0630400"},"America/Antigua":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0170300","longitude":"-0614800"},"America/Araguaina":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0071200","longitude":"-0481200"},"America/Argentina/Buenos_Aires":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0343600","longitude":"-0582700"},"America/Argentina/Catamarca":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0282800","longitude":"-0654700"},"America/Argentina/Cordoba":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0312400","longitude":"-0641100"},"America/Argentina/Jujuy":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0241100","longitude":"-0651800"},"America/Argentina/La_Rioja":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0292600","longitude":"-0665100"},"America/Argentina/Mendoza":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0325300","longitude":"-0684900"},"America/Argentina/Rio_Gallegos":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0513800","longitude":"-0691300"},"America/Argentina/Salta":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0244700","longitude":"-0652500"},"America/Argentina/San_Juan":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0313200","longitude":"-0683100"},"America/Argentina/San_Luis":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0331900","longitude":"-0662100"},"America/Argentina/Tucuman":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0264900","longitude":"-0651300"},"America/Argentina/Ushuaia":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0544800","longitude":"-0681800"},"America/Aruba":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0123000","longitude":"-0695800"},"America/Asuncion":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19701004T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700322T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=4SU\\r\\nEND:STANDARD"],"latitude":"-0251600","longitude":"-0574000"},"America/Atikokan":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0484531","longitude":"-0913718"},"America/Bahia":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0125900","longitude":"-0383100"},"America/Bahia_Banderas":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:DAYLIGHT"],"latitude":"+0204800","longitude":"-1051500"},"America/Barbados":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0130600","longitude":"-0593700"},"America/Belem":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0012700","longitude":"-0482900"},"America/Belize":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0173000","longitude":"-0881200"},"America/Blanc-Sablon":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0512500","longitude":"-0570700"},"America/Boa_Vista":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0024900","longitude":"-0604000"},"America/Bogota":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0043600","longitude":"-0740500"},"America/Boise":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0433649","longitude":"-1161209"},"America/Cambridge_Bay":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0690650","longitude":"-1050310"},"America/Campo_Grande":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:20181104T000000\\r\\nRDATE:20181104T000000\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:20180218T000000\\r\\nRDATE:20180218T000000\\r\\nRDATE:20190217T000000\\r\\nEND:STANDARD"],"latitude":"-0202700","longitude":"-0543700"},"America/Cancun":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0210500","longitude":"-0864600"},"America/Caracas":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0103000","longitude":"-0665600"},"America/Cayenne":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0045600","longitude":"-0522000"},"America/Cayman":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0191800","longitude":"-0812300"},"America/Chicago":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0415100","longitude":"-0873900"},"America/Chihuahua":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0283800","longitude":"-1060500"},"America/Costa_Rica":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0095600","longitude":"-0840500"},"America/Creston":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0490600","longitude":"-1163100"},"America/Cuiaba":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:20181104T000000\\r\\nRDATE:20181104T000000\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:20180218T000000\\r\\nRDATE:20180218T000000\\r\\nRDATE:20190217T000000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0153500","longitude":"-0560500"},"America/Curacao":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0121100","longitude":"-0690000"},"America/Danmarkshavn":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0764600","longitude":"-0184000"},"America/Dawson":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0640400","longitude":"-1392500"},"America/Dawson_Creek":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0594600","longitude":"-1201400"},"America/Denver":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0394421","longitude":"-1045903"},"America/Detroit":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0421953","longitude":"-0830245"},"America/Dominica":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0151800","longitude":"-0612400"},"America/Edmonton":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0533300","longitude":"-1132800"},"America/Eirunepe":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0064000","longitude":"-0695200"},"America/El_Salvador":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0134200","longitude":"-0891200"},"America/Fort_Nelson":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0584800","longitude":"-1224200"},"America/Fortaleza":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0034300","longitude":"-0383000"},"America/Glace_Bay":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0461200","longitude":"-0595700"},"America/Godthab":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700328T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=24,25,26,27,28,29,30;BYDAY=SA\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19701024T230000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=24,25,26,27,28,29,30;BYDAY=SA\\r\\nEND:STANDARD"],"latitude":"+0641100","longitude":"-0514400"},"America/Goose_Bay":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT"],"latitude":"+0532000","longitude":"-0602500"},"America/Grand_Turk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:20181104T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:20190310T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:20180311T020000\\r\\nRDATE:20180311T020000\\r\\nEND:DAYLIGHT"],"latitude":"+0212800","longitude":"-0710800"},"America/Grenada":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0120300","longitude":"-0614500"},"America/Guadeloupe":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0161400","longitude":"-0613200"},"America/Guatemala":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0143800","longitude":"-0903100"},"America/Guayaquil":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0021000","longitude":"-0795000"},"America/Guyana":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0064800","longitude":"-0581000"},"America/Halifax":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0443900","longitude":"-0633600"},"America/Havana":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT"],"latitude":"+0230800","longitude":"-0822200"},"America/Hermosillo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0290400","longitude":"-1105800"},"America/Indiana/Indianapolis":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0394606","longitude":"-0860929"},"America/Indiana/Knox":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0411745","longitude":"-0863730"},"America/Indiana/Marengo":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0382232","longitude":"-0862041"},"America/Indiana/Petersburg":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0382931","longitude":"-0871643"},"America/Indiana/Tell_City":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0375711","longitude":"-0864541"},"America/Indiana/Vevay":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0384452","longitude":"-0850402"},"America/Indiana/Vincennes":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0384038","longitude":"-0873143"},"America/Indiana/Winamac":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT"],"latitude":"+0410305","longitude":"-0863611"},"America/Inuvik":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0682059","longitude":"-1334300"},"America/Iqaluit":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0634400","longitude":"-0682800"},"America/Jamaica":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0175805","longitude":"-0764736"},"America/Juneau":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0581807","longitude":"-1342511"},"America/Kentucky/Louisville":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0381515","longitude":"-0854534"},"America/Kentucky/Monticello":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0364947","longitude":"-0845057"},"America/Kralendijk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0120903","longitude":"-0681636"},"America/La_Paz":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0163000","longitude":"-0680900"},"America/Lima":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0120300","longitude":"-0770300"},"America/Los_Angeles":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0340308","longitude":"-1181434"},"America/Lower_Princes":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0180305","longitude":"-0630250"},"America/Maceio":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0094000","longitude":"-0354300"},"America/Managua":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0120900","longitude":"-0861700"},"America/Manaus":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0030800","longitude":"-0600100"},"America/Marigot":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0180400","longitude":"-0630500"},"America/Martinique":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0143600","longitude":"-0610500"},"America/Matamoros":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0255000","longitude":"-0973000"},"America/Mazatlan":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0231300","longitude":"-1062500"},"America/Menominee":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0450628","longitude":"-0873651"},"America/Merida":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0205800","longitude":"-0893700"},"America/Metlakatla":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:20191103T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:20181104T020000\\r\\nRDATE:20181104T020000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:20190120T020000\\r\\nRDATE:20190120T020000\\r\\nEND:STANDARD"],"latitude":"+0550737","longitude":"-1313435"},"America/Mexico_City":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0192400","longitude":"-0990900"},"America/Miquelon":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0470300","longitude":"-0562000"},"America/Moncton":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0460600","longitude":"-0644700"},"America/Monterrey":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0254000","longitude":"-1001900"},"America/Montevideo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0345433","longitude":"-0561245"},"America/Montserrat":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0164300","longitude":"-0621300"},"America/Nassau":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0250500","longitude":"-0772100"},"America/New_York":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0404251","longitude":"-0740023"},"America/Nipigon":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0490100","longitude":"-0881600"},"America/Nome":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0643004","longitude":"-1652423"},"America/Noronha":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0035100","longitude":"-0322500"},"America/North_Dakota/Beulah":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0471551","longitude":"-1014640"},"America/North_Dakota/Center":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0470659","longitude":"-1011757"},"America/North_Dakota/New_Salem":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0465042","longitude":"-1012439"},"America/Ojinaga":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0293400","longitude":"-1042500"},"America/Panama":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0085800","longitude":"-0793200"},"America/Pangnirtung":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0660800","longitude":"-0654400"},"America/Paramaribo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0055000","longitude":"-0551000"},"America/Phoenix":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0332654","longitude":"-1120424"},"America/Port-au-Prince":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0183200","longitude":"-0722000"},"America/Port_of_Spain":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0103900","longitude":"-0613100"},"America/Porto_Velho":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0084600","longitude":"-0635400"},"America/Puerto_Rico":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0182806","longitude":"-0660622"},"America/Punta_Arenas":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0530900","longitude":"-0705500"},"America/Rainy_River":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0484300","longitude":"-0943400"},"America/Rankin_Inlet":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0624900","longitude":"-0920459"},"America/Recife":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0080300","longitude":"-0345400"},"America/Regina":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0502400","longitude":"-1043900"},"America/Resolute":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT"],"latitude":"+0744144","longitude":"-0944945"},"America/Rio_Branco":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0095800","longitude":"-0674800"},"America/Santarem":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0022600","longitude":"-0545200"},"America/Santiago":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:20190407T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:20190908T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:20180812T000000\\r\\nRDATE:20180812T000000\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:-04\\r\\nDTSTART:20180513T000000\\r\\nRDATE:20180513T000000\\r\\nEND:STANDARD"],"latitude":"-0332700","longitude":"-0704000"},"America/Santo_Domingo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0182800","longitude":"-0695400"},"America/Sao_Paulo":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:20181104T000000\\r\\nRDATE:20181104T000000\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:20180218T000000\\r\\nRDATE:20180218T000000\\r\\nRDATE:20190217T000000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:DAYLIGHT"],"latitude":"-0233200","longitude":"-0463700"},"America/Scoresbysund":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19700329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19701025T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0702900","longitude":"-0215800"},"America/Sitka":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0571035","longitude":"-1351807"},"America/St_Barthelemy":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0175300","longitude":"-0625100"},"America/St_Johns":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0230\\r\\nTZOFFSETTO:-0330\\r\\nTZNAME:NST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0330\\r\\nTZOFFSETTO:-0230\\r\\nTZNAME:NDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT"],"latitude":"+0473400","longitude":"-0524300"},"America/St_Kitts":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0171800","longitude":"-0624300"},"America/St_Lucia":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0140100","longitude":"-0610000"},"America/St_Thomas":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0182100","longitude":"-0645600"},"America/St_Vincent":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0130900","longitude":"-0611400"},"America/Swift_Current":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0501700","longitude":"-1075000"},"America/Tegucigalpa":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0140600","longitude":"-0871300"},"America/Thule":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0763400","longitude":"-0684700"},"America/Thunder_Bay":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0482300","longitude":"-0891500"},"America/Tijuana":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0323200","longitude":"-1170100"},"America/Toronto":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:EDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:EST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0433900","longitude":"-0792300"},"America/Tortola":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0182700","longitude":"-0643700"},"America/Vancouver":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0491600","longitude":"-1230700"},"America/Whitehorse":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:PDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:PST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0604300","longitude":"-1350300"},"America/Winnipeg":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:CDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:CST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0495300","longitude":"-0970900"},"America/Yakutat":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:AKDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:AKST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0593249","longitude":"-1394338"},"America/Yellowknife":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0700\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:MDT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0700\\r\\nTZNAME:MST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0622700","longitude":"-1142100"},"Antarctica/Casey":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:20180311T040000\\r\\nRDATE:20180311T040000\\r\\nEND:STANDARD"],"latitude":"-0661700","longitude":"+1103100"},"Antarctica/Davis":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0683500","longitude":"+0775800"},"Antarctica/DumontDUrville":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0664000","longitude":"+1400100"},"Antarctica/Macquarie":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0543000","longitude":"+1585700"},"Antarctica/Mawson":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0673600","longitude":"+0625300"},"Antarctica/McMurdo":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:NZDT\\r\\nDTSTART:19700927T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:NZST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"-0775000","longitude":"+1663600"},"Antarctica/Palmer":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0644800","longitude":"-0640600"},"Antarctica/Rothera":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0673400","longitude":"-0680800"},"Antarctica/Syowa":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0690022","longitude":"+0393524"},"Antarctica/Troll":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:+02\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"-0720041","longitude":"+0023206"},"Antarctica/Vostok":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0782400","longitude":"+1065400"},"Arctic/Longyearbyen":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0780000","longitude":"+0160000"},"Asia/Aden":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0124500","longitude":"+0451200"},"Asia/Almaty":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0431500","longitude":"+0765700"},"Asia/Amman":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700326T235959\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1TH\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701030T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR\\r\\nEND:STANDARD"],"latitude":"+0315700","longitude":"+0355600"},"Asia/Anadyr":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0644500","longitude":"+1772900"},"Asia/Aqtau":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0443100","longitude":"+0501600"},"Asia/Aqtobe":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0501700","longitude":"+0571000"},"Asia/Ashgabat":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0375700","longitude":"+0582300"},"Asia/Atyrau":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0470700","longitude":"+0515600"},"Asia/Baghdad":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0332100","longitude":"+0442500"},"Asia/Bahrain":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0262300","longitude":"+0503500"},"Asia/Baku":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0402300","longitude":"+0495100"},"Asia/Bangkok":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0134500","longitude":"+1003100"},"Asia/Barnaul":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0532200","longitude":"+0834500"},"Asia/Beirut":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0335300","longitude":"+0353000"},"Asia/Bishkek":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0425400","longitude":"+0743600"},"Asia/Brunei":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0045600","longitude":"+1145500"},"Asia/Chita":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0520300","longitude":"+1132800"},"Asia/Choibalsan":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0480400","longitude":"+1143000"},"Asia/Colombo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0530\\r\\nTZOFFSETTO:+0530\\r\\nTZNAME:+0530\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0065600","longitude":"+0795100"},"Asia/Damascus":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701030T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700327T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\\r\\nEND:DAYLIGHT"],"latitude":"+0333000","longitude":"+0361800"},"Asia/Dhaka":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0234300","longitude":"+0902500"},"Asia/Dili":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0083300","longitude":"+1253500"},"Asia/Dubai":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0251800","longitude":"+0551800"},"Asia/Dushanbe":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0383500","longitude":"+0684800"},"Asia/Famagusta":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:20180325T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT"],"latitude":"+0350700","longitude":"+0335700"},"Asia/Gaza":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701031T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:20190329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\\r\\nEND:DAYLIGHT","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:20180324T010000\\r\\nRDATE:20180324T010000\\r\\nEND:DAYLIGHT"],"latitude":"+0313000","longitude":"+0342800"},"Asia/Hebron":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701031T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:20190329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\\r\\nEND:DAYLIGHT","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:20180324T010000\\r\\nRDATE:20180324T010000\\r\\nEND:DAYLIGHT"],"latitude":"+0313200","longitude":"+0350542"},"Asia/Ho_Chi_Minh":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0104500","longitude":"+1064000"},"Asia/Hong_Kong":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:HKT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0221700","longitude":"+1140900"},"Asia/Hovd":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0480100","longitude":"+0913900"},"Asia/Irkutsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0521600","longitude":"+1042000"},"Asia/Istanbul":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0410100","longitude":"+0285800"},"Asia/Jakarta":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:WIB\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0061000","longitude":"+1064800"},"Asia/Jayapura":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:WIT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0023200","longitude":"+1404200"},"Asia/Jerusalem":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:IDT\\r\\nDTSTART:19700327T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=23,24,25,26,27,28,29;BYDAY=FR\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:IST\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0314650","longitude":"+0351326"},"Asia/Kabul":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0430\\r\\nTZOFFSETTO:+0430\\r\\nTZNAME:+0430\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0343100","longitude":"+0691200"},"Asia/Kamchatka":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0530100","longitude":"+1583900"},"Asia/Karachi":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:PKT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0245200","longitude":"+0670300"},"Asia/Kathmandu":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0545\\r\\nTZOFFSETTO:+0545\\r\\nTZNAME:+0545\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0274300","longitude":"+0851900"},"Asia/Khandyga":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0623923","longitude":"+1353314"},"Asia/Kolkata":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0530\\r\\nTZOFFSETTO:+0530\\r\\nTZNAME:IST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0223200","longitude":"+0882200"},"Asia/Krasnoyarsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0560100","longitude":"+0925000"},"Asia/Kuala_Lumpur":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0031000","longitude":"+1014200"},"Asia/Kuching":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0013300","longitude":"+1102000"},"Asia/Kuwait":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0292000","longitude":"+0475900"},"Asia/Macau":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0221150","longitude":"+1133230"},"Asia/Magadan":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0593400","longitude":"+1504800"},"Asia/Makassar":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:WITA\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0050700","longitude":"+1192400"},"Asia/Manila":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:PST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0143500","longitude":"+1210000"},"Asia/Muscat":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0233600","longitude":"+0583500"},"Asia/Nicosia":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT"],"latitude":"+0351000","longitude":"+0332200"},"Asia/Novokuznetsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0534500","longitude":"+0870700"},"Asia/Novosibirsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0550200","longitude":"+0825500"},"Asia/Omsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0550000","longitude":"+0732400"},"Asia/Oral":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0511300","longitude":"+0512100"},"Asia/Phnom_Penh":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0113300","longitude":"+1045500"},"Asia/Pontianak":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:WIB\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0000200","longitude":"+1092000"},"Asia/Pyongyang":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0830\\r\\nTZNAME:KST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0830\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:KST\\r\\nDTSTART:20180504T233000\\r\\nRDATE:20180504T233000\\r\\nEND:STANDARD"],"latitude":"+0390100","longitude":"+1254500"},"Asia/Qatar":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0251700","longitude":"+0513200"},"Asia/Qostanay":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0531200","longitude":"+0633700"},"Asia/Qyzylorda":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:20181221T000000\\r\\nRDATE:20181221T000000\\r\\nEND:STANDARD"],"latitude":"+0444800","longitude":"+0652800"},"Asia/Riyadh":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0243800","longitude":"+0464300"},"Asia/Sakhalin":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0465800","longitude":"+1424200"},"Asia/Samarkand":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0394000","longitude":"+0664800"},"Asia/Seoul":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:KST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0373300","longitude":"+1265800"},"Asia/Shanghai":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0311400","longitude":"+1212800"},"Asia/Singapore":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0011700","longitude":"+1035100"},"Asia/Srednekolymsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0672800","longitude":"+1534300"},"Asia/Taipei":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:CST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0250300","longitude":"+1213000"},"Asia/Tashkent":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0412000","longitude":"+0691800"},"Asia/Tbilisi":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0414300","longitude":"+0444900"},"Asia/Tehran":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0330\\r\\nTZNAME:+0330\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0330\\r\\nTZOFFSETTO:+0430\\r\\nTZNAME:+0430\\r\\nDTSTART:20180321T235959\\r\\nRDATE:20180321T235959\\r\\nRDATE:20190321T235959\\r\\nRDATE:20200320T235959\\r\\nRDATE:20210321T235959\\r\\nRDATE:20220321T235959\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0430\\r\\nTZOFFSETTO:+0330\\r\\nTZNAME:+0330\\r\\nDTSTART:20180921T235959\\r\\nRDATE:20180921T235959\\r\\nRDATE:20190921T235959\\r\\nRDATE:20200920T235959\\r\\nRDATE:20210921T235959\\r\\nRDATE:20220921T235959\\r\\nEND:STANDARD"],"latitude":"+0354000","longitude":"+0512600"},"Asia/Thimphu":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0272800","longitude":"+0893900"},"Asia/Tokyo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:JST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0353916","longitude":"+1394441"},"Asia/Tomsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0563000","longitude":"+0845800"},"Asia/Ulaanbaatar":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:+08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0475500","longitude":"+1065300"},"Asia/Urumqi":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0434800","longitude":"+0873500"},"Asia/Ust-Nera":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0643337","longitude":"+1431336"},"Asia/Vientiane":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0175800","longitude":"+1023600"},"Asia/Vladivostok":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0431000","longitude":"+1315600"},"Asia/Yakutsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0620000","longitude":"+1294000"},"Asia/Yangon":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0630\\r\\nTZOFFSETTO:+0630\\r\\nTZNAME:+0630\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0164700","longitude":"+0961000"},"Asia/Yekaterinburg":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0565100","longitude":"+0603600"},"Asia/Yerevan":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0401100","longitude":"+0443000"},"Atlantic/Azores":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:+00\\r\\nDTSTART:19700329T000000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19701025T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0374400","longitude":"-0254000"},"Atlantic/Bermuda":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0400\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:ADT\\r\\nDTSTART:19700308T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0400\\r\\nTZNAME:AST\\r\\nDTSTART:19701101T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"+0321700","longitude":"-0644600"},"Atlantic/Canary":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0280600","longitude":"-0152400"},"Atlantic/Cape_Verde":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0100\\r\\nTZOFFSETTO:-0100\\r\\nTZNAME:-01\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0145500","longitude":"-0233100"},"Atlantic/Faroe":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0620100","longitude":"-0064600"},"Atlantic/Madeira":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0323800","longitude":"-0165400"},"Atlantic/Reykjavik":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0640900","longitude":"-0215100"},"Atlantic/South_Georgia":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0200\\r\\nTZOFFSETTO:-0200\\r\\nTZNAME:-02\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0541600","longitude":"-0363200"},"Atlantic/St_Helena":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0155500","longitude":"-0054200"},"Atlantic/Stanley":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0300\\r\\nTZOFFSETTO:-0300\\r\\nTZNAME:-03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0514200","longitude":"-0575100"},"Australia/Adelaide":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT"],"latitude":"-0345500","longitude":"+1383500"},"Australia/Brisbane":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0272800","longitude":"+1530200"},"Australia/Broken_Hill":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:ACDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT"],"latitude":"-0315700","longitude":"+1412700"},"Australia/Currie":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"-0395600","longitude":"+1435200"},"Australia/Darwin":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0930\\r\\nTZOFFSETTO:+0930\\r\\nTZNAME:ACST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0122800","longitude":"+1305000"},"Australia/Eucla":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0845\\r\\nTZOFFSETTO:+0845\\r\\nTZNAME:+0845\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0314300","longitude":"+1285200"},"Australia/Hobart":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"-0425300","longitude":"+1471900"},"Australia/Lindeman":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0201600","longitude":"+1490000"},"Australia/Lord_Howe":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1030\\r\\nTZNAME:+1030\\r\\nDTSTART:19700405T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1030\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT"],"latitude":"-0313300","longitude":"+1590500"},"Australia/Melbourne":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT"],"latitude":"-0374900","longitude":"+1445800"},"Australia/Perth":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0800\\r\\nTZOFFSETTO:+0800\\r\\nTZNAME:AWST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0315700","longitude":"+1155100"},"Australia/Sydney":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:AEST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:AEDT\\r\\nDTSTART:19701004T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT"],"latitude":"-0335200","longitude":"+1511300"},"Europe/Amsterdam":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0522200","longitude":"+0045400"},"Europe/Andorra":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0423000","longitude":"+0013100"},"Europe/Astrakhan":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0462100","longitude":"+0480300"},"Europe/Athens":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0375800","longitude":"+0234300"},"Europe/Belgrade":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0445000","longitude":"+0203000"},"Europe/Berlin":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0523000","longitude":"+0132200"},"Europe/Bratislava":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0480900","longitude":"+0170700"},"Europe/Brussels":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0505000","longitude":"+0042000"},"Europe/Bucharest":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0442600","longitude":"+0260600"},"Europe/Budapest":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0473000","longitude":"+0190500"},"Europe/Busingen":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0474200","longitude":"+0084100"},"Europe/Chisinau":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0470000","longitude":"+0285000"},"Europe/Copenhagen":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0554000","longitude":"+0123500"},"Europe/Dublin":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:IST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:DAYLIGHT"],"latitude":"+0532000","longitude":"-0061500"},"Europe/Gibraltar":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0360800","longitude":"-0052100"},"Europe/Guernsey":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0492717","longitude":"-0023210"},"Europe/Helsinki":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0601000","longitude":"+0245800"},"Europe/Isle_of_Man":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0540900","longitude":"-0042800"},"Europe/Istanbul":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0410100","longitude":"+0285800"},"Europe/Jersey":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0491101","longitude":"-0020624"},"Europe/Kaliningrad":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0544300","longitude":"+0203000"},"Europe/Kiev":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0502600","longitude":"+0303100"},"Europe/Kirov":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0583600","longitude":"+0493900"},"Europe/Lisbon":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:WET\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:WEST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT"],"latitude":"+0384300","longitude":"-0090800"},"Europe/Ljubljana":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0460300","longitude":"+0143100"},"Europe/London":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0000\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:BST\\r\\nDTSTART:19700329T010000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0000\\r\\nTZNAME:GMT\\r\\nDTSTART:19701025T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0513030","longitude":"+0000731"},"Europe/Luxembourg":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0493600","longitude":"+0060900"},"Europe/Madrid":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0402400","longitude":"-0034100"},"Europe/Malta":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0355400","longitude":"+0143100"},"Europe/Mariehamn":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0600600","longitude":"+0195700"},"Europe/Minsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0535400","longitude":"+0273400"},"Europe/Monaco":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0434200","longitude":"+0072300"},"Europe/Moscow":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0554521","longitude":"+0373704"},"Europe/Nicosia":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT"],"latitude":"+0351000","longitude":"+0332200"},"Europe/Oslo":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0595500","longitude":"+0104500"},"Europe/Paris":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0485200","longitude":"+0022000"},"Europe/Podgorica":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0422600","longitude":"+0191600"},"Europe/Prague":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0500500","longitude":"+0142600"},"Europe/Riga":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0565700","longitude":"+0240600"},"Europe/Rome":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0415400","longitude":"+0122900"},"Europe/Samara":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0531200","longitude":"+0500900"},"Europe/San_Marino":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0435500","longitude":"+0122800"},"Europe/Sarajevo":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0435200","longitude":"+0182500"},"Europe/Saratov":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0513400","longitude":"+0460200"},"Europe/Simferopol":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:MSK\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0445700","longitude":"+0340600"},"Europe/Skopje":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0415900","longitude":"+0212600"},"Europe/Sofia":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0424100","longitude":"+0231900"},"Europe/Stockholm":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0592000","longitude":"+0180300"},"Europe/Tallinn":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0592500","longitude":"+0244500"},"Europe/Tirane":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0412000","longitude":"+0195000"},"Europe/Ulyanovsk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0542000","longitude":"+0482400"},"Europe/Uzhgorod":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0483700","longitude":"+0221800"},"Europe/Vaduz":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0470900","longitude":"+0093100"},"Europe/Vatican":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0415408","longitude":"+0122711"},"Europe/Vienna":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0481300","longitude":"+0162000"},"Europe/Vilnius":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0544100","longitude":"+0251900"},"Europe/Volgograd":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:20181028T020000\\r\\nRDATE:20181028T020000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:+03\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0484400","longitude":"+0442500"},"Europe/Warsaw":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0521500","longitude":"+0210000"},"Europe/Zagreb":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0454800","longitude":"+0155800"},"Europe/Zaporozhye":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EEST\\r\\nDTSTART:19700329T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:EET\\r\\nDTSTART:19701025T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0475000","longitude":"+0351000"},"Europe/Zurich":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+0100\\r\\nTZOFFSETTO:+0200\\r\\nTZNAME:CEST\\r\\nDTSTART:19700329T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0200\\r\\nTZOFFSETTO:+0100\\r\\nTZNAME:CET\\r\\nDTSTART:19701025T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\\r\\nEND:STANDARD"],"latitude":"+0472300","longitude":"+0083200"},"Indian/Antananarivo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0185500","longitude":"+0473100"},"Indian/Chagos":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0600\\r\\nTZOFFSETTO:+0600\\r\\nTZNAME:+06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0072000","longitude":"+0722500"},"Indian/Christmas":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0700\\r\\nTZOFFSETTO:+0700\\r\\nTZNAME:+07\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0102500","longitude":"+1054300"},"Indian/Cocos":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0630\\r\\nTZOFFSETTO:+0630\\r\\nTZNAME:+0630\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0121000","longitude":"+0965500"},"Indian/Comoro":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0114100","longitude":"+0431600"},"Indian/Kerguelen":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0492110","longitude":"+0701303"},"Indian/Mahe":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0044000","longitude":"+0552800"},"Indian/Maldives":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0500\\r\\nTZOFFSETTO:+0500\\r\\nTZNAME:+05\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0041000","longitude":"+0733000"},"Indian/Mauritius":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0201000","longitude":"+0573000"},"Indian/Mayotte":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0300\\r\\nTZOFFSETTO:+0300\\r\\nTZNAME:EAT\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0124700","longitude":"+0451400"},"Indian/Reunion":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0400\\r\\nTZOFFSETTO:+0400\\r\\nTZNAME:+04\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0205200","longitude":"+0552800"},"Pacific/Apia":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1400\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700405T040000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1400\\r\\nTZNAME:+14\\r\\nDTSTART:19700927T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT"],"latitude":"-0135000","longitude":"-1714400"},"Pacific/Auckland":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:NZDT\\r\\nDTSTART:19700927T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:NZST\\r\\nDTSTART:19700405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"-0365200","longitude":"+1744600"},"Pacific/Bougainville":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0061300","longitude":"+1553400"},"Pacific/Chatham":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1245\\r\\nTZOFFSETTO:+1345\\r\\nTZNAME:+1345\\r\\nDTSTART:19700927T024500\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1345\\r\\nTZOFFSETTO:+1245\\r\\nTZNAME:+1245\\r\\nDTSTART:19700405T034500\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD"],"latitude":"-0435700","longitude":"-1763300"},"Pacific/Chuuk":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0072500","longitude":"+1514700"},"Pacific/Easter":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:20190406T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:20190907T220000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0500\\r\\nTZNAME:-05\\r\\nDTSTART:20180811T220000\\r\\nRDATE:20180811T220000\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0500\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:20180512T220000\\r\\nRDATE:20180512T220000\\r\\nEND:STANDARD"],"latitude":"-0270900","longitude":"-1092600"},"Pacific/Efate":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0174000","longitude":"+1682500"},"Pacific/Enderbury":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0030800","longitude":"-1710500"},"Pacific/Fakaofo":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0092200","longitude":"-1711400"},"Pacific/Fiji":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700118T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=12,13,14,15,16,17,18;BYDAY=SU\\r\\nEND:STANDARD","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:20191110T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=2SU\\r\\nEND:DAYLIGHT","BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:20181104T020000\\r\\nRDATE:20181104T020000\\r\\nEND:DAYLIGHT"],"latitude":"-0180800","longitude":"+1782500"},"Pacific/Funafuti":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0083100","longitude":"+1791300"},"Pacific/Galapagos":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0600\\r\\nTZOFFSETTO:-0600\\r\\nTZNAME:-06\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0005400","longitude":"-0893600"},"Pacific/Gambier":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0900\\r\\nTZOFFSETTO:-0900\\r\\nTZNAME:-09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0230800","longitude":"-1345700"},"Pacific/Guadalcanal":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0093200","longitude":"+1601200"},"Pacific/Guam":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:ChST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0132800","longitude":"+1444500"},"Pacific/Honolulu":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:HST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0211825","longitude":"-1575130"},"Pacific/Kiritimati":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1400\\r\\nTZOFFSETTO:+1400\\r\\nTZNAME:+14\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0015200","longitude":"-1572000"},"Pacific/Kosrae":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0051900","longitude":"+1625900"},"Pacific/Kwajalein":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0090500","longitude":"+1672000"},"Pacific/Majuro":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0070900","longitude":"+1711200"},"Pacific/Marquesas":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0930\\r\\nTZOFFSETTO:-0930\\r\\nTZNAME:-0930\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0090000","longitude":"-1393000"},"Pacific/Midway":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0281300","longitude":"-1772200"},"Pacific/Nauru":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0003100","longitude":"+1665500"},"Pacific/Niue":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:-11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0190100","longitude":"-1695500"},"Pacific/Norfolk":{"ics":["BEGIN:DAYLIGHT\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:20191006T020000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\\r\\nEND:DAYLIGHT","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:20200405T030000\\r\\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1130\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD","BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:20190701T000000\\r\\nRDATE:20190701T000000\\r\\nEND:STANDARD"],"latitude":"-0290300","longitude":"+1675800"},"Pacific/Noumea":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0221600","longitude":"+1662700"},"Pacific/Pago_Pago":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1100\\r\\nTZOFFSETTO:-1100\\r\\nTZNAME:SST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0141600","longitude":"-1704200"},"Pacific/Palau":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+0900\\r\\nTZOFFSETTO:+0900\\r\\nTZNAME:+09\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0072000","longitude":"+1342900"},"Pacific/Pitcairn":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-0800\\r\\nTZOFFSETTO:-0800\\r\\nTZNAME:-08\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0250400","longitude":"-1300500"},"Pacific/Pohnpei":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1100\\r\\nTZOFFSETTO:+1100\\r\\nTZNAME:+11\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0065800","longitude":"+1581300"},"Pacific/Port_Moresby":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:+10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0093000","longitude":"+1471000"},"Pacific/Rarotonga":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:-10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0211400","longitude":"-1594600"},"Pacific/Saipan":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1000\\r\\nTZOFFSETTO:+1000\\r\\nTZNAME:ChST\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0151200","longitude":"+1454500"},"Pacific/Tahiti":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:-1000\\r\\nTZOFFSETTO:-1000\\r\\nTZNAME:-10\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0173200","longitude":"-1493400"},"Pacific/Tarawa":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0012500","longitude":"+1730000"},"Pacific/Tongatapu":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1300\\r\\nTZOFFSETTO:+1300\\r\\nTZNAME:+13\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0211000","longitude":"-1751000"},"Pacific/Wake":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"+0191700","longitude":"+1663700"},"Pacific/Wallis":{"ics":["BEGIN:STANDARD\\r\\nTZOFFSETFROM:+1200\\r\\nTZOFFSETTO:+1200\\r\\nTZNAME:+12\\r\\nDTSTART:19700101T000000\\r\\nEND:STANDARD"],"latitude":"-0131800","longitude":"-1761000"}}}');var s=a(6115);const l=(0,n(11278).ko)();let u=!1;const c={name:"NcTimezonePicker",components:{NcSelect:a(4196).default},props:{additionalTimezones:{type:Array,default:()=>[]},value:{type:String,default:"floating"}},emits:["input"],computed:{placeholder:()=>(0,r.t)("Type to search time zone"),selectedTimezone(){for(const e of this.additionalTimezones)if(e.timezoneId===this.value)return e;return{label:i(this.value),timezoneId:this.value}},options(){const e=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const n={},a=[];for(const t of e){const e=t.split("/");let[a,o]=[e.shift(),e.join("/")];o||(o=a,a=(0,r.t)("Global")),n[a]=n[a]||{continent:a,regions:[]},n[a].regions.push({label:i(o),cities:[],timezoneId:t})}for(const e of t){const{continent:t,label:a,timezoneId:r}=e;n[t]=n[t]||{continent:t,regions:[]},n[t].regions.push({label:a,cities:[],timezoneId:r})}for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&(n[e].regions.sort(((e,t)=>e.labele.continent{t.push({label:e.continent,timezoneId:"tz-group__".concat(e.continent),regions:e.regions}),t=t.concat(e.regions)})),t}},methods:{change(e){e&&this.$emit("input",e.timezoneId)},isSelectable:e=>!e.timezoneId.startsWith("tz-group__"),filterBy(e,t,n){const a=n.trim().split(" ");return e.timezoneId.startsWith("tz-group__")?e.regions.some((e=>this.matchTimezoneId(e.timezoneId,a))):this.matchTimezoneId(e.timezoneId,a)},matchTimezoneId:(e,t)=>t.every((t=>e.toLowerCase().includes(t.toLowerCase())))}};var d=a(1900),p=a(189),h=a.n(p),m=(0,d.Z)(c,(function(){var e=this;return(0,e._self._c)("NcSelect",{attrs:{value:e.selectedTimezone,options:e.options,multiple:!1,clearable:!1,placeholder:e.placeholder,selectable:e.isSelectable,"filter-by":e.filterBy,label:"label"},on:{"option:selected":e.change}})}),[],!1,null,null,null);"function"==typeof h()&&h()(m);const f=m.exports},7993:(e,t,a)=>{"use strict";a.d(t,{default:()=>s});var r=a(6609);const i=n(2568);var o=a.n(i);const s=function(e){let t=e.toLowerCase();return null===t.match(/^([0-9a-f]{4}-?){8}$/)&&(t=o()(t)),t=t.replace(/[^0-9a-f]/g,""),(0,r.Z)(6)[function(e,t){let n=0;const a=[];for(let t=0;t{"use strict";n.d(t,{n:()=>i,t:()=>o});const a=(0,n(7931).getGettextBuilder)().detectLocale();[{locale:"ar",translations:{"{tag} (invisible)":"{tag} (غير مرئي)","{tag} (restricted)":"{tag} (مقيد)",Actions:"الإجراءات",Activities:"النشاطات","Animals & Nature":"الحيوانات والطبيعة","Anything shared with the same group of people will show up here":"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا","Avatar of {displayName}":"صورة {displayName} الرمزية","Avatar of {displayName}, {status}":"صورة {displayName} الرمزية، {status}","Cancel changes":"إلغاء التغييرات","Change title":"تغيير العنوان",Choose:"إختيار","Clear text":"مسح النص",Close:"أغلق","Close modal":"قفل الشرط","Close navigation":"إغلاق المتصفح","Close sidebar":"قفل الشريط الجانبي","Confirm changes":"تأكيد التغييرات",Custom:"مخصص","Edit item":"تعديل عنصر","Error getting related resources":"خطأ في تحصيل مصادر ذات صلة","External documentation for {title}":"الوثائق الخارجية لـ{title}",Favorite:"مفضلة",Flags:"الأعلام","Food & Drink":"الطعام والشراب","Frequently used":"كثيرا ما تستخدم",Global:"عالمي","Go back to the list":"العودة إلى القائمة","Hide password":"إخفاء كلمة السر","Message limit of {count} characters reached":"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف","More items …":"عناصر أخرى ...",Next:"التالي","No emoji found":"لم يتم العثور على أي رمز تعبيري","No results":"ليس هناك أية نتيجة",Objects:"الأشياء",Open:"فتح",'Open link to "{resourceTitle}"':'فتح رابط إلى "{resourceTitle}"',"Open navigation":"فتح المتصفح","Password is secure":"كلمة السر مُؤمّنة","Pause slideshow":"إيقاف العرض مؤقتًا","People & Body":"الناس والجسم","Pick an emoji":"اختر رمزًا تعبيريًا","Please select a time zone:":"الرجاء تحديد المنطقة الزمنية:",Previous:"السابق","Related resources":"مصادر ذات صلة",Search:"بحث","Search results":"نتائج البحث","Select a tag":"اختر علامة",Settings:"الإعدادات","Settings navigation":"إعدادات المتصفح","Show password":"أعرض كلمة السر","Smileys & Emotion":"الوجوه و الرموز التعبيرية","Start slideshow":"بدء العرض",Submit:"إرسال",Symbols:"الرموز","Travel & Places":"السفر والأماكن","Type to search time zone":"اكتب للبحث عن منطقة زمنية","Unable to search the group":"تعذر البحث في المجموعة","Undo changes":"التراجع عن التغييرات","Write message, @ to mention someone, : for emoji autocompletion …":"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ..."}},{locale:"br",translations:{"{tag} (invisible)":"{tag} (diwelus)","{tag} (restricted)":"{tag} (bevennet)",Actions:"Oberioù",Activities:"Oberiantizoù","Animals & Nature":"Loened & Natur",Choose:"Dibab",Close:"Serriñ",Custom:"Personelañ",Flags:"Bannieloù","Food & Drink":"Boued & Evajoù","Frequently used":"Implijet alies",Next:"Da heul","No emoji found":"Emoji ebet kavet","No results":"Disoc'h ebet",Objects:"Traoù","Pause slideshow":"Arsav an diaporama","People & Body":"Tud & Korf","Pick an emoji":"Choaz un emoji",Previous:"A-raok",Search:"Klask","Search results":"Disoc'hoù an enklask","Select a tag":"Choaz ur c'hlav",Settings:"Arventennoù","Smileys & Emotion":"Smileyioù & Fromoù","Start slideshow":"Kregiñ an diaporama",Symbols:"Arouezioù","Travel & Places":"Beaj & Lec'hioù","Unable to search the group":"Dibosupl eo klask ar strollad"}},{locale:"ca",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringit)",Actions:"Accions",Activities:"Activitats","Animals & Nature":"Animals i natura","Anything shared with the same group of people will show up here":"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancel·la els canvis","Change title":"Canviar títol",Choose:"Tria","Clear text":"Netejar text",Close:"Tanca","Close modal":"Tancar el mode","Close navigation":"Tanca la navegació","Close sidebar":"Tancar la barra lateral","Confirm changes":"Confirmeu els canvis",Custom:"Personalitzat","Edit item":"Edita l'element","Error getting related resources":"Error obtenint els recursos relacionats","Error parsing svg":"Error en l'anàlisi del svg","External documentation for {title}":"Documentació externa per a {title}",Favorite:"Preferit",Flags:"Marques","Food & Drink":"Menjar i begudes","Frequently used":"Utilitzats recentment",Global:"Global","Go back to the list":"Torna a la llista","Hide password":"Amagar contrasenya","Message limit of {count} characters reached":"S'ha arribat al límit de {count} caràcters per missatge","More items …":"Més artícles...",Next:"Següent","No emoji found":"No s'ha trobat cap emoji","No results":"Sense resultats",Objects:"Objectes",Open:"Obrir",'Open link to "{resourceTitle}"':'Obrir enllaç a "{resourceTitle}"',"Open navigation":"Obre la navegació","Password is secure":"Contrasenya segura
","Pause slideshow":"Atura la presentació","People & Body":"Persones i cos","Pick an emoji":"Trieu un emoji","Please select a time zone:":"Seleccioneu una zona horària:",Previous:"Anterior","Related resources":"Recursos relacionats",Search:"Cerca","Search results":"Resultats de cerca","Select a tag":"Seleccioneu una etiqueta",Settings:"Paràmetres","Settings navigation":"Navegació d'opcions","Show password":"Mostrar contrasenya","Smileys & Emotion":"Cares i emocions","Start slideshow":"Inicia la presentació",Submit:"Envia",Symbols:"Símbols","Travel & Places":"Viatges i llocs","Type to search time zone":"Escriviu per cercar la zona horària","Unable to search the group":"No es pot cercar el grup","Undo changes":"Desfés els canvis",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escriu missatge, fes servir "@" per esmentar algú, fes servir ":" per autocompletar emojis...'}},{locale:"cs_CZ",translations:{"{tag} (invisible)":"{tag} (neviditelné)","{tag} (restricted)":"{tag} (omezené)",Actions:"Akce",Activities:"Aktivity","Animals & Nature":"Zvířata a příroda","Anything shared with the same group of people will show up here":"Cokoli nasdíleného stejné skupině lidí se zobrazí zde","Avatar of {displayName}":"Zástupný obrázek uživatele {displayName}","Avatar of {displayName}, {status}":"Zástupný obrázek uživatele {displayName}, {status}","Cancel changes":"Zrušit změny","Change title":"Změnit nadpis",Choose:"Zvolit","Clear text":"Čitelný text",Close:"Zavřít","Close modal":"Zavřít dialogové okno","Close navigation":"Zavřít navigaci","Close sidebar":"Zavřít postranní panel","Confirm changes":"Potvrdit změny",Custom:"Uživatelsky určené","Edit item":"Upravit položku","Error getting related resources":"Chyba při získávání souvisejících prostředků","Error parsing svg":"Chyba při zpracovávání svg","External documentation for {title}":"Externí dokumentace k {title}",Favorite:"Oblíbené",Flags:"Příznaky","Food & Drink":"Jídlo a pití","Frequently used":"Často používané",Global:"Globální","Go back to the list":"Jít zpět na seznam","Hide password":"Skrýt heslo","Message limit of {count} characters reached":"Dosaženo limitu počtu ({count}) znaků zprávy","More items …":"Další položky…",Next:"Následující","No emoji found":"Nenalezeno žádné emoji","No results":"Nic nenalezeno",Objects:"Objekty",Open:"Otevřít",'Open link to "{resourceTitle}"':"Otevřít odkaz na „{resourceTitle}“","Open navigation":"Otevřít navigaci","Password is secure":"Heslo je bezpečné","Pause slideshow":"Pozastavit prezentaci","People & Body":"Lidé a tělo","Pick an emoji":"Vybrat emoji","Please select a time zone:":"Vyberte časovou zónu:",Previous:"Předchozí","Related resources":"Související prostředky",Search:"Hledat","Search results":"Výsledky hledání","Select a tag":"Vybrat štítek",Settings:"Nastavení","Settings navigation":"Pohyb po nastavení","Show password":"Zobrazit heslo","Smileys & Emotion":"Úsměvy a emoce","Start slideshow":"Spustit prezentaci",Submit:"Odeslat",Symbols:"Symboly","Travel & Places":"Cestování a místa","Type to search time zone":"Psaním vyhledejte časovou zónu","Unable to search the group":"Nedaří se hledat skupinu","Undo changes":"Vzít změny zpět",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…"}},{locale:"da",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (begrænset)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr & Natur","Anything shared with the same group of people will show up here":"Alt der deles med samme gruppe af personer vil vises her","Avatar of {displayName}":"Avatar af {displayName}","Avatar of {displayName}, {status}":"Avatar af {displayName}, {status}","Cancel changes":"Annuller ændringer","Change title":"Ret titel",Choose:"Vælg","Clear text":"Ryd tekst",Close:"Luk","Close modal":"Luk vindue","Close navigation":"Luk navigation","Close sidebar":"Luk sidepanel","Confirm changes":"Bekræft ændringer",Custom:"Brugerdefineret","Edit item":"Rediger emne","Error getting related resources":"Kunne ikke hente tilknyttede data","Error parsing svg":"Fejl ved analysering af svg","External documentation for {title}":"Ekstern dokumentation for {title}",Favorite:"Favorit",Flags:"Flag","Food & Drink":"Mad & Drikke","Frequently used":"Ofte brugt",Global:"Global","Go back to the list":"Tilbage til listen","Hide password":"Skjul kodeord","Message limit of {count} characters reached":"Begrænsning på {count} tegn er nået","More items …":"Mere ...",Next:"Videre","No emoji found":"Ingen emoji fundet","No results":"Ingen resultater",Objects:"Objekter",Open:"Åbn",'Open link to "{resourceTitle}"':'Åbn link til "{resourceTitle}"',"Open navigation":"Åbn navigation","Password is secure":"Kodeordet er sikkert","Pause slideshow":"Suspender fremvisning","People & Body":"Mennesker & Menneskekroppen","Pick an emoji":"Vælg en emoji","Please select a time zone:":"Vælg venligst en tidszone:",Previous:"Forrige","Related resources":"Relaterede emner",Search:"Søg","Search results":"Søgeresultater","Select a tag":"Vælg et mærke",Settings:"Indstillinger","Settings navigation":"Naviger i indstillinger","Show password":"Vis kodeord","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start fremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Rejser & Rejsemål","Type to search time zone":"Indtast for at søge efter tidszone","Unable to search the group":"Kan ikke søge på denne gruppe","Undo changes":"Fortryd ændringer",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv besked, brug "@" for at nævne nogen, brug ":" til emoji-autofuldførelse ...'}},{locale:"de",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Anything shared with the same group of people will show up here":"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","Error parsing svg":"Fehler beim Einlesen der SVG","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Gegenstände",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte wählen Sie eine Zeitzone:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um Zeitzone zu suchen","Unable to search the group":"Die Gruppe konnte nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Nachricht schreiben, "@" um jemanden zu erwähnen, ":" für die automatische Vervollständigung von Emojis …'}},{locale:"de_DE",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Anything shared with the same group of people will show up here":"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","Error parsing svg":"Fehler beim Einlesen der SVG","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Objekte",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte eine Zeitzone auswählen:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um eine Zeitzone zu suchen","Unable to search the group":"Die Gruppe kann nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Nachricht schreiben, "@" um jemanden zu erwähnen, ":" für die automatische Vervollständigung von Emojis …'}},{locale:"el",translations:{"{tag} (invisible)":"{tag} (αόρατο)","{tag} (restricted)":"{tag} (περιορισμένο)",Actions:"Ενέργειες",Activities:"Δραστηριότητες","Animals & Nature":"Ζώα & Φύση","Anything shared with the same group of people will show up here":"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ","Avatar of {displayName}":"Άβαταρ του {displayName}","Avatar of {displayName}, {status}":"Άβαταρ του {displayName}, {status}","Cancel changes":"Ακύρωση αλλαγών","Change title":"Αλλαγή τίτλου",Choose:"Επιλογή","Clear text":"Εκκαθάριση κειμένου",Close:"Κλείσιμο","Close modal":"Βοηθητικό κλείσιμο","Close navigation":"Κλείσιμο πλοήγησης","Close sidebar":"Κλείσιμο πλευρικής μπάρας","Confirm changes":"Επιβεβαίωση αλλαγών",Custom:"Προσαρμογή","Edit item":"Επεξεργασία","Error getting related resources":"Σφάλμα λήψης σχετικών πόρων","Error parsing svg":"Σφάλμα ανάλυσης svg","External documentation for {title}":"Εξωτερική τεκμηρίωση για {title}",Favorite:"Αγαπημένα",Flags:"Σημαίες","Food & Drink":"Φαγητό & Ποτό","Frequently used":"Συχνά χρησιμοποιούμενο",Global:"Καθολικό","Go back to the list":"Επιστροφή στην αρχική λίστα ","Hide password":"Απόκρυψη κωδικού πρόσβασης","Message limit of {count} characters reached":"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος","More items …":"Περισσότερα στοιχεία …",Next:"Επόμενο","No emoji found":"Δεν βρέθηκε emoji","No results":"Κανένα αποτέλεσμα",Objects:"Αντικείμενα",Open:"Άνοιγμα",'Open link to "{resourceTitle}"':'Άνοιγμα συνδέσμου στο "{resourceTitle}"',"Open navigation":"Άνοιγμα πλοήγησης","Password is secure":"Ο κωδικός πρόσβασης είναι ασφαλής","Pause slideshow":"Παύση προβολής διαφανειών","People & Body":"Άνθρωποι & Σώμα","Pick an emoji":"Επιλέξτε ένα emoji","Please select a time zone:":"Παρακαλούμε επιλέξτε μια ζώνη ώρας:",Previous:"Προηγούμενο","Related resources":"Σχετικοί πόροι",Search:"Αναζήτηση","Search results":"Αποτελέσματα αναζήτησης","Select a tag":"Επιλογή ετικέτας",Settings:"Ρυθμίσεις","Settings navigation":"Πλοήγηση ρυθμίσεων","Show password":"Εμφάνιση κωδικού πρόσβασης","Smileys & Emotion":"Φατσούλες & Συναίσθημα","Start slideshow":"Έναρξη προβολής διαφανειών",Submit:"Υποβολή",Symbols:"Σύμβολα","Travel & Places":"Ταξίδια & Τοποθεσίες","Type to search time zone":"Πληκτρολογήστε για αναζήτηση ζώνης ώρας","Unable to search the group":"Δεν είναι δυνατή η αναζήτηση της ομάδας","Undo changes":"Αναίρεση Αλλαγών",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε "@" για να αναφέρετε κάποιον, χρησιμοποιείστε ":" για αυτόματη συμπλήρωση emoji …'}},{locale:"en_GB",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restricted)",Actions:"Actions",Activities:"Activities","Animals & Nature":"Animals & Nature","Anything shared with the same group of people will show up here":"Anything shared with the same group of people will show up here","Avatar of {displayName}":"Avatar of {displayName}","Avatar of {displayName}, {status}":"Avatar of {displayName}, {status}","Cancel changes":"Cancel changes","Change title":"Change title",Choose:"Choose","Clear text":"Clear text",Close:"Close","Close modal":"Close modal","Close navigation":"Close navigation","Close sidebar":"Close sidebar","Confirm changes":"Confirm changes",Custom:"Custom","Edit item":"Edit item","Error getting related resources":"Error getting related resources","Error parsing svg":"Error parsing svg","External documentation for {title}":"External documentation for {title}",Favorite:"Favourite",Flags:"Flags","Food & Drink":"Food & Drink","Frequently used":"Frequently used",Global:"Global","Go back to the list":"Go back to the list","Hide password":"Hide password","Message limit of {count} characters reached":"Message limit of {count} characters reached","More items …":"More items …",Next:"Next","No emoji found":"No emoji found","No results":"No results",Objects:"Objects",Open:"Open",'Open link to "{resourceTitle}"':'Open link to "{resourceTitle}"',"Open navigation":"Open navigation","Password is secure":"Password is secure","Pause slideshow":"Pause slideshow","People & Body":"People & Body","Pick an emoji":"Pick an emoji","Please select a time zone:":"Please select a time zone:",Previous:"Previous","Related resources":"Related resources",Search:"Search","Search results":"Search results","Select a tag":"Select a tag",Settings:"Settings","Settings navigation":"Settings navigation","Show password":"Show password","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start slideshow",Submit:"Submit",Symbols:"Symbols","Travel & Places":"Travel & Places","Type to search time zone":"Type to search time zone","Unable to search the group":"Unable to search the group","Undo changes":"Undo changes",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Write message, use "@" to mention someone, use ":" for emoji autocompletion …'}},{locale:"eo",translations:{"{tag} (invisible)":"{tag} (kaŝita)","{tag} (restricted)":"{tag} (limigita)",Actions:"Agoj",Activities:"Aktiveco","Animals & Nature":"Bestoj & Naturo",Choose:"Elektu",Close:"Fermu",Custom:"Propra",Flags:"Flagoj","Food & Drink":"Manĝaĵo & Trinkaĵo","Frequently used":"Ofte uzataj","Message limit of {count} characters reached":"La limo je {count} da literoj atingita",Next:"Sekva","No emoji found":"La emoĝio forestas","No results":"La rezulto forestas",Objects:"Objektoj","Pause slideshow":"Payzi bildprezenton","People & Body":"Homoj & Korpo","Pick an emoji":"Elekti emoĝion ",Previous:"Antaŭa",Search:"Serĉi","Search results":"Serĉrezultoj","Select a tag":"Elektu etikedon",Settings:"Agordo","Settings navigation":"Agorda navigado","Smileys & Emotion":"Ridoj kaj Emocioj","Start slideshow":"Komenci bildprezenton",Symbols:"Signoj","Travel & Places":"Vojaĵoj & Lokoj","Unable to search the group":"Ne eblas serĉi en la grupo","Write message, @ to mention someone …":"Mesaĝi, uzu @ por mencii iun ..."}},{locale:"es",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringido)",Actions:"Acciones",Activities:"Actividades","Animals & Nature":"Animales y naturaleza","Anything shared with the same group of people will show up here":"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar cambios","Change title":"Cambiar título",Choose:"Elegir","Clear text":"Limpiar texto",Close:"Cerrar","Close modal":"Cerrar modal","Close navigation":"Cerrar navegación","Close sidebar":"Cerrar barra lateral","Confirm changes":"Confirmar cambios",Custom:"Personalizado","Edit item":"Editar elemento","Error getting related resources":"Se encontró un error al obtener los recursos relacionados","Error parsing svg":"Error procesando svg","External documentation for {title}":"Documentacion externa de {title}",Favorite:"Favorito",Flags:"Banderas","Food & Drink":"Comida y bebida","Frequently used":"Usado con frecuenca",Global:"Global","Go back to the list":"Volver a la lista","Hide password":"Ocultar contraseña","Message limit of {count} characters reached":"El mensaje ha alcanzado el límite de {count} caracteres","More items …":"Más ítems...",Next:"Siguiente","No emoji found":"No hay ningún emoji","No results":" Ningún resultado",Objects:"Objetos",Open:"Abrir",'Open link to "{resourceTitle}"':'Abrir enlace a "{resourceTitle}"',"Open navigation":"Abrir navegación","Password is secure":"La contraseña es segura","Pause slideshow":"Pausar la presentación ","People & Body":"Personas y cuerpos","Pick an emoji":"Elegir un emoji","Please select a time zone:":"Por favor elige un huso de horario:",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Buscar","Search results":"Resultados de la búsqueda","Select a tag":"Seleccione una etiqueta",Settings:"Ajustes","Settings navigation":"Navegación por ajustes","Show password":"Mostrar contraseña","Smileys & Emotion":"Smileys y emoticonos","Start slideshow":"Iniciar la presentación",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viajes y lugares","Type to search time zone":"Escribe para buscar un huso de horario","Unable to search the group":"No es posible buscar en el grupo","Undo changes":"Deshacer cambios",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escribir mensaje, utilice "@" para mencionar a alguien, utilice ":" para autocompletado de emojis ...'}},{locale:"eu",translations:{"{tag} (invisible)":"{tag} (ikusezina)","{tag} (restricted)":"{tag} (mugatua)",Actions:"Ekintzak",Activities:"Jarduerak","Animals & Nature":"Animaliak eta Natura","Anything shared with the same group of people will show up here":"Pertsona-talde berarekin partekatutako edozer agertuko da hemen","Avatar of {displayName}":"{displayName}-(e)n irudia","Avatar of {displayName}, {status}":"{displayName} -(e)n irudia, {status}","Cancel changes":"Ezeztatu aldaketak","Change title":"Aldatu titulua",Choose:"Aukeratu","Clear text":"Garbitu testua",Close:"Itxi","Close modal":"Itxi modala","Close navigation":"Itxi nabigazioa","Close sidebar":"Itxi albo-barra","Confirm changes":"Baieztatu aldaketak",Custom:"Pertsonalizatua","Edit item":"Editatu elementua","Error getting related resources":"Errorea erlazionatutako baliabideak lortzerakoan","Error parsing svg":"Errore bat gertatu da svg-a analizatzean","External documentation for {title}":"Kanpoko dokumentazioa {title}(r)entzat",Favorite:"Gogokoa",Flags:"Banderak","Food & Drink":"Janaria eta edariak","Frequently used":"Askotan erabilia",Global:"Globala","Go back to the list":"Bueltatu zerrendara","Hide password":"Ezkutatu pasahitza","Message limit of {count} characters reached":"Mezuaren {count} karaketere-limitera heldu zara","More items …":"Elementu gehiago …",Next:"Hurrengoa","No emoji found":"Ez da emojirik aurkitu","No results":"Emaitzarik ez",Objects:"Objektuak",Open:"Ireki",'Open link to "{resourceTitle}"':'Ireki esteka: "{resourceTitle}"',"Open navigation":"Ireki nabigazioa","Password is secure":"Pasahitza segurua da","Pause slideshow":"Pausatu diaporama","People & Body":"Jendea eta gorputza","Pick an emoji":"Hautatu emoji bat","Please select a time zone:":"Mesedez hautatu ordu-zona bat:",Previous:"Aurrekoa","Related resources":"Erlazionatutako baliabideak",Search:"Bilatu","Search results":"Bilaketa emaitzak","Select a tag":"Hautatu etiketa bat",Settings:"Ezarpenak","Settings navigation":"Nabigazio ezarpenak","Show password":"Erakutsi pasahitza","Smileys & Emotion":"Smileyak eta emozioa","Start slideshow":"Hasi diaporama",Submit:"Bidali",Symbols:"Sinboloak","Travel & Places":"Bidaiak eta lekuak","Type to search time zone":"Idatzi ordu-zona bat bilatzeko","Unable to search the group":"Ezin izan da taldea bilatu","Undo changes":"Aldaketak desegin",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Idatzi mezua, erabili "@" norbait aipatzeko, erabili ":" emojiak automatikoki osatzeko...'}},{locale:"fi_FI",translations:{"{tag} (invisible)":"{tag} (näkymätön)","{tag} (restricted)":"{tag} (rajoitettu)",Actions:"Toiminnot",Activities:"Aktiviteetit","Animals & Nature":"Eläimet & luonto","Avatar of {displayName}":"Käyttäjän {displayName} avatar","Avatar of {displayName}, {status}":"Käyttäjän {displayName} avatar, {status}","Cancel changes":"Peruuta muutokset",Choose:"Valitse",Close:"Sulje","Close navigation":"Sulje navigaatio","Confirm changes":"Vahvista muutokset",Custom:"Mukautettu","Edit item":"Muokkaa kohdetta","External documentation for {title}":"Ulkoinen dokumentaatio kohteelle {title}",Flags:"Liput","Food & Drink":"Ruoka & juoma","Frequently used":"Usein käytetyt",Global:"Yleinen","Go back to the list":"Siirry takaisin listaan","Message limit of {count} characters reached":"Viestin merkken enimmäisimäärä {count} täynnä ",Next:"Seuraava","No emoji found":"Emojia ei löytynyt","No results":"Ei tuloksia",Objects:"Esineet & asiat","Open navigation":"Avaa navigaatio","Pause slideshow":"Keskeytä diaesitys","People & Body":"Ihmiset & keho","Pick an emoji":"Valitse emoji","Please select a time zone:":"Valitse aikavyöhyke:",Previous:"Edellinen",Search:"Etsi","Search results":"Hakutulokset","Select a tag":"Valitse tagi",Settings:"Asetukset","Settings navigation":"Asetusnavigaatio","Smileys & Emotion":"Hymiöt & tunteet","Start slideshow":"Aloita diaesitys",Submit:"Lähetä",Symbols:"Symbolit","Travel & Places":"Matkustus & kohteet","Type to search time zone":"Kirjoita etsiäksesi aikavyöhyke","Unable to search the group":"Ryhmää ei voi hakea","Undo changes":"Kumoa muutokset","Write message, @ to mention someone, : for emoji autocompletion …":"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…"}},{locale:"fr",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restreint)",Actions:"Actions",Activities:"Activités","Animals & Nature":"Animaux & Nature","Anything shared with the same group of people will show up here":"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Annuler les modifications","Change title":"Modifier le titre",Choose:"Choisir","Clear text":"Effacer le texte",Close:"Fermer","Close modal":"Fermer la fenêtre","Close navigation":"Fermer la navigation","Close sidebar":"Fermer la barre latérale","Confirm changes":"Confirmer les modifications",Custom:"Personnalisé","Edit item":"Éditer l'élément","Error getting related resources":"Erreur à la récupération des ressources liées","Error parsing svg":"Erreur d'analyse SVG","External documentation for {title}":"Documentation externe pour {title}",Favorite:"Favori",Flags:"Drapeaux","Food & Drink":"Nourriture & Boissons","Frequently used":"Utilisés fréquemment",Global:"Global","Go back to the list":"Retourner à la liste","Hide password":"Cacher le mot de passe","Message limit of {count} characters reached":"Limite de messages de {count} caractères atteinte","More items …":"Plus d'éléments...",Next:"Suivant","No emoji found":"Pas d’émoji trouvé","No results":"Aucun résultat",Objects:"Objets",Open:"Ouvrir",'Open link to "{resourceTitle}"':'Ouvrir le lien vers "{resourceTitle}"',"Open navigation":"Ouvrir la navigation","Password is secure":"Le mot de passe est sécurisé","Pause slideshow":"Mettre le diaporama en pause","People & Body":"Personnes & Corps","Pick an emoji":"Choisissez un émoji","Please select a time zone:":"Sélectionnez un fuseau horaire : ",Previous:"Précédent","Related resources":"Ressources liées",Search:"Chercher","Search results":"Résultats de recherche","Select a tag":"Sélectionnez une balise",Settings:"Paramètres","Settings navigation":"Navigation dans les paramètres","Show password":"Afficher le mot de passe","Smileys & Emotion":"Smileys & Émotions","Start slideshow":"Démarrer le diaporama",Submit:"Valider",Symbols:"Symboles","Travel & Places":"Voyage & Lieux","Type to search time zone":"Saisissez les premiers lettres pour rechercher un fuseau horaire","Unable to search the group":"Impossible de chercher le groupe","Undo changes":"Annuler les changements",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Écrire un message, utiliser "@" pour mentionner une personne, ":" pour l\'autocomplétion des émojis...'}},{locale:"gl",translations:{"{tag} (invisible)":"{tag} (invisíbel)","{tag} (restricted)":"{tag} (restrinxido)",Actions:"Accións",Activities:"Actividades","Animals & Nature":"Animais e natureza","Cancel changes":"Cancelar os cambios",Choose:"Escoller",Close:"Pechar","Confirm changes":"Confirma os cambios",Custom:"Personalizado","External documentation for {title}":"Documentación externa para {title}",Flags:"Bandeiras","Food & Drink":"Comida e bebida","Frequently used":"Usado con frecuencia","Message limit of {count} characters reached":"Acadouse o límite de {count} caracteres por mensaxe",Next:"Seguinte","No emoji found":"Non se atopou ningún «emoji»","No results":"Sen resultados",Objects:"Obxectos","Pause slideshow":"Pausar o diaporama","People & Body":"Persoas e corpo","Pick an emoji":"Escolla un «emoji»",Previous:"Anterir",Search:"Buscar","Search results":"Resultados da busca","Select a tag":"Seleccione unha etiqueta",Settings:"Axustes","Settings navigation":"Navegación polos axustes","Smileys & Emotion":"Sorrisos e emocións","Start slideshow":"Iniciar o diaporama",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viaxes e lugares","Unable to search the group":"Non foi posíbel buscar o grupo","Write message, @ to mention someone …":"Escriba a mensaxe, @ para mencionar a alguén…"}},{locale:"he",translations:{"{tag} (invisible)":"{tag} (נסתר)","{tag} (restricted)":"{tag} (מוגבל)",Actions:"פעולות",Activities:"פעילויות","Animals & Nature":"חיות וטבע",Choose:"בחירה",Close:"סגירה",Custom:"בהתאמה אישית",Flags:"דגלים","Food & Drink":"מזון ומשקאות","Frequently used":"בשימוש תדיר",Next:"הבא","No emoji found":"לא נמצא אמוג׳י","No results":"אין תוצאות",Objects:"חפצים","Pause slideshow":"השהיית מצגת","People & Body":"אנשים וגוף","Pick an emoji":"נא לבחור אמוג׳י",Previous:"הקודם",Search:"חיפוש","Search results":"תוצאות חיפוש","Select a tag":"בחירת תגית",Settings:"הגדרות","Smileys & Emotion":"חייכנים ורגשונים","Start slideshow":"התחלת המצגת",Symbols:"סמלים","Travel & Places":"טיולים ומקומות","Unable to search the group":"לא ניתן לחפש בקבוצה"}},{locale:"hu_HU",translations:{"{tag} (invisible)":"{tag} (láthatatlan)","{tag} (restricted)":"{tag} (korlátozott)",Actions:"Műveletek",Activities:"Tevékenységek","Animals & Nature":"Állatok és természet","Anything shared with the same group of people will show up here":"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni","Avatar of {displayName}":"{displayName} profilképe","Avatar of {displayName}, {status}":"{displayName} profilképe, {status}","Cancel changes":"Változtatások elvetése","Change title":"Cím megváltoztatása",Choose:"Válassszon","Clear text":"Szöveg törlése",Close:"Bezárás","Close modal":"Ablak bezárása","Close navigation":"Navigáció bezárása","Close sidebar":"Oldalsáv bezárása","Confirm changes":"Változtatások megerősítése",Custom:"Egyéni","Edit item":"Elem szerkesztése","Error getting related resources":"Hiba a kapcsolódó erőforrások lekérésekor","Error parsing svg":"Hiba az SVG feldolgozásakor","External documentation for {title}":"Külső dokumentáció ehhez: {title}",Favorite:"Kedvenc",Flags:"Zászlók","Food & Drink":"Étel és ital","Frequently used":"Gyakran használt",Global:"Globális","Go back to the list":"Ugrás vissza a listához","Hide password":"Jelszó elrejtése","Message limit of {count} characters reached":"{count} karakteres üzenetkorlát elérve","More items …":"További elemek...",Next:"Következő","No emoji found":"Nem található emodzsi","No results":"Nincs találat",Objects:"Tárgyak",Open:"Megnyitás",'Open link to "{resourceTitle}"':"A(z) „{resourceTitle}” hivatkozásának megnyitása","Open navigation":"Navigáció megnyitása","Password is secure":"A jelszó biztonságos","Pause slideshow":"Diavetítés szüneteltetése","People & Body":"Emberek és test","Pick an emoji":"Válasszon egy emodzsit","Please select a time zone:":"Válasszon időzónát:",Previous:"Előző","Related resources":"Kapcsolódó erőforrások",Search:"Keresés","Search results":"Találatok","Select a tag":"Válasszon címkét",Settings:"Beállítások","Settings navigation":"Navigáció a beállításokban","Show password":"Jelszó megjelenítése","Smileys & Emotion":"Mosolyok és érzelmek","Start slideshow":"Diavetítés indítása",Submit:"Beküldés",Symbols:"Szimbólumok","Travel & Places":"Utazás és helyek","Type to search time zone":"Gépeljen az időzóna kereséséhez","Unable to search the group":"A csoport nem kereshető","Undo changes":"Változtatások visszavonása",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…"}},{locale:"is",translations:{"{tag} (invisible)":"{tag} (ósýnilegt)","{tag} (restricted)":"{tag} (takmarkað)",Actions:"Aðgerðir",Activities:"Aðgerðir","Animals & Nature":"Dýr og náttúra",Choose:"Velja",Close:"Loka",Custom:"Sérsniðið",Flags:"Flögg","Food & Drink":"Matur og drykkur","Frequently used":"Oftast notað",Next:"Næsta","No emoji found":"Ekkert tjáningartákn fannst","No results":"Engar niðurstöður",Objects:"Hlutir","Pause slideshow":"Gera hlé á skyggnusýningu","People & Body":"Fólk og líkami","Pick an emoji":"Veldu tjáningartákn",Previous:"Fyrri",Search:"Leita","Search results":"Leitarniðurstöður","Select a tag":"Veldu merki",Settings:"Stillingar","Smileys & Emotion":"Broskallar og tilfinningar","Start slideshow":"Byrja skyggnusýningu",Symbols:"Tákn","Travel & Places":"Staðir og ferðalög","Unable to search the group":"Get ekki leitað í hópnum"}},{locale:"it",translations:{"{tag} (invisible)":"{tag} (invisibile)","{tag} (restricted)":"{tag} (limitato)",Actions:"Azioni",Activities:"Attività","Animals & Nature":"Animali e natura","Anything shared with the same group of people will show up here":"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui","Avatar of {displayName}":"Avatar di {displayName}","Avatar of {displayName}, {status}":"Avatar di {displayName}, {status}","Cancel changes":"Annulla modifiche","Change title":"Modifica il titolo",Choose:"Scegli","Clear text":"Cancella il testo",Close:"Chiudi","Close modal":"Chiudi il messaggio modale","Close navigation":"Chiudi la navigazione","Close sidebar":"Chiudi la barra laterale","Confirm changes":"Conferma modifiche",Custom:"Personalizzato","Edit item":"Modifica l'elemento","Error getting related resources":"Errore nell'ottenere risorse correlate","Error parsing svg":"Errore nell'analizzare l'svg","External documentation for {title}":"Documentazione esterna per {title}",Favorite:"Preferito",Flags:"Bandiere","Food & Drink":"Cibo e bevande","Frequently used":"Usati di frequente",Global:"Globale","Go back to the list":"Torna all'elenco","Hide password":"Nascondi la password","Message limit of {count} characters reached":"Limite dei messaggi di {count} caratteri raggiunto","More items …":"Più elementi ...",Next:"Successivo","No emoji found":"Nessun emoji trovato","No results":"Nessun risultato",Objects:"Oggetti",Open:"Apri",'Open link to "{resourceTitle}"':'Apri il link a "{resourceTitle}"',"Open navigation":"Apri la navigazione","Password is secure":"La password è sicura","Pause slideshow":"Presentazione in pausa","People & Body":"Persone e corpo","Pick an emoji":"Scegli un emoji","Please select a time zone:":"Si prega di selezionare un fuso orario:",Previous:"Precedente","Related resources":"Risorse correlate",Search:"Cerca","Search results":"Risultati di ricerca","Select a tag":"Seleziona un'etichetta",Settings:"Impostazioni","Settings navigation":"Navigazione delle impostazioni","Show password":"Mostra la password","Smileys & Emotion":"Faccine ed emozioni","Start slideshow":"Avvia presentazione",Submit:"Invia",Symbols:"Simboli","Travel & Places":"Viaggi e luoghi","Type to search time zone":"Digita per cercare un fuso orario","Unable to search the group":"Impossibile cercare il gruppo","Undo changes":"Cancella i cambiamenti",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrivi un messaggio, "@" per menzionare qualcuno, ":" per il completamento automatico delle emoji ...'}},{locale:"ja_JP",translations:{"{tag} (invisible)":"{タグ} (不可視)","{tag} (restricted)":"{タグ} (制限付)",Actions:"操作",Activities:"アクティビティ","Animals & Nature":"動物と自然","Anything shared with the same group of people will show up here":"同じグループで共有しているものは、全てここに表示されます","Avatar of {displayName}":"{displayName} のアバター","Avatar of {displayName}, {status}":"{displayName}, {status} のアバター","Cancel changes":"変更をキャンセル","Change title":"タイトルを変更",Choose:"選択","Clear text":"テキストをクリア",Close:"閉じる","Close modal":"モーダルを閉じる","Close navigation":"ナビゲーションを閉じる","Close sidebar":"サイドバーを閉じる","Confirm changes":"変更を承認",Custom:"カスタム","Edit item":"編集","Error getting related resources":"関連リソースの取得エラー","Error parsing svg":"svgの解析エラー","External documentation for {title}":"{title} のための添付文書",Favorite:"お気に入り",Flags:"国旗","Food & Drink":"食べ物と飲み物","Frequently used":"よく使うもの",Global:"全体","Go back to the list":"リストに戻る","Hide password":"パスワードを非表示","Message limit of {count} characters reached":"{count} 文字のメッセージ上限に達しています","More items …":"他のアイテム",Next:"次","No emoji found":"絵文字が見つかりません","No results":"なし",Objects:"物",Open:"開く",'Open link to "{resourceTitle}"':'"{resourceTitle}"のリンクを開く',"Open navigation":"ナビゲーションを開く","Password is secure":"パスワードは保護されています","Pause slideshow":"スライドショーを一時停止","People & Body":"様々な人と体の部位","Pick an emoji":"絵文字を選択","Please select a time zone:":"タイムゾーンを選んで下さい:",Previous:"前","Related resources":"関連リソース",Search:"検索","Search results":"検索結果","Select a tag":"タグを選択",Settings:"設定","Settings navigation":"ナビゲーション設定","Show password":"パスワードを表示","Smileys & Emotion":"感情表現","Start slideshow":"スライドショーを開始",Submit:"提出",Symbols:"記号","Travel & Places":"旅行と場所","Type to search time zone":"タイムゾーン検索のため入力してください","Unable to search the group":"グループを検索できません","Undo changes":"変更を取り消し",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'メッセージを記入、"@"でメンション、":"で絵文字の自動補完 ...'}},{locale:"lt_LT",translations:{"{tag} (invisible)":"{tag} (nematoma)","{tag} (restricted)":"{tag} (apribota)",Actions:"Veiksmai",Activities:"Veiklos","Animals & Nature":"Gyvūnai ir gamta",Choose:"Pasirinkti",Close:"Užverti",Custom:"Tinkinti","External documentation for {title}":"Išorinė {title} dokumentacija",Flags:"Vėliavos","Food & Drink":"Maistas ir gėrimai","Frequently used":"Dažniausiai naudoti","Message limit of {count} characters reached":"Pasiekta {count} simbolių žinutės riba",Next:"Kitas","No emoji found":"Nerasta jaustukų","No results":"Nėra rezultatų",Objects:"Objektai","Pause slideshow":"Pristabdyti skaidrių rodymą","People & Body":"Žmonės ir kūnas","Pick an emoji":"Pasirinkti jaustuką",Previous:"Ankstesnis",Search:"Ieškoti","Search results":"Paieškos rezultatai","Select a tag":"Pasirinkti žymę",Settings:"Nustatymai","Settings navigation":"Naršymas nustatymuose","Smileys & Emotion":"Šypsenos ir emocijos","Start slideshow":"Pradėti skaidrių rodymą",Submit:"Pateikti",Symbols:"Simboliai","Travel & Places":"Kelionės ir vietos","Unable to search the group":"Nepavyko atlikti paiešką grupėje","Write message, @ to mention someone …":"Rašykite žinutę, naudokite @ norėdami kažką paminėti…"}},{locale:"lv",translations:{"{tag} (invisible)":"{tag} (neredzams)","{tag} (restricted)":"{tag} (ierobežots)",Choose:"Izvēlēties",Close:"Aizvērt",Next:"Nākamais","No results":"Nav rezultātu","Pause slideshow":"Pauzēt slaidrādi",Previous:"Iepriekšējais","Select a tag":"Izvēlēties birku",Settings:"Iestatījumi","Start slideshow":"Sākt slaidrādi"}},{locale:"mk",translations:{"{tag} (invisible)":"{tag} (невидливо)","{tag} (restricted)":"{tag} (ограничено)",Actions:"Акции",Activities:"Активности","Animals & Nature":"Животни & Природа","Avatar of {displayName}":"Аватар на {displayName}","Avatar of {displayName}, {status}":"Аватар на {displayName}, {status}","Cancel changes":"Откажи ги промените","Change title":"Промени наслов",Choose:"Избери",Close:"Затвори","Close modal":"Затвори модал","Close navigation":"Затвори навигација","Confirm changes":"Потврди ги промените",Custom:"Прилагодени","Edit item":"Уреди","External documentation for {title}":"Надворешна документација за {title}",Favorite:"Фаворити",Flags:"Знамиња","Food & Drink":"Храна & Пијалоци","Frequently used":"Најчесто користени",Global:"Глобално","Go back to the list":"Врати се на листата",items:"ставки","Message limit of {count} characters reached":"Ограничувањето на должината на пораката од {count} карактери е надминато","More {dashboardItemType} …":"Повеќе {dashboardItemType} …",Next:"Следно","No emoji found":"Не се пронајдени емотикони","No results":"Нема резултати",Objects:"Објекти",Open:"Отвори","Open navigation":"Отвори навигација","Pause slideshow":"Пузирај слајдшоу","People & Body":"Луѓе & Тело","Pick an emoji":"Избери емотикон","Please select a time zone:":"Изберете временска зона:",Previous:"Предходно",Search:"Барај","Search results":"Резултати од барувањето","Select a tag":"Избери ознака",Settings:"Параметри","Settings navigation":"Параметри за навигација","Smileys & Emotion":"Смешковци & Емотикони","Start slideshow":"Стартувај слајдшоу",Submit:"Испрати",Symbols:"Симболи","Travel & Places":"Патувања & Места","Type to search time zone":"Напишете за да пребарате временска зона","Unable to search the group":"Неможе да се принајде групата","Undo changes":"Врати ги промените","Write message, @ to mention someone, : for emoji autocompletion …":"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ..."}},{locale:"my",translations:{"{tag} (invisible)":"{tag} (ကွယ်ဝှက်ထား)","{tag} (restricted)":"{tag} (ကန့်သတ်)",Actions:"လုပ်ဆောင်ချက်များ",Activities:"ပြုလုပ်ဆောင်တာများ","Animals & Nature":"တိရစ္ဆာန်များနှင့် သဘာဝ","Avatar of {displayName}":"{displayName} ၏ ကိုယ်ပွား","Cancel changes":"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်",Choose:"ရွေးချယ်ရန်",Close:"ပိတ်ရန်","Confirm changes":"ပြောင်းလဲမှုများ အတည်ပြုရန်",Custom:"အလိုကျချိန်ညှိမှု","External documentation for {title}":"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း",Flags:"အလံများ","Food & Drink":"အစားအသောက်","Frequently used":"မကြာခဏအသုံးပြုသော",Global:"ကမ္ဘာလုံးဆိုင်ရာ","Message limit of {count} characters reached":"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ",Next:"နောက်သို့ဆက်ရန်","No emoji found":"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ","No results":"ရလဒ်မရှိပါ",Objects:"အရာဝတ္ထုများ","Pause slideshow":"စလိုက်ရှိုး ခေတ္တရပ်ရန်","People & Body":"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်","Pick an emoji":"အီမိုဂျီရွေးရန်","Please select a time zone:":"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ",Previous:"ယခင်",Search:"ရှာဖွေရန်","Search results":"ရှာဖွေမှု ရလဒ်များ","Select a tag":"tag ရွေးချယ်ရန်",Settings:"ချိန်ညှိချက်များ","Settings navigation":"ချိန်ညှိချက်အညွှန်း","Smileys & Emotion":"စမိုင်လီများနှင့် အီမိုရှင်း","Start slideshow":"စလိုက်ရှိုးအား စတင်ရန်",Submit:"တင်သွင်းရန်",Symbols:"သင်္ကေတများ","Travel & Places":"ခရီးသွားလာခြင်းနှင့် နေရာများ","Type to search time zone":"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ","Unable to search the group":"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ","Write message, @ to mention someone …":"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်..."}},{locale:"nb_NO",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (beskyttet)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr og natur","Anything shared with the same group of people will show up here":"Alt som er delt med den samme gruppen vil vises her","Avatar of {displayName}":"Avataren til {displayName}","Avatar of {displayName}, {status}":"{displayName}'s avatar, {status}","Cancel changes":"Avbryt endringer","Change title":"Endre tittel",Choose:"Velg","Clear text":"Fjern tekst",Close:"Lukk","Close modal":"Lukk modal","Close navigation":"Lukk navigasjon","Close sidebar":"Lukk sidepanel","Confirm changes":"Bekreft endringer",Custom:"Tilpasset","Edit item":"Rediger","Error getting related resources":"Feil ved henting av relaterte ressurser","Error parsing svg":"Feil ved parsing av svg","External documentation for {title}":"Ekstern dokumentasjon for {title}",Favorite:"Favoritt",Flags:"Flagg","Food & Drink":"Mat og drikke","Frequently used":"Ofte brukt",Global:"Global","Go back to the list":"Gå tilbake til listen","Hide password":"Skjul passord","Message limit of {count} characters reached":"Karakter begrensing {count} nådd i melding","More items …":"Flere gjenstander...",Next:"Neste","No emoji found":"Fant ingen emoji","No results":"Ingen resultater",Objects:"Objekter",Open:"Åpne",'Open link to "{resourceTitle}"':'Åpne link til "{resourceTitle}"',"Open navigation":"Åpne navigasjon","Password is secure":"Passordet er sikkert","Pause slideshow":"Pause lysbildefremvisning","People & Body":"Mennesker og kropp","Pick an emoji":"Velg en emoji","Please select a time zone:":"Vennligst velg tidssone",Previous:"Forrige","Related resources":"Relaterte ressurser",Search:"Søk","Search results":"Søkeresultater","Select a tag":"Velg en merkelapp",Settings:"Innstillinger","Settings navigation":"Navigasjonsinstillinger","Show password":"Vis passord","Smileys & Emotion":"Smilefjes og følelser","Start slideshow":"Start lysbildefremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Reise og steder","Type to search time zone":"Tast for å søke etter tidssone","Unable to search the group":"Kunne ikke søke i gruppen","Undo changes":"Tilbakestill endringer",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv melding, bruk "@" for å nevne noen, bruk ":" for autofullføring av emoji...'}},{locale:"nl",translations:{"{tag} (invisible)":"{tag} (onzichtbaar)","{tag} (restricted)":"{tag} (beperkt)",Actions:"Acties",Activities:"Activiteiten","Animals & Nature":"Dieren & Natuur","Avatar of {displayName}":"Avatar van {displayName}","Avatar of {displayName}, {status}":"Avatar van {displayName}, {status}","Cancel changes":"Wijzigingen annuleren",Choose:"Kies",Close:"Sluiten","Close navigation":"Navigatie sluiten","Confirm changes":"Wijzigingen bevestigen",Custom:"Aangepast","Edit item":"Item bewerken","External documentation for {title}":"Externe documentatie voor {title}",Flags:"Vlaggen","Food & Drink":"Eten & Drinken","Frequently used":"Vaak gebruikt",Global:"Globaal","Go back to the list":"Ga terug naar de lijst","Message limit of {count} characters reached":"Berichtlimiet van {count} karakters bereikt",Next:"Volgende","No emoji found":"Geen emoji gevonden","No results":"Geen resultaten",Objects:"Objecten","Open navigation":"Navigatie openen","Pause slideshow":"Pauzeer diavoorstelling","People & Body":"Mensen & Lichaam","Pick an emoji":"Kies een emoji","Please select a time zone:":"Selecteer een tijdzone:",Previous:"Vorige",Search:"Zoeken","Search results":"Zoekresultaten","Select a tag":"Selecteer een label",Settings:"Instellingen","Settings navigation":"Instellingen navigatie","Smileys & Emotion":"Smileys & Emotie","Start slideshow":"Start diavoorstelling",Submit:"Verwerken",Symbols:"Symbolen","Travel & Places":"Reizen & Plaatsen","Type to search time zone":"Type om de tijdzone te zoeken","Unable to search the group":"Kan niet in de groep zoeken","Undo changes":"Wijzigingen ongedaan maken","Write message, @ to mention someone, : for emoji autocompletion …":"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ..."}},{locale:"oc",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (limit)",Actions:"Accions",Choose:"Causir",Close:"Tampar",Next:"Seguent","No results":"Cap de resultat","Pause slideshow":"Metre en pausa lo diaporama",Previous:"Precedent","Select a tag":"Seleccionar una etiqueta",Settings:"Paramètres","Start slideshow":"Lançar lo diaporama"}},{locale:"pl",translations:{"{tag} (invisible)":"{tag} (niewidoczna)","{tag} (restricted)":"{tag} (ograniczona)",Actions:"Działania",Activities:"Aktywność","Animals & Nature":"Zwierzęta i natura","Anything shared with the same group of people will show up here":"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób","Avatar of {displayName}":"Awatar {displayName}","Avatar of {displayName}, {status}":"Awatar {displayName}, {status}","Cancel changes":"Anuluj zmiany","Change title":"Zmień tytuł",Choose:"Wybierz","Clear text":"Wyczyść tekst",Close:"Zamknij","Close modal":"Zamknij modal","Close navigation":"Zamknij nawigację","Close sidebar":"Zamknij pasek boczny","Confirm changes":"Potwierdź zmiany",Custom:"Zwyczajne","Edit item":"Edytuj element","Error getting related resources":"Błąd podczas pobierania powiązanych zasobów","Error parsing svg":"Błąd podczas analizowania svg","External documentation for {title}":"Dokumentacja zewnętrzna dla {title}",Favorite:"Ulubiony",Flags:"Flagi","Food & Drink":"Jedzenie i picie","Frequently used":"Często używane",Global:"Globalnie","Go back to the list":"Powrót do listy","Hide password":"Ukryj hasło","Message limit of {count} characters reached":"Przekroczono limit wiadomości wynoszący {count} znaków","More items …":"Więcej pozycji…",Next:"Następny","No emoji found":"Nie znaleziono emoji","No results":"Brak wyników",Objects:"Obiekty",Open:"Otwórz",'Open link to "{resourceTitle}"':'Otwórz link do "{resourceTitle}"',"Open navigation":"Otwórz nawigację","Password is secure":"Hasło jest bezpieczne","Pause slideshow":"Wstrzymaj pokaz slajdów","People & Body":"Ludzie i ciało","Pick an emoji":"Wybierz emoji","Please select a time zone:":"Wybierz strefę czasową:",Previous:"Poprzedni","Related resources":"Powiązane zasoby",Search:"Szukaj","Search results":"Wyniki wyszukiwania","Select a tag":"Wybierz etykietę",Settings:"Ustawienia","Settings navigation":"Ustawienia nawigacji","Show password":"Pokaż hasło","Smileys & Emotion":"Buźki i emotikony","Start slideshow":"Rozpocznij pokaz slajdów",Submit:"Wyślij",Symbols:"Symbole","Travel & Places":"Podróże i miejsca","Type to search time zone":"Wpisz, aby wyszukać strefę czasową","Unable to search the group":"Nie można przeszukać grupy","Undo changes":"Cofnij zmiany",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Napisz wiadomość, "@" aby o kimś wspomnieć, ":" dla autouzupełniania emoji…'}},{locale:"pt_BR",translations:{"{tag} (invisible)":"{tag} (invisível)","{tag} (restricted)":"{tag} (restrito) ",Actions:"Ações",Activities:"Atividades","Animals & Nature":"Animais & Natureza","Anything shared with the same group of people will show up here":"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar alterações","Change title":"Alterar título",Choose:"Escolher","Clear text":"Limpar texto",Close:"Fechar","Close modal":"Fechar modal","Close navigation":"Fechar navegação","Close sidebar":"Fechar barra lateral","Confirm changes":"Confirmar alterações",Custom:"Personalizado","Edit item":"Editar item","Error getting related resources":"Erro ao obter recursos relacionados","Error parsing svg":"Erro ao analisar svg","External documentation for {title}":"Documentação externa para {title}",Favorite:"Favorito",Flags:"Bandeiras","Food & Drink":"Comida & Bebida","Frequently used":"Mais usados",Global:"Global","Go back to the list":"Volte para a lista","Hide password":"Ocultar a senha","Message limit of {count} characters reached":"Limite de mensagem de {count} caracteres atingido","More items …":"Mais itens …",Next:"Próximo","No emoji found":"Nenhum emoji encontrado","No results":"Sem resultados",Objects:"Objetos",Open:"Aberto",'Open link to "{resourceTitle}"':'Abrir link para "{resourceTitle}"',"Open navigation":"Abrir navegação","Password is secure":"A senha é segura","Pause slideshow":"Pausar apresentação de slides","People & Body":"Pessoas & Corpo","Pick an emoji":"Escolha um emoji","Please select a time zone:":"Selecione um fuso horário: ",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Pesquisar","Search results":"Resultados da pesquisa","Select a tag":"Selecionar uma tag",Settings:"Configurações","Settings navigation":"Navegação de configurações","Show password":"Mostrar senha","Smileys & Emotion":"Smiles & Emoções","Start slideshow":"Iniciar apresentação de slides",Submit:"Enviar",Symbols:"Símbolo","Travel & Places":"Viagem & Lugares","Type to search time zone":"Digite para pesquisar o fuso horário ","Unable to search the group":"Não foi possível pesquisar o grupo","Undo changes":"Desfazer modificações",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escreva mensagens, use "@" para mencionar algum, use ":" for autocompletar emoji …'}},{locale:"pt_PT",translations:{"{tag} (invisible)":"{tag} (invisivel)","{tag} (restricted)":"{tag} (restrito)",Actions:"Ações",Choose:"Escolher",Close:"Fechar",Next:"Seguinte","No results":"Sem resultados","Pause slideshow":"Pausar diaporama",Previous:"Anterior","Select a tag":"Selecionar uma etiqueta",Settings:"Definições","Start slideshow":"Iniciar diaporama","Unable to search the group":"Não é possível pesquisar o grupo"}},{locale:"ro",translations:{"{tag} (invisible)":"{tag} (invizibil)","{tag} (restricted)":"{tag} (restricționat)",Actions:"Acțiuni",Activities:"Activități","Animals & Nature":"Animale și natură","Anything shared with the same group of people will show up here":"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici","Avatar of {displayName}":"Avatarul lui {displayName}","Avatar of {displayName}, {status}":"Avatarul lui {displayName}, {status}","Cancel changes":"Anulează modificările","Change title":"Modificați titlul",Choose:"Alegeți","Clear text":"Șterge textul",Close:"Închideți","Close modal":"Închideți modulul","Close navigation":"Închideți navigarea","Close sidebar":"Închide bara laterală","Confirm changes":"Confirmați modificările",Custom:"Personalizat","Edit item":"Editați elementul","Error getting related resources":" Eroare la returnarea resurselor legate","Error parsing svg":"Eroare de analizare a svg","External documentation for {title}":"Documentație externă pentru {title}",Favorite:"Favorit",Flags:"Marcaje","Food & Drink":"Alimente și băuturi","Frequently used":"Utilizate frecvent",Global:"Global","Go back to the list":"Întoarceți-vă la listă","Hide password":"Ascunde parola","Message limit of {count} characters reached":"Limita mesajului de {count} caractere a fost atinsă","More items …":"Mai multe articole ...",Next:"Următorul","No emoji found":"Nu s-a găsit niciun emoji","No results":"Nu există rezultate",Objects:"Obiecte",Open:"Deschideți",'Open link to "{resourceTitle}"':'Deschide legătura la "{resourceTitle}"',"Open navigation":"Deschideți navigația","Password is secure":"Parola este sigură","Pause slideshow":"Pauză prezentare de diapozitive","People & Body":"Oameni și corp","Pick an emoji":"Alege un emoji","Please select a time zone:":"Vă rugăm să selectați un fus orar:",Previous:"Anterior","Related resources":"Resurse legate",Search:"Căutare","Search results":"Rezultatele căutării","Select a tag":"Selectați o etichetă",Settings:"Setări","Settings navigation":"Navigare setări","Show password":"Arată parola","Smileys & Emotion":"Zâmbete și emoții","Start slideshow":"Începeți prezentarea de diapozitive",Submit:"Trimiteți",Symbols:"Simboluri","Travel & Places":"Călătorii și locuri","Type to search time zone":"Tastați pentru a căuta fusul orar","Unable to search the group":"Imposibilitatea de a căuta în grup","Undo changes":"Anularea modificărilor",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrie un mesaj, folosește "@" pentru a menționa pe cineva, folosește ":" pentru autocompletarea cu emoji ...'}},{locale:"ru",translations:{"{tag} (invisible)":"{tag} (невидимое)","{tag} (restricted)":"{tag} (ограниченное)",Actions:"Действия ",Activities:"События","Animals & Nature":"Животные и природа ","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Фотография {displayName}, {status}","Cancel changes":"Отменить изменения",Choose:"Выберите",Close:"Закрыть","Close modal":"Закрыть модальное окно","Close navigation":"Закрыть навигацию","Confirm changes":"Подтвердить изменения",Custom:"Пользовательское","Edit item":"Изменить элемент","External documentation for {title}":"Внешняя документация для {title}",Flags:"Флаги","Food & Drink":"Еда, напиток","Frequently used":"Часто используемый",Global:"Глобальный","Go back to the list":"Вернуться к списку",items:"элементов","Message limit of {count} characters reached":"Достигнуто ограничение на количество символов в {count}","More {dashboardItemType} …":"Больше {dashboardItemType} …",Next:"Следующее","No emoji found":"Эмодзи не найдено","No results":"Результаты отсуствуют",Objects:"Объекты",Open:"Открыть","Open navigation":"Открыть навигацию","Pause slideshow":"Приостановить показ слйдов","People & Body":"Люди и тело","Pick an emoji":"Выберите эмодзи","Please select a time zone:":"Пожалуйста, выберите часовой пояс:",Previous:"Предыдущее",Search:"Поиск","Search results":"Результаты поиска","Select a tag":"Выберите метку",Settings:"Параметры","Settings navigation":"Навигация по настройкам","Smileys & Emotion":"Смайлики и эмоции","Start slideshow":"Начать показ слайдов",Submit:"Утвердить",Symbols:"Символы","Travel & Places":"Путешествия и места","Type to search time zone":"Введите для поиска часового пояса","Unable to search the group":"Невозможно найти группу","Undo changes":"Отменить изменения","Write message, @ to mention someone, : for emoji autocompletion …":"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …"}},{locale:"sk_SK",translations:{"{tag} (invisible)":"{tag} (neviditeľný)","{tag} (restricted)":"{tag} (obmedzený)",Actions:"Akcie",Activities:"Aktivity","Animals & Nature":"Zvieratá a príroda","Avatar of {displayName}":"Avatar {displayName}","Avatar of {displayName}, {status}":"Avatar {displayName}, {status}","Cancel changes":"Zrušiť zmeny",Choose:"Vybrať",Close:"Zatvoriť","Close navigation":"Zavrieť navigáciu","Confirm changes":"Potvrdiť zmeny",Custom:"Zvyk","Edit item":"Upraviť položku","External documentation for {title}":"Externá dokumentácia pre {title}",Flags:"Vlajky","Food & Drink":"Jedlo a nápoje","Frequently used":"Často používané",Global:"Globálne","Go back to the list":"Naspäť na zoznam","Message limit of {count} characters reached":"Limit správy na {count} znakov dosiahnutý",Next:"Ďalší","No emoji found":"Nenašli sa žiadne emodži","No results":"Žiadne výsledky",Objects:"Objekty","Open navigation":"Otvoriť navigáciu","Pause slideshow":"Pozastaviť prezentáciu","People & Body":"Ľudia a telo","Pick an emoji":"Vyberte si emodži","Please select a time zone:":"Prosím vyberte časovú zónu:",Previous:"Predchádzajúci",Search:"Hľadať","Search results":"Výsledky vyhľadávania","Select a tag":"Vybrať štítok",Settings:"Nastavenia","Settings navigation":"Navigácia v nastaveniach","Smileys & Emotion":"Smajlíky a emócie","Start slideshow":"Začať prezentáciu",Submit:"Odoslať",Symbols:"Symboly","Travel & Places":"Cestovanie a miesta","Type to search time zone":"Začníte písať pre vyhľadávanie časovej zóny","Unable to search the group":"Skupinu sa nepodarilo nájsť","Undo changes":"Vrátiť zmeny","Write message, @ to mention someone, : for emoji autocompletion …":"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…"}},{locale:"sl",translations:{"{tag} (invisible)":"{tag} (nevidno)","{tag} (restricted)":"{tag} (omejeno)",Actions:"Dejanja",Activities:"Dejavnosti","Animals & Nature":"Živali in Narava","Avatar of {displayName}":"Podoba {displayName}","Avatar of {displayName}, {status}":"Prikazna slika {displayName}, {status}","Cancel changes":"Prekliči spremembe","Change title":"Spremeni naziv",Choose:"Izbor","Clear text":"Počisti besedilo",Close:"Zapri","Close modal":"Zapri pojavno okno","Close navigation":"Zapri krmarjenje","Close sidebar":"Zapri stransko vrstico","Confirm changes":"Potrdi spremembe",Custom:"Po meri","Edit item":"Uredi predmet","Error getting related resources":"Napaka pridobivanja povezanih virov","External documentation for {title}":"Zunanja dokumentacija za {title}",Favorite:"Priljubljeno",Flags:"Zastavice","Food & Drink":"Hrana in Pijača","Frequently used":"Pogostost uporabe",Global:"Splošno","Go back to the list":"Vrni se na seznam","Hide password":"Skrij geslo","Message limit of {count} characters reached":"Dosežena omejitev {count} znakov na sporočilo.","More items …":"Več predmetov ...",Next:"Naslednji","No emoji found":"Ni najdenih izraznih ikon","No results":"Ni zadetkov",Objects:"Predmeti",Open:"Odpri",'Open link to "{resourceTitle}"':"Odpri povezavo do »{resourceTitle}«","Open navigation":"Odpri krmarjenje","Password is secure":"Geslo je varno","Pause slideshow":"Ustavi predstavitev","People & Body":"Ljudje in Telo","Pick a date":"Izbor datuma","Pick a date and a time":"Izbor datuma in časa","Pick a month":"Izbor meseca","Pick a time":"Izbor časa","Pick a week":"Izbor tedna","Pick a year":"Izbor leta","Pick an emoji":"Izbor izrazne ikone","Please select a time zone:":"Izbor časovnega pasu:",Previous:"Predhodni","Related resources":"Povezani viri",Search:"Iskanje","Search results":"Zadetki iskanja","Select a tag":"Izbor oznake",Settings:"Nastavitve","Settings navigation":"Krmarjenje nastavitev","Show password":"Pokaži geslo","Smileys & Emotion":"Izrazne ikone","Start slideshow":"Začni predstavitev",Submit:"Pošlji",Symbols:"Simboli","Travel & Places":"Potovanja in Kraji","Type to search time zone":"Vpišite niz za iskanje časovnega pasu","Unable to search the group":"Ni mogoče iskati po skupini","Undo changes":"Razveljavi spremembe","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …"}},{locale:"sr",translations:{"{tag} (invisible)":"{tag} (nevidljivo)","{tag} (restricted)":"{tag} (ograničeno)",Actions:"Radnje",Activities:"Aktivnosti","Animals & Nature":"Životinje i Priroda","Avatar of {displayName}":"Avatar za {displayName}","Avatar of {displayName}, {status}":"Avatar za {displayName}, {status}","Cancel changes":"Otkaži izmene","Change title":"Izmeni naziv",Choose:"Изаберите",Close:"Затвори","Close modal":"Zatvori modal","Close navigation":"Zatvori navigaciju","Close sidebar":"Zatvori bočnu traku","Confirm changes":"Potvrdite promene",Custom:"Po meri","Edit item":"Uredi stavku","External documentation for {title}":"Eksterna dokumentacija za {title}",Favorite:"Omiljeni",Flags:"Zastave","Food & Drink":"Hrana i Piće","Frequently used":"Često korišćeno",Global:"Globalno","Go back to the list":"Natrag na listu",items:"stavke","Message limit of {count} characters reached":"Dostignuto je ograničenje za poruke od {count} znakova","More {dashboardItemType} …":"Više {dashboardItemType} …",Next:"Следеће","No emoji found":"Nije pronađen nijedan emodži","No results":"Нема резултата",Objects:"Objekti",Open:"Otvori","Open navigation":"Otvori navigaciju","Pause slideshow":"Паузирај слајд шоу","People & Body":"Ljudi i Telo","Pick an emoji":"Izaberi emodži","Please select a time zone:":"Molimo izaberite vremensku zonu:",Previous:"Претходно",Search:"Pretraži","Search results":"Rezultati pretrage","Select a tag":"Изаберите ознаку",Settings:"Поставке","Settings navigation":"Navigacija u podešavanjima","Smileys & Emotion":"Smajli i Emocije","Start slideshow":"Покрени слајд шоу",Submit:"Prihvati",Symbols:"Simboli","Travel & Places":"Putovanja i Mesta","Type to search time zone":"Ukucaj da pretražiš vremenske zone","Unable to search the group":"Nije moguće pretražiti grupu","Undo changes":"Poništi promene","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…"}},{locale:"sv",translations:{"{tag} (invisible)":"{tag} (osynlig)","{tag} (restricted)":"{tag} (begränsad)",Actions:"Åtgärder",Activities:"Aktiviteter","Animals & Nature":"Djur & Natur","Anything shared with the same group of people will show up here":"Något som delats med samma grupp av personer kommer att visas här","Avatar of {displayName}":"{displayName}s avatar","Avatar of {displayName}, {status}":"{displayName}s avatar, {status}","Cancel changes":"Avbryt ändringar","Change title":"Ändra titel",Choose:"Välj","Clear text":"Ta bort text",Close:"Stäng","Close modal":"Stäng modal","Close navigation":"Stäng navigering","Close sidebar":"Stäng sidopanel","Confirm changes":"Bekräfta ändringar",Custom:"Anpassad","Edit item":"Ändra","Error getting related resources":"Problem att hämta relaterade resurser","Error parsing svg":"Fel vid inläsning av svg","External documentation for {title}":"Extern dokumentation för {title}",Favorite:"Favorit",Flags:"Flaggor","Food & Drink":"Mat & Dryck","Frequently used":"Används ofta",Global:"Global","Go back to the list":"Gå tillbaka till listan","Hide password":"Göm lössenordet","Message limit of {count} characters reached":"Meddelandegräns {count} tecken används","More items …":"Fler objekt",Next:"Nästa","No emoji found":"Hittade inga emojis","No results":"Inga resultat",Objects:"Objekt",Open:"Öppna",'Open link to "{resourceTitle}"':'Öppna länk till "{resourceTitle}"',"Open navigation":"Öppna navigering","Password is secure":"Lössenordet är säkert","Pause slideshow":"Pausa bildspelet","People & Body":"Kropp & Själ","Pick an emoji":"Välj en emoji","Please select a time zone:":"Välj tidszon:",Previous:"Föregående","Related resources":"Relaterade resurser",Search:"Sök","Search results":"Sökresultat","Select a tag":"Välj en tag",Settings:"Inställningar","Settings navigation":"Inställningsmeny","Show password":"Visa lössenordet","Smileys & Emotion":"Selfies & Känslor","Start slideshow":"Starta bildspelet",Submit:"Skicka",Symbols:"Symboler","Travel & Places":"Resor & Sevärdigheter","Type to search time zone":"Skriv för att välja tidszon","Unable to search the group":"Kunde inte söka i gruppen","Undo changes":"Ångra ändringar",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv meddelande, använd "@" för att nämna någon, använd ":" för automatiska emojiförslag ...'}},{locale:"tr",translations:{"{tag} (invisible)":"{tag} (görünmez)","{tag} (restricted)":"{tag} (kısıtlı)",Actions:"İşlemler",Activities:"Etkinlikler","Animals & Nature":"Hayvanlar ve Doğa","Anything shared with the same group of people will show up here":"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir","Avatar of {displayName}":"{displayName} avatarı","Avatar of {displayName}, {status}":"{displayName}, {status} avatarı","Cancel changes":"Değişiklikleri iptal et","Change title":"Başlığı değiştir",Choose:"Seçin","Clear text":"Metni temizle",Close:"Kapat","Close modal":"Üste açılan pencereyi kapat","Close navigation":"Gezinmeyi kapat","Close sidebar":"Yan çubuğu kapat","Confirm changes":"Değişiklikleri onayla",Custom:"Özel","Edit item":"Ögeyi düzenle","Error getting related resources":"İlgili kaynaklar alınırken sorun çıktı","Error parsing svg":"svg işlenirken sorun çıktı","External documentation for {title}":"{title} için dış belgeler",Favorite:"Sık kullanılanlara ekle",Flags:"Bayraklar","Food & Drink":"Yeme ve İçme","Frequently used":"Sık kullanılanlar",Global:"Evrensel","Go back to the list":"Listeye dön","Hide password":"Parolayı gizle","Message limit of {count} characters reached":"{count} karakter ileti sınırına ulaşıldı","More items …":"Diğer ögeler…",Next:"Sonraki","No emoji found":"Herhangi bir emoji bulunamadı","No results":"Herhangi bir sonuç bulunamadı",Objects:"Nesneler",Open:"Aç",'Open link to "{resourceTitle}"':'"{resourceTitle}" bağlantısını aç',"Open navigation":"Gezinmeyi aç","Password is secure":"Parola güvenli","Pause slideshow":"Slayt sunumunu duraklat","People & Body":"İnsanlar ve Beden","Pick an emoji":"Bir emoji seçin","Please select a time zone:":"Lütfen bir saat dilimi seçin:",Previous:"Önceki","Related resources":"İlgili kaynaklar",Search:"Arama","Search results":"Arama sonuçları","Select a tag":"Bir etiket seçin",Settings:"Ayarlar","Settings navigation":"Gezinme ayarları","Show password":"Parolayı görüntüle","Smileys & Emotion":"İfadeler ve Duygular","Start slideshow":"Slayt sunumunu başlat",Submit:"Gönder",Symbols:"Simgeler","Travel & Places":"Gezi ve Yerler","Type to search time zone":"Saat dilimi aramak için yazmaya başlayın","Unable to search the group":"Grupta arama yapılamadı","Undo changes":"Değişiklikleri geri al",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için ":" kullanın…'}},{locale:"uk",translations:{"{tag} (invisible)":"{tag} (невидимий)","{tag} (restricted)":"{tag} (обмежений)",Actions:"Дії",Activities:"Діяльність","Animals & Nature":"Тварини та природа","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Аватар {displayName}, {status}","Cancel changes":"Скасувати зміни","Change title":"Змінити назву",Choose:"ВиберітьВиберіть","Clear text":"Очистити текст",Close:"Закрити","Close modal":"Закрити модаль","Close navigation":"Закрити навігацію","Close sidebar":"Закрити бічну панель","Confirm changes":"Підтвердити зміни",Custom:"Власне","Edit item":"Редагувати елемент","External documentation for {title}":"Зовнішня документація для {title}",Favorite:"Улюблений",Flags:"Прапори","Food & Drink":"Їжа та напої","Frequently used":"Найчастіші",Global:"Глобальний","Go back to the list":"Повернутися до списку","Hide password":"Приховати пароль",items:"елементи","Message limit of {count} characters reached":"Вичерпано ліміт у {count} символів для повідомлення","More {dashboardItemType} …":"Більше {dashboardItemType}…",Next:"Вперед","No emoji found":"Емоційки відсутні","No results":"Відсутні результати",Objects:"Об'єкти",Open:"Відкрити","Open navigation":"Відкрити навігацію","Password is secure":"Пароль безпечний","Pause slideshow":"Пауза у показі слайдів","People & Body":"Люди та жести","Pick an emoji":"Виберіть емоційку","Please select a time zone:":"Виберіть часовий пояс:",Previous:"Назад",Search:"Пошук","Search results":"Результати пошуку","Select a tag":"Виберіть позначку",Settings:"Налаштування","Settings navigation":"Навігація у налаштуваннях","Show password":"Показати пароль","Smileys & Emotion":"Смайли та емоції","Start slideshow":"Почати показ слайдів",Submit:"Надіслати",Symbols:"Символи","Travel & Places":"Поїздки та місця","Type to search time zone":"Введіть для пошуку часовий пояс","Unable to search the group":"Неможливо шукати в групі","Undo changes":"Скасувати зміни","Write message, @ to mention someone, : for emoji autocompletion …":"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…"}},{locale:"zh_CN",translations:{"{tag} (invisible)":"{tag} (不可见)","{tag} (restricted)":"{tag} (受限)",Actions:"行为",Activities:"活动","Animals & Nature":"动物 & 自然","Anything shared with the same group of people will show up here":"与同组用户分享的所有内容都会显示于此","Avatar of {displayName}":"{displayName}的头像","Avatar of {displayName}, {status}":"{displayName}的头像,{status}","Cancel changes":"取消更改","Change title":"更改标题",Choose:"选择","Clear text":"清除文本",Close:"关闭","Close modal":"关闭窗口","Close navigation":"关闭导航","Close sidebar":"关闭侧边栏","Confirm changes":"确认更改",Custom:"自定义","Edit item":"编辑项目","Error getting related resources":"获取相关资源时出错","Error parsing svg":"解析 svg 时出错","External documentation for {title}":"{title}的外部文档",Favorite:"喜爱",Flags:"旗帜","Food & Drink":"食物 & 饮品","Frequently used":"经常使用",Global:"全局","Go back to the list":"返回至列表","Hide password":"隐藏密码","Message limit of {count} characters reached":"已达到 {count} 个字符的消息限制","More items …":"更多项目…",Next:"下一个","No emoji found":"表情未找到","No results":"无结果",Objects:"物体",Open:"打开",'Open link to "{resourceTitle}"':'打开"{resourceTitle}"的连接',"Open navigation":"开启导航","Password is secure":"密码安全","Pause slideshow":"暂停幻灯片","People & Body":"人 & 身体","Pick an emoji":"选择一个表情","Please select a time zone:":"请选择一个时区:",Previous:"上一个","Related resources":"相关资源",Search:"搜索","Search results":"搜索结果","Select a tag":"选择一个标签",Settings:"设置","Settings navigation":"设置向导","Show password":"显示密码","Smileys & Emotion":"笑脸 & 情感","Start slideshow":"开始幻灯片",Submit:"提交",Symbols:"符号","Travel & Places":"旅游 & 地点","Type to search time zone":"打字以搜索时区","Unable to search the group":"无法搜索分组","Undo changes":"撤销更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'写信息,使用"@"来提及某人,使用":"进行表情符号自动完成 ...'}},{locale:"zh_HK",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然","Anything shared with the same group of people will show up here":"與同一組人共享的任何內容都會顯示在此處","Avatar of {displayName}":"{displayName} 的頭像","Avatar of {displayName}, {status}":"{displayName} 的頭像,{status}","Cancel changes":"取消更改","Change title":"更改標題",Choose:"選擇","Clear text":"清除文本",Close:"關閉","Close modal":"關閉模態","Close navigation":"關閉導航","Close sidebar":"關閉側邊欄","Confirm changes":"確認更改",Custom:"自定義","Edit item":"編輯項目","Error getting related resources":"獲取相關資源出錯","Error parsing svg":"解析 svg 時出錯","External documentation for {title}":"{title} 的外部文檔",Favorite:"喜愛",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"經常使用",Global:"全球的","Go back to the list":"返回清單","Hide password":"隱藏密碼","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制","More items …":"更多項目 …",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件",Open:"打開",'Open link to "{resourceTitle}"':"打開指向 “{resourceTitle}” 的鏈結","Open navigation":"開啟導航","Password is secure":"密碼是安全的","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號","Please select a time zone:":"請選擇時區:",Previous:"上一個","Related resources":"相關資源",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Show password":"顯示密碼","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Submit:"提交",Symbols:"標誌","Travel & Places":"旅遊與景點","Type to search time zone":"鍵入以搜索時區","Unable to search the group":"無法搜尋群組","Undo changes":"取消更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'寫訊息,使用 "@" 來指代某人,使用 ":" 用於表情符號自動填充 ...'}},{locale:"zh_TW",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然",Choose:"選擇",Close:"關閉",Custom:"自定義",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"最近使用","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號",Previous:"上一個",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Symbols:"標誌","Travel & Places":"旅遊與景點","Unable to search the group":"無法搜尋群組","Write message, @ to mention someone …":"輸入訊息時可使用 @ 來標示某人..."}}].forEach((e=>{const t={};for(const n in e.translations)e.translations[n].pluralId?t[n]={msgid:n,msgid_plural:e.translations[n].pluralId,msgstr:e.translations[n].msgstr}:t[n]={msgid:n,msgstr:[e.translations[n]]};a.addTranslation(e.locale,{translations:{"":t}})}));const r=a.build(),i=r.ngettext.bind(r),o=r.gettext.bind(r)},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var a=n(2734),r=n.n(a);const i={before(){this.$slots.default&&""!==this.text.trim()||(r().util.warn("".concat(this.$options.name," cannot be empty and requires a meaningful text content"),this),this.$destroy(),this.$el.remove())},beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?this.$slots.default[0].text.trim():""}}}},6730:()=>{},3351:(e,t,a)=>{"use strict";a.d(t,{iQ:()=>c}),a(6730),a(8136),a(334),a(3132);var i=a(3607),o=a(768),s=a.n(o);const l=n(42515);var u=a(4262);const c={data:()=>({hasStatus:!1,userStatus:{status:null,message:null,icon:null}}),methods:{async fetchUserStatus(e){if(!e)return;const t=(0,l.getCapabilities)();if(Object.prototype.hasOwnProperty.call(t,"user_status")&&t.user_status.enabled&&(0,i.getCurrentUser)())try{const{data:t}=await s().get((0,u.generateOcsUrl)("apps/user_status/api/v1/statuses/{userId}",{userId:e})),{status:n,message:a,icon:r}=t.ocs.data;this.userStatus.status=n,this.userStatus.message=a||"",this.userStatus.icon=r||"",this.hasStatus=!0}catch(e){var n,a;if(404===e.response.status&&0===(null===(n=e.response.data.ocs)||void 0===n||null===(a=n.data)||void 0===a?void 0:a.length))return;r.error(e)}}}}},8136:()=>{},334:(e,t,n)=>{"use strict";var a=n(2734);new(n.n(a)())({data:()=>({isMobile:!1}),watch:{isMobile(e){this.$emit("changed",e)}},created(){window.addEventListener("resize",this.handleWindowResize),this.handleWindowResize()},beforeDestroy(){window.removeEventListener("resize",this.handleWindowResize)},methods:{handleWindowResize(){this.isMobile=document.documentElement.clientWidth<1024}}})},3648:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(932);const r={methods:{n:a.n,t:a.t}}},3132:(e,t,a)=>{"use strict";a(4470),a(1390),n(95573),n(12917),a(2734);const r="(?:^|\\s)",i="(?:[^a-z]|$)";new RegExp("".concat(r,"(@[a-zA-Z0-9_.@\\-']+)(").concat(i,")"),"gi"),new RegExp("".concat(r,"(@"[a-zA-Z0-9 _.@\\-']+")(").concat(i,")"),"gi")},1336:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=(e,t)=>{const n=[];let a=0,r=e.toLowerCase().indexOf(t.toLowerCase(),a),i=0;for(;r>-1&&i{"use strict";function a(e,t,n){this.r=e,this.g=t,this.b=n}function r(e,t,n){const r=[];r.push(t);const i=function(e,t){const n=new Array(3);return n[0]=(t[1].r-t[0].r)/e,n[1]=(t[1].g-t[0].g)/e,n[2]=(t[1].b-t[0].b)/e,n}(e,[t,n]);for(let n=1;ni});const i=function(e){e||(e=6);const t=new a(182,70,157),n=new a(221,203,85),i=new a(0,130,201),o=r(e,t,n),s=r(e,n,i),l=r(e,i,t);return o.concat(s).concat(l)}},1205:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=e=>Math.random().toString(36).replace(/[^a-z]+/g,"").slice(0,e||5)},1390:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const r=n(50337);var i=a.n(r);const o=e=>i()(e,{defaultProtocol:"https",target:"_blank",className:"external linkified",attributes:{rel:"nofollow noopener noreferrer"}})},7645:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=e=>{e.mounted?Array.isArray(e.mounted)||(e.mounted=[e.mounted]):e.mounted=[],e.mounted.push((function(){this.$el.setAttribute("data-v-".concat("cdfec4c"),"")}))}},1206:(e,t,n)=>{"use strict";n.d(t,{L:()=>a}),n(4505);const a=function(){return Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]}),window._nc_focus_trap}},6115:(e,t,a)=>{"use strict";a.d(t,{Z:()=>r});const r=(0,n(17499).IY)().detectUser().setApp("@nextcloud/vue").build()},9934:(e,t,n)=>{"use strict";n.d(t,{Z:()=>w});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i),s=n(1667),l=n.n(s),u=new URL(n(6417),n.b),c=new URL(n(7425),n.b),d=new URL(n(817),n.b),p=new URL(n(9039),n.b),h=new URL(n(3787),n.b),m=new URL(n(4259),n.b),f=new URL(n(5415),n.b),g=new URL(n(5322),n.b),v=o()(r()),_=l()(u),A=l()(c),b=l()(d),y=l()(p),F=l()(h),T=l()(m),C=l()(f),k=l()(g);v.push([e.id,'.material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mx-icon-left:before,.mx-icon-right:before,.mx-icon-double-left:before,.mx-icon-double-right:before,.mx-icon-double-left:after,.mx-icon-double-right:after{content:"";position:relative;top:-1px;display:inline-block;width:10px;height:10px;vertical-align:middle;border-style:solid;border-color:currentColor;border-width:2px 0 0 2px;border-radius:1px;box-sizing:border-box;transform-origin:center;transform:rotate(-45deg) scale(0.7)}.mx-icon-double-left:after{left:-4px}.mx-icon-double-right:before{left:4px}.mx-icon-right:before,.mx-icon-double-right:before,.mx-icon-double-right:after{transform:rotate(135deg) scale(0.7)}.mx-btn{box-sizing:border-box;line-height:1;font-size:14px;font-weight:500;padding:7px 15px;margin:0;cursor:pointer;background-color:rgba(0,0,0,0);outline:none;border:1px solid rgba(0,0,0,.1);border-radius:4px;color:#73879c;white-space:nowrap}.mx-btn:hover{border-color:#1284e7;color:#1284e7}.mx-btn:disabled,.mx-btn.disabled{color:#ccc;cursor:not-allowed}.mx-btn-text{border:0;padding:0 4px;text-align:left;line-height:inherit}.mx-scrollbar{height:100%}.mx-scrollbar:hover .mx-scrollbar-track{opacity:1}.mx-scrollbar-wrap{height:100%;overflow-x:hidden;overflow-y:auto}.mx-scrollbar-track{position:absolute;top:2px;right:2px;bottom:2px;width:6px;z-index:1;border-radius:4px;opacity:0;transition:opacity .24s ease-out}.mx-scrollbar-track .mx-scrollbar-thumb{position:absolute;width:100%;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);transition:background-color .3s}.mx-zoom-in-down-enter-active,.mx-zoom-in-down-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(0.23, 1, 0.32, 1),opacity .3s cubic-bezier(0.23, 1, 0.32, 1);transform-origin:center top}.mx-zoom-in-down-enter,.mx-zoom-in-down-enter-from,.mx-zoom-in-down-leave-to{opacity:0;transform:scaleY(0)}.mx-datepicker{position:relative;display:inline-block;width:210px}.mx-datepicker svg{width:1em;height:1em;vertical-align:-0.15em;fill:currentColor;overflow:hidden}.mx-datepicker-range{width:320px}.mx-datepicker-inline{width:auto}.mx-input-wrapper{position:relative}.mx-input{display:inline-block;box-sizing:border-box;width:100%;height:34px;padding:6px 30px;padding-left:10px;font-size:14px;line-height:1.4;color:#555;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.mx-input:hover,.mx-input:focus{border-color:#409aff}.mx-input:disabled,.mx-input.disabled{color:#ccc;background-color:#f3f3f3;border-color:#ccc;cursor:not-allowed}.mx-input:focus{outline:none}.mx-input::-ms-clear{display:none}.mx-icon-calendar,.mx-icon-clear{position:absolute;top:50%;right:8px;transform:translateY(-50%);font-size:16px;line-height:1;color:rgba(0,0,0,.5);vertical-align:middle}.mx-icon-clear{cursor:pointer}.mx-icon-clear:hover{color:rgba(0,0,0,.8)}.mx-datepicker-main{font:14px/1.5 "Helvetica Neue",Helvetica,Arial,"Microsoft Yahei",sans-serif;color:#73879c;background-color:#fff;border:1px solid #e8e8e8}.mx-datepicker-popup{position:absolute;margin-top:1px;margin-bottom:1px;box-shadow:0 6px 12px rgba(0,0,0,.175);z-index:2001}.mx-datepicker-sidebar{float:left;box-sizing:border-box;width:100px;padding:6px;overflow:auto}.mx-datepicker-sidebar+.mx-datepicker-content{margin-left:100px;border-left:1px solid #e8e8e8}.mx-datepicker-body{position:relative;user-select:none}.mx-btn-shortcut{display:block;padding:0 6px;line-height:24px}.mx-range-wrapper{display:flex}@media(max-width: 750px){.mx-range-wrapper{flex-direction:column}}.mx-datepicker-header{padding:6px 8px;border-bottom:1px solid #e8e8e8}.mx-datepicker-footer{padding:6px 8px;text-align:right;border-top:1px solid #e8e8e8}.mx-calendar{box-sizing:border-box;width:248px;padding:6px 12px}.mx-calendar+.mx-calendar{border-left:1px solid #e8e8e8}.mx-calendar-header,.mx-time-header{box-sizing:border-box;height:34px;line-height:34px;text-align:center;overflow:hidden}.mx-btn-icon-left,.mx-btn-icon-double-left{float:left}.mx-btn-icon-right,.mx-btn-icon-double-right{float:right}.mx-calendar-header-label{font-size:14px}.mx-calendar-decade-separator{margin:0 2px}.mx-calendar-decade-separator:after{content:"~"}.mx-calendar-content{position:relative;height:224px;box-sizing:border-box}.mx-calendar-content .cell{cursor:pointer}.mx-calendar-content .cell:hover{color:#73879c;background-color:#f3f9fe}.mx-calendar-content .cell.active{color:#fff;background-color:#1284e7}.mx-calendar-content .cell.in-range,.mx-calendar-content .cell.hover-in-range{color:#73879c;background-color:#dbedfb}.mx-calendar-content .cell.disabled{cursor:not-allowed;color:#ccc;background-color:#f3f3f3}.mx-calendar-week-mode .mx-date-row{cursor:pointer}.mx-calendar-week-mode .mx-date-row:hover{background-color:#f3f9fe}.mx-calendar-week-mode .mx-date-row.mx-active-week{background-color:#dbedfb}.mx-calendar-week-mode .mx-date-row .cell:hover{color:inherit;background-color:rgba(0,0,0,0)}.mx-calendar-week-mode .mx-date-row .cell.active{color:inherit;background-color:rgba(0,0,0,0)}.mx-week-number{opacity:.5}.mx-table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:100%;height:100%;box-sizing:border-box;text-align:center}.mx-table th{padding:0;font-weight:500;vertical-align:middle}.mx-table td{padding:0;vertical-align:middle}.mx-table-date td,.mx-table-date th{height:32px;font-size:12px}.mx-table-date .today{color:#2a90e9}.mx-table-date .cell.not-current-month{color:#ccc;background:none}.mx-time{flex:1;width:224px;background:#fff}.mx-time+.mx-time{border-left:1px solid #e8e8e8}.mx-calendar-time{position:absolute;top:0;left:0;width:100%;height:100%}.mx-time-header{border-bottom:1px solid #e8e8e8}.mx-time-content{height:224px;box-sizing:border-box;overflow:hidden}.mx-time-columns{display:flex;width:100%;height:100%;overflow:hidden}.mx-time-column{flex:1;position:relative;border-left:1px solid #e8e8e8;text-align:center}.mx-time-column:first-child{border-left:0}.mx-time-column .mx-time-list{margin:0;padding:0;list-style:none}.mx-time-column .mx-time-list::after{content:"";display:block;height:192px}.mx-time-column .mx-time-item{cursor:pointer;font-size:12px;height:32px;line-height:32px}.mx-time-column .mx-time-item:hover{color:#73879c;background-color:#f3f9fe}.mx-time-column .mx-time-item.active{color:#1284e7;background-color:rgba(0,0,0,0);font-weight:700}.mx-time-column .mx-time-item.disabled{cursor:not-allowed;color:#ccc;background-color:#f3f3f3}.mx-time-option{cursor:pointer;padding:8px 10px;font-size:14px;line-height:20px}.mx-time-option:hover{color:#73879c;background-color:#f3f9fe}.mx-time-option.active{color:#1284e7;background-color:rgba(0,0,0,0);font-weight:700}.mx-time-option.disabled{cursor:not-allowed;color:#ccc;background-color:#f3f3f3}.mx-datepicker[data-v-cdfec4c]{user-select:none;color:var(--color-main-text)}.mx-datepicker[data-v-cdfec4c] svg{fill:var(--color-main-text)}.mx-datepicker[data-v-cdfec4c] .mx-input-wrapper .mx-input{width:100%;border:2px solid var(--color-border-maxcontrast);background-color:var(--color-main-background);background-clip:content-box}.mx-datepicker[data-v-cdfec4c] .mx-input-wrapper .mx-input:active:not(.disabled),.mx-datepicker[data-v-cdfec4c] .mx-input-wrapper .mx-input:hover:not(.disabled),.mx-datepicker[data-v-cdfec4c] .mx-input-wrapper .mx-input:focus:not(.disabled){border-color:var(--color-primary-element)}.mx-datepicker[data-v-cdfec4c] .mx-input-wrapper:disabled,.mx-datepicker[data-v-cdfec4c] .mx-input-wrapper.disabled{cursor:not-allowed;opacity:.7}.mx-datepicker[data-v-cdfec4c] .mx-input-wrapper .mx-icon-calendar,.mx-datepicker[data-v-cdfec4c] .mx-input-wrapper .mx-icon-clear{color:var(--color-text-lighter)}.mx-datepicker-main{color:var(--color-main-text);border:1px solid var(--color-border);background-color:var(--color-main-background);font-family:var(--font-face) !important;line-height:1.5}.mx-datepicker-main svg{fill:var(--color-main-text)}.mx-datepicker-main.mx-datepicker-popup{z-index:2000;box-shadow:none}.mx-datepicker-main.mx-datepicker-popup .mx-datepicker-sidebar+.mx-datepicker-content{border-left:1px solid var(--color-border)}.mx-datepicker-main.show-week-number .mx-calendar{width:296px}.mx-datepicker-main .mx-datepicker-header{border-bottom:1px solid var(--color-border)}.mx-datepicker-main .mx-datepicker-footer{border-top:1px solid var(--color-border)}.mx-datepicker-main .mx-datepicker-btn-confirm{background-color:var(--color-primary-element);border-color:var(--color-primary-element);color:var(--color-primary-element-text) !important;opacity:1 !important}.mx-datepicker-main .mx-datepicker-btn-confirm:hover{background-color:var(--color-primary-element-light) !important;border-color:var(--color-primary-element-light) !important}.mx-datepicker-main .mx-calendar{width:264px;padding:5px}.mx-datepicker-main .mx-calendar.mx-calendar-week-mode{width:296px}.mx-datepicker-main .mx-time+.mx-time,.mx-datepicker-main .mx-calendar+.mx-calendar{border-left:1px solid var(--color-border)}.mx-datepicker-main .mx-range-wrapper{display:flex;overflow:hidden}.mx-datepicker-main .mx-range-wrapper .mx-calendar-content .mx-table-date .cell.active{border-radius:var(--border-radius) 0 0 var(--border-radius)}.mx-datepicker-main .mx-range-wrapper .mx-calendar-content .mx-table-date .cell.in-range+.cell.active{border-radius:0 var(--border-radius) var(--border-radius) 0}.mx-datepicker-main .mx-table{text-align:center}.mx-datepicker-main .mx-table thead>tr>th{text-align:center;opacity:.5;color:var(--color-text-lighter)}.mx-datepicker-main .mx-table tr:focus,.mx-datepicker-main .mx-table tr:hover,.mx-datepicker-main .mx-table tr:active{background-color:rgba(0,0,0,0)}.mx-datepicker-main .mx-table .cell{transition:all 100ms ease-in-out;text-align:center;opacity:.7;border-radius:50px}.mx-datepicker-main .mx-table .cell>*{cursor:pointer}.mx-datepicker-main .mx-table .cell.today{opacity:1;color:var(--color-primary-element);font-weight:bold}.mx-datepicker-main .mx-table .cell.today:hover,.mx-datepicker-main .mx-table .cell.today:focus{color:var(--color-primary-element-text)}.mx-datepicker-main .mx-table .cell.in-range,.mx-datepicker-main .mx-table .cell.disabled{border-radius:0;font-weight:normal}.mx-datepicker-main .mx-table .cell.in-range{opacity:.7}.mx-datepicker-main .mx-table .cell.not-current-month{opacity:.5;color:var(--color-text-lighter)}.mx-datepicker-main .mx-table .cell.not-current-month:hover,.mx-datepicker-main .mx-table .cell.not-current-month:focus{opacity:1}.mx-datepicker-main .mx-table .cell:hover,.mx-datepicker-main .mx-table .cell:focus,.mx-datepicker-main .mx-table .cell.actived,.mx-datepicker-main .mx-table .cell.active,.mx-datepicker-main .mx-table .cell.in-range{opacity:1;color:var(--color-primary-element-text);background-color:var(--color-primary-element);font-weight:bold}.mx-datepicker-main .mx-table .cell.disabled{opacity:.5;color:var(--color-text-lighter);border-radius:0;background-color:var(--color-background-darker)}.mx-datepicker-main .mx-table .mx-week-number{text-align:center;opacity:.7;border-radius:50px}.mx-datepicker-main .mx-table span.mx-week-number,.mx-datepicker-main .mx-table li.mx-week-number,.mx-datepicker-main .mx-table span.cell,.mx-datepicker-main .mx-table li.cell{min-height:32px}.mx-datepicker-main .mx-table.mx-table-date thead,.mx-datepicker-main .mx-table.mx-table-date tbody,.mx-datepicker-main .mx-table.mx-table-year,.mx-datepicker-main .mx-table.mx-table-month{display:flex;flex-direction:column;justify-content:space-around}.mx-datepicker-main .mx-table.mx-table-date thead tr,.mx-datepicker-main .mx-table.mx-table-date tbody tr,.mx-datepicker-main .mx-table.mx-table-year tr,.mx-datepicker-main .mx-table.mx-table-month tr{display:inline-flex;align-items:center;flex:1 1 32px;justify-content:space-around;min-height:32px}.mx-datepicker-main .mx-table.mx-table-date thead th,.mx-datepicker-main .mx-table.mx-table-date thead td,.mx-datepicker-main .mx-table.mx-table-date tbody th,.mx-datepicker-main .mx-table.mx-table-date tbody td,.mx-datepicker-main .mx-table.mx-table-year th,.mx-datepicker-main .mx-table.mx-table-year td,.mx-datepicker-main .mx-table.mx-table-month th,.mx-datepicker-main .mx-table.mx-table-month td{display:flex;align-items:center;flex:0 1 32%;justify-content:center;min-width:32px;height:95%;min-height:32px;transition:background 100ms ease-in-out}.mx-datepicker-main .mx-table.mx-table-year tr th,.mx-datepicker-main .mx-table.mx-table-year tr td{flex-basis:48%}.mx-datepicker-main .mx-table.mx-table-date tr th,.mx-datepicker-main .mx-table.mx-table-date tr td{flex-basis:32px}.mx-datepicker-main .mx-btn{min-width:32px;height:32px;margin:0 2px !important;padding:7px 10px;cursor:pointer;text-decoration:none;opacity:.5;color:var(--color-text-lighter);border-radius:32px;line-height:20px}.mx-datepicker-main .mx-btn:hover,.mx-datepicker-main .mx-btn:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker-main .mx-calendar-header,.mx-datepicker-main .mx-time-header{display:inline-flex;align-items:center;justify-content:space-between;width:100%;height:44px;margin-bottom:4px}.mx-datepicker-main .mx-calendar-header button,.mx-datepicker-main .mx-time-header button{min-width:32px;min-height:32px;margin:0;cursor:pointer;text-align:center;text-decoration:none;opacity:.7;color:var(--color-main-text);border-radius:32px;line-height:20px}.mx-datepicker-main .mx-calendar-header button:hover,.mx-datepicker-main .mx-time-header button:hover,.mx-datepicker-main .mx-calendar-header button:focus,.mx-datepicker-main .mx-time-header button:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left,.mx-datepicker-main .mx-time-header button.mx-btn-icon-double-left,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left,.mx-datepicker-main .mx-time-header button.mx-btn-icon-left,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right,.mx-datepicker-main .mx-time-header button.mx-btn-icon-right,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right,.mx-datepicker-main .mx-time-header button.mx-btn-icon-double-right{align-items:center;justify-content:center;width:32px;padding:0;background-repeat:no-repeat;background-size:16px;background-position:center}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left>i,.mx-datepicker-main .mx-time-header button.mx-btn-icon-double-left>i,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left>i,.mx-datepicker-main .mx-time-header button.mx-btn-icon-left>i,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right>i,.mx-datepicker-main .mx-time-header button.mx-btn-icon-right>i,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right>i,.mx-datepicker-main .mx-time-header button.mx-btn-icon-double-right>i{display:none}.mx-datepicker-main .mx-calendar-header button.mx-btn-text,.mx-datepicker-main .mx-time-header button.mx-btn-text{line-height:initial}.mx-datepicker-main .mx-calendar-header .mx-calendar-header-label,.mx-datepicker-main .mx-time-header .mx-calendar-header-label{display:flex}.mx-datepicker-main .mx-calendar-header .mx-btn-icon-double-left,.mx-datepicker-main .mx-time-header .mx-btn-icon-double-left{background-image:url('+_+")}body.theme--dark .mx-datepicker-main .mx-calendar-header .mx-btn-icon-double-left,body.theme--dark .mx-datepicker-main .mx-time-header .mx-btn-icon-double-left{background-image:url("+A+")}.mx-datepicker-main .mx-calendar-header .mx-btn-icon-left,.mx-datepicker-main .mx-time-header .mx-btn-icon-left{background-image:url("+b+")}body.theme--dark .mx-datepicker-main .mx-calendar-header .mx-btn-icon-left,body.theme--dark .mx-datepicker-main .mx-time-header .mx-btn-icon-left{background-image:url("+y+")}.mx-datepicker-main .mx-calendar-header .mx-btn-icon-right,.mx-datepicker-main .mx-time-header .mx-btn-icon-right{background-image:url("+F+")}body.theme--dark .mx-datepicker-main .mx-calendar-header .mx-btn-icon-right,body.theme--dark .mx-datepicker-main .mx-time-header .mx-btn-icon-right{background-image:url("+T+")}.mx-datepicker-main .mx-calendar-header .mx-btn-icon-double-right,.mx-datepicker-main .mx-time-header .mx-btn-icon-double-right{background-image:url("+C+")}body.theme--dark .mx-datepicker-main .mx-calendar-header .mx-btn-icon-double-right,body.theme--dark .mx-datepicker-main .mx-time-header .mx-btn-icon-double-right{background-image:url("+k+")}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right,.mx-datepicker-main .mx-time-header button.mx-btn-icon-right{order:2}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right,.mx-datepicker-main .mx-time-header button.mx-btn-icon-double-right{order:3}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row .mx-week-number{font-weight:bold}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week{opacity:1;border-radius:50px;background-color:var(--color-background-dark)}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td{background-color:rgba(0,0,0,0)}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td:hover,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td:focus,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td:hover,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td:focus{color:inherit}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td{opacity:.7;font-weight:normal}.mx-datepicker-main .mx-time{background-color:var(--color-main-background)}.mx-datepicker-main .mx-time .mx-time-header{justify-content:center;border-bottom:1px solid var(--color-border)}.mx-datepicker-main .mx-time .mx-time-column{border-left:1px solid var(--color-border)}.mx-datepicker-main .mx-time .mx-time-option.active,.mx-datepicker-main .mx-time .mx-time-option:hover,.mx-datepicker-main .mx-time .mx-time-item.active,.mx-datepicker-main .mx-time .mx-time-item:hover{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.mx-datepicker-main .mx-time .mx-time-option.disabled,.mx-datepicker-main .mx-time .mx-time-item.disabled{cursor:not-allowed;opacity:.5;color:var(--color-main-text);background-color:var(--color-main-background)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./node_modules/vue2-datepicker/scss/icon.scss","webpack://./node_modules/vue2-datepicker/scss/btn.scss","webpack://./node_modules/vue2-datepicker/scss/var.scss","webpack://./node_modules/vue2-datepicker/scss/scrollbar.scss","webpack://./node_modules/vue2-datepicker/scss/animation.scss","webpack://./node_modules/vue2-datepicker/scss/index.scss","webpack://./src/components/NcDatetimePicker/index.scss","webpack://./src/assets/variables.scss"],names:[],mappings:"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",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@import './var.scss';\n\n.#{$namespace}-icon-left:before,\n.#{$namespace}-icon-right:before,\n.#{$namespace}-icon-double-left:before,\n.#{$namespace}-icon-double-right:before,\n.#{$namespace}-icon-double-left:after,\n.#{$namespace}-icon-double-right:after {\n content: '';\n position: relative;\n top: -1px;\n display: inline-block;\n width: 10px;\n height: 10px;\n vertical-align: middle;\n border-style: solid;\n border-color: currentColor;\n border-width: 2px 0 0 2px;\n border-radius: 1px;\n box-sizing: border-box;\n transform-origin: center;\n transform: rotate(-45deg) scale(0.7);\n}\n\n.#{$namespace}-icon-double-left:after {\n left: -4px;\n}\n\n.#{$namespace}-icon-double-right:before {\n left: 4px;\n}\n\n.#{$namespace}-icon-right:before,\n.#{$namespace}-icon-double-right:before,\n.#{$namespace}-icon-double-right:after {\n transform: rotate(135deg) scale(0.7);\n}\n","@import './var.scss';\n\n.#{$namespace}-btn {\n box-sizing: border-box;\n line-height: 1;\n font-size: 14px;\n font-weight: 500;\n padding: 7px 15px;\n margin: 0;\n cursor: pointer;\n background-color: transparent;\n outline: none;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n color: $default-color;\n white-space: nowrap;\n &:hover {\n border-color: $primary-color;\n color: $primary-color;\n }\n &:disabled,\n &.disabled {\n color: $disabled-color;\n cursor: not-allowed;\n }\n}\n\n.#{$namespace}-btn-text {\n border: 0;\n padding: 0 4px;\n text-align: left;\n line-height: inherit;\n}\n","$namespace: 'mx' !default;\n\n$default-color: #73879c !default;\n$primary-color: #1284e7 !default;\n\n$today-color: mix(#fff, $primary-color, 10%) !default;\n\n$popup-z-index: 2001 !default;\n\n$input-border-color: #ccc !default;\n$input-color: #555 !default;\n$input-hover-border-color: #409aff !default;\n\n$disabled-color: #ccc !default;\n$disabled-background-color: #f3f3f3 !default;\n\n$border-color: #e8e8e8 !default;\n\n$calendar-active-color: #fff !default;\n$calendar-active-background-color: $primary-color !default;\n\n$calendar-hover-color: $default-color !default;\n$calendar-hover-background-color: mix(#fff, $calendar-active-background-color, 95%) !default;\n\n$calendar-in-range-color: $default-color !default;\n$calendar-in-range-background-color: mix(#fff, $calendar-active-background-color, 85%) !default;\n\n$time-active-color: $primary-color !default;\n$time-active-background-color: transparent !default;\n\n$time-hover-color: $default-color !default;\n$time-hover-background-color: mix(#fff, $calendar-active-background-color, 95%) !default;\n\n$input-border-radius: 4px !default;\n$sidebar-margin-left: 100px !default;\n","@import './var.scss';\n\n.#{$namespace}-scrollbar {\n height: 100%;\n &:hover {\n .#{$namespace}-scrollbar-track {\n opacity: 1;\n }\n }\n}\n\n.#{$namespace}-scrollbar-wrap {\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.#{$namespace}-scrollbar-track {\n position: absolute;\n top: 2px;\n right: 2px;\n bottom: 2px;\n width: 6px;\n z-index: 1;\n border-radius: 4px;\n opacity: 0;\n transition: opacity 0.24s ease-out;\n .#{$namespace}-scrollbar-thumb {\n position: absolute;\n width: 100%;\n height: 0;\n cursor: pointer;\n border-radius: inherit;\n background-color: rgba(144, 147, 153, 0.3);\n transition: background-color 0.3s;\n }\n}\n","@import './var.scss';\n\n.#{$namespace}-zoom-in-down-enter-active,\n.#{$namespace}-zoom-in-down-leave-active {\n opacity: 1;\n transform: scaleY(1);\n transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1),\n opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1);\n transform-origin: center top;\n}\n\n.#{$namespace}-zoom-in-down-enter,\n.#{$namespace}-zoom-in-down-enter-from,\n.#{$namespace}-zoom-in-down-leave-to {\n opacity: 0;\n transform: scaleY(0);\n}\n","@import './var.scss';\n@import './icon.scss';\n@import './btn.scss';\n@import './scrollbar.scss';\n@import './animation.scss';\n\n.#{$namespace}-datepicker {\n position: relative;\n display: inline-block;\n width: 210px;\n svg {\n width: 1em;\n height: 1em;\n vertical-align: -0.15em;\n fill: currentColor;\n overflow: hidden;\n }\n}\n\n.#{$namespace}-datepicker-range {\n width: 320px;\n}\n\n.#{$namespace}-datepicker-inline {\n width: auto;\n}\n\n.#{$namespace}-input-wrapper {\n position: relative;\n}\n\n.#{$namespace}-input {\n display: inline-block;\n box-sizing: border-box;\n width: 100%;\n height: 34px;\n padding: 6px 30px;\n padding-left: 10px;\n font-size: 14px;\n line-height: 1.4;\n color: $input-color;\n background-color: #fff;\n border: 1px solid $input-border-color;\n border-radius: $input-border-radius;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n\n &:hover,\n &:focus {\n border-color: $input-hover-border-color;\n }\n &:disabled,\n &.disabled {\n color: $disabled-color;\n background-color: $disabled-background-color;\n border-color: $input-border-color;\n cursor: not-allowed;\n }\n &:focus {\n outline: none;\n }\n &::-ms-clear {\n display: none;\n }\n}\n\n.#{$namespace}-icon-calendar,\n.#{$namespace}-icon-clear {\n position: absolute;\n top: 50%;\n right: 8px;\n transform: translateY(-50%);\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.5);\n vertical-align: middle;\n}\n\n.#{$namespace}-icon-clear {\n cursor: pointer;\n &:hover {\n color: rgba(0, 0, 0, 0.8);\n }\n}\n\n.#{$namespace}-datepicker-main {\n font: 14px/1.5 'Helvetica Neue', Helvetica, Arial, 'Microsoft Yahei', sans-serif;\n color: $default-color;\n background-color: #fff;\n border: 1px solid $border-color;\n}\n\n.#{$namespace}-datepicker-popup {\n position: absolute;\n margin-top: 1px;\n margin-bottom: 1px;\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n z-index: $popup-z-index;\n}\n\n.#{$namespace}-datepicker-sidebar {\n float: left;\n box-sizing: border-box;\n width: $sidebar-margin-left;\n padding: 6px;\n overflow: auto;\n}\n\n.#{$namespace}-datepicker-sidebar + .#{$namespace}-datepicker-content {\n margin-left: $sidebar-margin-left;\n border-left: 1px solid $border-color;\n}\n\n.#{$namespace}-datepicker-body {\n position: relative;\n user-select: none;\n}\n\n.#{$namespace}-btn-shortcut {\n display: block;\n padding: 0 6px;\n line-height: 24px;\n}\n\n.#{$namespace}-range-wrapper {\n display: flex;\n @media (max-width: 750px) {\n flex-direction: column;\n }\n}\n\n.#{$namespace}-datepicker-header {\n padding: 6px 8px;\n border-bottom: 1px solid $border-color;\n}\n\n.#{$namespace}-datepicker-footer {\n padding: 6px 8px;\n text-align: right;\n border-top: 1px solid $border-color;\n}\n\n.#{$namespace}-calendar {\n box-sizing: border-box;\n width: 248px;\n padding: 6px 12px;\n & + & {\n border-left: 1px solid $border-color;\n }\n}\n\n.#{$namespace}-calendar-header {\n box-sizing: border-box;\n height: 34px;\n line-height: 34px;\n text-align: center;\n overflow: hidden;\n}\n\n.#{$namespace}-btn-icon-left,\n.#{$namespace}-btn-icon-double-left {\n float: left;\n}\n.#{$namespace}-btn-icon-right,\n.#{$namespace}-btn-icon-double-right {\n float: right;\n}\n\n.#{$namespace}-calendar-header-label {\n font-size: 14px;\n}\n\n.#{$namespace}-calendar-decade-separator {\n margin: 0 2px;\n &:after {\n content: '~';\n }\n}\n\n.#{$namespace}-calendar-content {\n position: relative;\n height: 224px;\n box-sizing: border-box;\n .cell {\n cursor: pointer;\n &:hover {\n color: $calendar-hover-color;\n background-color: $calendar-hover-background-color;\n }\n &.active {\n color: $calendar-active-color;\n background-color: $calendar-active-background-color;\n }\n &.in-range,\n &.hover-in-range {\n color: $calendar-in-range-color;\n background-color: $calendar-in-range-background-color;\n }\n &.disabled {\n cursor: not-allowed;\n color: $disabled-color;\n background-color: $disabled-background-color;\n }\n }\n}\n\n.#{$namespace}-calendar-week-mode {\n .#{$namespace}-date-row {\n cursor: pointer;\n &:hover {\n background-color: $calendar-hover-background-color;\n }\n &.#{$namespace}-active-week {\n background-color: $calendar-in-range-background-color;\n }\n .cell {\n &:hover {\n color: inherit;\n background-color: transparent;\n }\n &.active {\n color: inherit;\n background-color: transparent;\n }\n }\n }\n}\n\n.#{$namespace}-week-number {\n opacity: 0.5;\n}\n\n.#{$namespace}-table {\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n text-align: center;\n\n th {\n padding: 0;\n font-weight: 500;\n vertical-align: middle;\n }\n td {\n padding: 0;\n vertical-align: middle;\n }\n}\n\n.#{$namespace}-table-date {\n td,\n th {\n height: 32px;\n font-size: 12px;\n }\n\n .today {\n color: $today-color;\n }\n .cell.not-current-month {\n color: #ccc;\n background: none; // cover the in-range style\n }\n}\n\n.#{$namespace}-time {\n flex: 1;\n width: 224px;\n background: #fff;\n & + & {\n border-left: 1px solid $border-color;\n }\n}\n.#{$namespace}-calendar-time {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.#{$namespace}-time-header {\n @extend .#{$namespace}-calendar-header;\n border-bottom: 1px solid $border-color;\n}\n\n.#{$namespace}-time-content {\n height: 224px;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.#{$namespace}-time-columns {\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.#{$namespace}-time-column {\n flex: 1;\n position: relative;\n border-left: 1px solid $border-color;\n text-align: center;\n\n &:first-child {\n border-left: 0;\n }\n .#{$namespace}-time-list {\n margin: 0;\n padding: 0;\n list-style: none;\n &::after {\n content: '';\n display: block;\n height: 32 * 6px;\n }\n }\n .#{$namespace}-time-item {\n cursor: pointer;\n font-size: 12px;\n height: 32px;\n line-height: 32px;\n &:hover {\n color: $time-hover-color;\n background-color: $time-hover-background-color;\n }\n &.active {\n color: $time-active-color;\n background-color: $time-active-background-color;\n font-weight: 700;\n }\n &.disabled {\n cursor: not-allowed;\n color: $disabled-color;\n background-color: $disabled-background-color;\n }\n }\n}\n\n.#{$namespace}-time-option {\n cursor: pointer;\n padding: 8px 10px;\n font-size: 14px;\n line-height: 20px;\n &:hover {\n color: $time-hover-color;\n background-color: $time-hover-background-color;\n }\n &.active {\n color: $time-active-color;\n background-color: $time-active-background-color;\n font-weight: 700;\n }\n &.disabled {\n cursor: not-allowed;\n color: $disabled-color;\n background-color: $disabled-background-color;\n }\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n$cell_height: 32px;\n\n@import '~vue2-datepicker/scss/index';\n\n.mx-datepicker[data-v-#{$scope_version}] {\n\tuser-select: none;\n\tcolor: var(--color-main-text);\n\n\tsvg {\n\t\tfill: var(--color-main-text);\n\t}\n\n\t/* INPUT CONTAINER */\n\t.mx-input-wrapper {\n\t\t// input\n\t\t.mx-input {\n\t\t\twidth: 100%;\n\t\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-clip: content-box;\n\t\t\t\n\t\t\t&:active:not(.disabled),\n\t\t\t&:hover:not(.disabled),\n\t\t\t&:focus:not(.disabled) {\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\n\t\t&:disabled,\n\t\t&.disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: $opacity_normal;\n\t\t}\n\n\t\t.mx-icon-calendar,\n\t\t.mx-icon-clear {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n}\n\n// Datepicker popup wrapper\n.mx-datepicker-main {\n\tcolor: var(--color-main-text);\n\tborder: 1px solid var(--color-border);\n\tbackground-color: var(--color-main-background);\n\tfont-family: var(--font-face) !important;\n\tline-height: 1.5;\n\n\tsvg {\n\t\tfill: var(--color-main-text);\n\t}\n\n\t&.mx-datepicker-popup {\n\t\tz-index: 2000;\n\t\tbox-shadow: none;\n\n\t\t.mx-datepicker-sidebar + .mx-datepicker-content {\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\t\n\t&.show-week-number .mx-calendar {\n\t\twidth: $cell_height * 8 + 2 * 5px + 30px; // week number + 7 days + padding + 30px padding to fit the buttons\n\t}\n\n\t.mx-datepicker-header {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t.mx-datepicker-footer {\n\t\tborder-top: 1px solid var(--color-border);\n\t}\n\n\t.mx-datepicker-btn-confirm {\n\t\tbackground-color: var(--color-primary-element);\n\t\tborder-color: var(--color-primary-element);\n\t\tcolor: var(--color-primary-element-text) !important;\n\t\topacity: 1 !important;\n\t}\n\n\t.mx-datepicker-btn-confirm:hover {\n\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\tborder-color: var(--color-primary-element-light) !important;\n\t}\n\n\t// default popup styles\n\t.mx-calendar {\n\t\twidth: $cell_height * 7 + 2 * 5px + 30px; // 7 days + padding + 30px padding to fit the buttons\n\t\tpadding: 5px;\n\t\t&.mx-calendar-week-mode {\n\t\t\twidth: $cell_height * 8 + 2 * 5px + 30px; // week number + 7 days + padding + 30px padding to fit the buttons\n\t\t}\n\t}\n\n\t.mx-time + .mx-time,\n\t.mx-calendar + .mx-calendar {\n\t\tborder-left: 1px solid var(--color-border);\n\t}\n\n\t.mx-range-wrapper {\n\t\tdisplay: flex;\n\t\toverflow: hidden;\n\n\t\t// first active cell, range style on day picker panel only\n\t\t.mx-calendar-content .mx-table-date .cell {\n\t\t\t&.active {\n\t\t\t\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\n\t\t\t}\n\t\t\t// second selected cell\n\t\t\t&.in-range + .cell.active {\n\t\t\t\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Various panels\n\t.mx-table {\n\t\ttext-align: center;\n\n\t\tthead > tr > th {\n\t\t\ttext-align: center;\n\t\t\topacity: $opacity_disabled;\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\n\t\t// Override table rule from server\n\t\ttr:focus,\n\t\ttr:hover,\n\t\ttr:active {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t// regular cell style\n\t\t.cell {\n\t\t\ttransition: all 100ms ease-in-out;\n\t\t\ttext-align: center;\n\t\t\topacity: $opacity_normal;\n\t\t\tborder-radius: 50px;\n\n\t\t\t// force pointer on all content\n\t\t\t> * {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t// Selected and mouse event\n\t\t\t&.today {\n\t\t\t\topacity: $opacity_full;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tfont-weight: bold;\n\t\t\t\t&:hover,\n\t\t\t\t&:focus {\n\t\t\t\t\tcolor: var(--color-primary-element-text);\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.in-range,\n\t\t\t&.disabled {\n\t\t\t\tborder-radius: 0;\n\t\t\t\tfont-weight: normal;\n\t\t\t}\n\t\t\t&.in-range {\n\t\t\t\topacity: $opacity_normal;\n\t\t\t}\n\t\t\t&.not-current-month {\n\t\t\t\topacity: $opacity_disabled;\n\t\t\t\tcolor: var(--color-text-lighter);\n\t\t\t\t&:hover,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: $opacity_full;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// hover-/focus after the other rules\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&.actived,\n\t\t\t&.active,\n\t\t\t&.in-range {\n\t\t\t\topacity: $opacity_full;\n\t\t\t\tcolor: var(--color-primary-element-text);\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t\t&.disabled {\n\t\t\t\topacity: $opacity_disabled;\n\t\t\t\tcolor: var(--color-text-lighter);\n\t\t\t\tborder-radius: 0;\n\t\t\t\tbackground-color: var(--color-background-darker);\n\t\t\t}\n\t\t}\n\n\t\t.mx-week-number {\n\t\t\ttext-align: center;\n\t\t\topacity: $opacity_normal;\n\t\t\tborder-radius: 50px;\n\t\t}\n\n\t\t// cell that are not in a table\n\t\tspan.mx-week-number,\n\t\tli.mx-week-number,\n\t\tspan.cell,\n\t\tli.cell {\n\t\t\tmin-height: $cell_height;\n\t\t}\n\n\t\t// Standard grid/flex layout for day/month/year panels\n\t\t&.mx-table-date thead,\n\t\t&.mx-table-date tbody,\n\t\t&.mx-table-year,\n\t\t&.mx-table-month {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-around;\n\t\t\ttr {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\talign-items: center;\n\t\t\t\tflex: 1 1 $cell_height;\n\t\t\t\tjustify-content: space-around;\n\t\t\t\tmin-height: $cell_height;\n\t\t\t}\n\t\t\t// Default cell style\n\t\t\tth,\n\t\t\ttd {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\t// 3 rows with a little spacing\n\t\t\t\tflex: 0 1 32%;\n\t\t\t\tjustify-content: center;\n\t\t\t\tmin-width: $cell_height;\n\t\t\t\t// spacing between rows\n\t\t\t\theight: 95%;\n\t\t\t\tmin-height: $cell_height;\n\t\t\t\ttransition: background 100ms ease-in-out;\n\t\t\t}\n\t\t}\n\t\t&.mx-table-year {\n\t\t\ttr th,\n\t\t\ttr td {\n\t\t\t\t// only two rows in year panel\n\t\t\t\tflex-basis: 48%;\n\t\t\t}\n\t\t}\n\t\t&.mx-table-date {\n\t\t\ttr th,\n\t\t\ttr td {\n\t\t\t\t// only two rows in year panel\n\t\t\t\tflex-basis: $cell_height;\n\t\t\t}\n\t\t}\n\t}\n\n\t// default buttons: header...\n\t.mx-btn {\n\t\tmin-width: $cell_height;\n\t\theight: $cell_height;\n\t\tmargin: 0 2px !important; // center also single element. Definitively use margin so that buttons are not touching\n\t\tpadding: 7px 10px;\n\t\tcursor: pointer;\n\t\ttext-decoration: none;\n\t\topacity: $opacity_disabled;\n\t\tcolor: var(--color-text-lighter);\n\t\tborder-radius: $cell_height;\n\t\tline-height: $cell_height - 12px; // padding minus 2px for better visual\n\t\t// Mouse feedback\n\t\t&:hover,\n\t\t&:focus {\n\t\t\topacity: $opacity_full;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tbackground-color: var(--color-background-darker);\n\t\t}\n\t}\n\n\t// Header, arrows, years, months\n\t.mx-calendar-header {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\twidth: 100%;\n\t\theight: $clickable-area;\n\t\tmargin-bottom: 4px;\n\n\t\tbutton {\n\t\t\tmin-width: $cell_height;\n\t\t\tmin-height: $cell_height;\n\t\t\tmargin: 0;\n\t\t\tcursor: pointer;\n\t\t\ttext-align: center;\n\t\t\ttext-decoration: none;\n\t\t\topacity: $opacity_normal;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-radius: $cell_height;\n\t\t\tline-height: $cell_height - 12px; // padding minus 2px for better visual\n\n\t\t\t// Mouse feedback\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\topacity: $opacity_full;\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\tbackground-color: var(--color-background-darker);\n\t\t\t}\n\n\t\t\t// Header arrows\n\t\t\t&.mx-btn-icon-double-left,\n\t\t\t&.mx-btn-icon-left,\n\t\t\t&.mx-btn-icon-right,\n\t\t\t&.mx-btn-icon-double-right {\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\twidth: $cell_height;\n\t\t\t\tpadding: 0; // leave the centering to flex\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-size: 16px;\n\t\t\t\tbackground-position: center;\n\n\t\t\t\t// Hide original icons\n\t\t\t\t> i {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.mx-btn-text {\n\t\t\t\tline-height: initial;\n\t\t\t}\n\t\t}\n\n\t\t.mx-calendar-header-label {\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t.mx-btn-icon-double-left {\n\t\t\tbackground-image: url('./chevron-double-left.svg');\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: url('./chevron-double-left-light.svg');\n\t\t\t}\n\t\t}\n\n\t\t.mx-btn-icon-left {\n\t\t\tbackground-image: url('./chevron-left.svg');\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: url('./chevron-left-light.svg');\n\t\t\t}\n\t\t}\n\n\t\t.mx-btn-icon-right {\n\t\t\tbackground-image: url('./chevron-right.svg');\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: url('./chevron-right-light.svg');\n\t\t\t}\n\t\t}\n\n\t\t.mx-btn-icon-double-right {\n\t\t\tbackground-image: url('./chevron-double-right.svg');\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: url('./chevron-double-right-light.svg');\n\t\t\t}\n\t\t}\n\n\t\tbutton.mx-btn-icon-right {\n\t\t\torder: 2;\n\t\t}\n\n\t\tbutton.mx-btn-icon-double-right {\n\t\t\torder: 3;\n\t\t}\n\t}\n\t// Week panel\n\t.mx-calendar-week-mode {\n\t\t// move focus on row and not on cell\n\t\t.mx-date-row {\n\t\t\t.mx-week-number {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t\t&:hover,\n\t\t\t&.mx-active-week {\n\t\t\t\topacity: $opacity_full;\n\t\t\t\tborder-radius: 50px;\n\t\t\t\tbackground-color: var(--color-background-dark);\n\t\t\t\ttd {\n\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t&, &:hover, &:focus {\n\t\t\t\t\t\tcolor: inherit;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.mx-active-week {\n\t\t\t\tcolor: var(--color-primary-element-text);\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\t// Remove cell feedback on selected rows\n\t\t\t\ttd {\n\t\t\t\t\topacity: $opacity_normal;\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Time panel\n\t.mx-time {\n\t\tbackground-color: var(--color-main-background);\n\n\t\t.mx-time-header {\n\t\t\t// only one button, center it\n\t\t\tjustify-content: center;\n\t\t\tborder-bottom: 1px solid var(--color-border);\n\t\t}\n\n\t\t.mx-time-column {\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\n\t\t.mx-time-option,\n\t\t.mx-time-item {\n\t\t\t&.active,\n\t\t\t&:hover {\n\t\t\t\tcolor: var(--color-primary-element-text);\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t}\n\n\t\t\t&.disabled {\n\t\t\t\tcursor: not-allowed;\n\t\t\t\topacity: $opacity_disabled;\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const w=v},5195:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-4faf3d66]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-4faf3d66]:not(.button-vue),input[data-v-4faf3d66]:not([type=range]),textarea[data-v-4faf3d66]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-4faf3d66]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-4faf3d66]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-4faf3d66],input[data-v-4faf3d66]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-4faf3d66]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-4faf3d66],textarea[data-v-4faf3d66]:not(:disabled):not(.primary):hover,textarea[data-v-4faf3d66]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-4faf3d66]{border-color:var(--color-primary-element);outline:none}button[data-v-4faf3d66]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-4faf3d66]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-4faf3d66]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-4faf3d66]:not(.button-vue):disabled,input[data-v-4faf3d66]:not([type=range]):disabled,textarea[data-v-4faf3d66]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-4faf3d66]:not(.button-vue):required,input[data-v-4faf3d66]:not([type=range]):required,textarea[data-v-4faf3d66]:required{box-shadow:none}button[data-v-4faf3d66]:not(.button-vue):invalid,input[data-v-4faf3d66]:not([type=range]):invalid,textarea[data-v-4faf3d66]:invalid{border-color:var(--color-error);box-shadow:none !important}button:not(.button-vue).primary[data-v-4faf3d66],input:not([type=range]).primary[data-v-4faf3d66],textarea.primary[data-v-4faf3d66]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-4faf3d66]:not(:disabled):hover,button:not(.button-vue).primary[data-v-4faf3d66]:not(:disabled):focus,button:not(.button-vue).primary[data-v-4faf3d66]:not(:disabled):active,input:not([type=range]).primary[data-v-4faf3d66]:not(:disabled):hover,input:not([type=range]).primary[data-v-4faf3d66]:not(:disabled):focus,input:not([type=range]).primary[data-v-4faf3d66]:not(:disabled):active,textarea.primary[data-v-4faf3d66]:not(:disabled):hover,textarea.primary[data-v-4faf3d66]:not(:disabled):focus,textarea.primary[data-v-4faf3d66]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-4faf3d66]:not(:disabled):active,input:not([type=range]).primary[data-v-4faf3d66]:not(:disabled):active,textarea.primary[data-v-4faf3d66]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-4faf3d66]:disabled,input:not([type=range]).primary[data-v-4faf3d66]:disabled,textarea.primary[data-v-4faf3d66]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.active[data-v-4faf3d66]{background-color:var(--color-background-hover);border-radius:6px;padding:0}.action--disabled[data-v-4faf3d66]{pointer-events:none;opacity:.5}.action--disabled[data-v-4faf3d66]:hover,.action--disabled[data-v-4faf3d66]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-4faf3d66]{opacity:1 !important}.action-input[data-v-4faf3d66]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:rgba(0,0,0,0);box-shadow:none;font-weight:normal}.action-input__icon-wrapper[data-v-4faf3d66]{display:flex;align-self:center;align-items:center;justify-content:center}.action-input__icon-wrapper[data-v-4faf3d66] .material-design-icon{width:44px;height:44px;opacity:1}.action-input__icon-wrapper[data-v-4faf3d66] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-input>span[data-v-4faf3d66]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-4faf3d66]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-input__form[data-v-4faf3d66]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-right:14px}.action-input__container[data-v-4faf3d66]{width:100%}.action-input__input-container[data-v-4faf3d66]{display:flex}.action-input__input-container .colorpicker__trigger[data-v-4faf3d66],.action-input__input-container .colorpicker__preview[data-v-4faf3d66]{width:100%}.action-input__input-container .colorpicker__preview[data-v-4faf3d66]{width:100%;height:36px;border-radius:var(--border-radius-large);border:2px solid var(--color-border-maxcontrast);box-shadow:none !important}.action-input__text-label[data-v-4faf3d66]{padding:4px 0;display:block}.action-input__text-label--hidden[data-v-4faf3d66]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-input__datetimepicker[data-v-4faf3d66]{width:100%}.action-input__datetimepicker[data-v-4faf3d66] .mx-input{margin:0}.action-input__multi[data-v-4faf3d66]{width:100%}li:last-child>.action-input[data-v-4faf3d66]{padding-bottom:10px}li:first-child>.action-input[data-v-4faf3d66]:not(.action-input--visible-label){padding-top:10px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/assets/inputs.scss","webpack://./src/assets/variables.scss","webpack://./src/assets/action.scss","webpack://./src/components/NcActionInput/NcActionInput.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCqBD,4GAGC,QAAA,CACA,eAAA,CAEA,WAAA,CAEA,+BAAA,CACA,yCAAA,CACA,kCAAA,CACA,YAAA,CACA,6CAAA,CAEA,cAAA,CAGC,koBAIC,yCAAA,CACA,YAAA,CAGD,wNACC,6BAAA,CACA,YAAA,CACA,6CAAA,CAIF,uIACC,cAAA,CACA,UCrBiB,CDsBjB,mCAAA,CACA,6CAAA,CAGD,uIACC,eAAA,CAGD,oIACC,+BAAA,CACA,0BAAA,CAID,oIACC,cAAA,CACA,uCAAA,CACA,yCAAA,CACA,6CAAA,CAGC,4kBAGC,+CAAA,CACA,mDAAA,CAED,sMACC,4CAAA,CAIF,+JACC,cAAA,CACA,4CAAA,CAEA,6CAAA,CE3ED,2BACC,8CAAA,CACA,iBAAA,CACA,SAAA,CAMF,mCACC,mBAAA,CACA,UDMiB,CCLjB,kFACC,cAAA,CACA,UDGgB,CCDjB,qCACC,oBAAA,CCjCH,+BACC,YAAA,CACA,sBAAA,CAEA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CAEA,cAAA,CACA,kBAAA,CAEA,4BAAA,CACA,QAAA,CACA,eAAA,CACA,8BAAA,CACA,eAAA,CAEA,kBAAA,CAEA,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,mEACC,UFXc,CEYd,WFZc,CEad,SFMY,CEJZ,8FACC,qBAAA,CAKH,oCACC,cAAA,CACA,kBAAA,CAGD,qCACC,WAAA,CACA,YAAA,CAGA,wBAAA,CAEA,+BAAA,CACA,oBF9BU,CEkCX,qCACC,YAAA,CACA,kBAAA,CACA,aAAA,CAEA,YAAA,CACA,kBFpCY,CEuCb,0CACC,UAAA,CAGD,gDACC,YAAA,CAGC,4IAEC,UAAA,CAGD,sEACC,UAAA,CACA,WAAA,CACA,wCAAA,CACA,gDAAA,CACA,0BAAA,CAKH,2CACC,aAAA,CACA,aAAA,CAEA,mDACC,iBAAA,CACA,aAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,eAAA,CAIF,+CACC,UAAA,CAEA,yDACC,QAAA,CAIF,sCACC,UAAA,CAOF,6CACC,mBAAA,CAID,gFACC,gBAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n/**\n * color-text-lighter\t\tnormal state\n * color-text-lighter\t\tactive state\n * color-text-maxcontrast \tdisabled state\n */\n\n/* Default global values */\nbutton:not(.button-vue),\ninput:not([type='range']),\ntextarea {\n\tmargin: 0;\n\tpadding: 7px 6px;\n\n\tcursor: text;\n\n\tcolor: var(--color-text-lighter);\n\tborder: 1px solid var(--color-border-dark);\n\tborder-radius: var(--border-radius);\n\toutline: none;\n\tbackground-color: var(--color-main-background);\n\n\tfont-size: 13px;\n\n\t&:not(:disabled):not(.primary) {\n\t\t&:hover,\n\t\t&:focus,\n\t\t&.active {\n\t\t\t/* active class used for multiselect */\n\t\t\tborder-color: var(--color-primary-element);\n\t\t\toutline: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcolor: var(--color-text-light);\n\t\t\toutline: none;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t}\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\topacity: $opacity_disabled;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&:required {\n\t\tbox-shadow: none;\n\t}\n\n\t&:invalid {\n\t\tborder-color: var(--color-error);\n\t\tbox-shadow: none !important;\n\t}\n\n\t/* Primary action button, use sparingly */\n\t&.primary {\n\t\tcursor: pointer;\n\t\tcolor: var(--color-primary-element-text);\n\t\tborder-color: var(--color-primary-element);\n\t\tbackground-color: var(--color-primary-element);\n\n\t\t&:not(:disabled) {\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\tborder-color: var(--color-primary-element-light);\n\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t}\n\t\t\t&:active {\n\t\t\t\tcolor: var(--color-primary-element-text-dark);\n\t\t\t}\n\t\t}\n\n\t\t&:disabled {\n\t\t\tcursor: default;\n\t\t\tcolor: var(--color-primary-element-text-dark);\n\t\t\t// opacity is already defined to .5 if disabled\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Marco Ambrosini \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n@mixin action-active {\n\tli {\n\t\t&.active {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder-radius: 6px;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n\n@mixin action--disabled {\n\t.action--disabled {\n\t\tpointer-events: none;\n\t\topacity: $opacity_disabled;\n\t\t&:hover, &:focus {\n\t\t\tcursor: default;\n\t\t\topacity: $opacity_disabled;\n\t\t}\n\t\t& * {\n\t\t\topacity: 1 !important;\n\t\t}\n\t}\n}\n\n\n@mixin action-item($name) {\n\t.action-#{$name} {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tpadding-right: $icon-margin;\n\t\tbox-sizing: border-box; // otherwise router-link overflows in Firefox\n\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\n\t\tcolor: var(--color-main-text);\n\t\tborder: 0;\n\t\tborder-radius: 0; // otherwise Safari will cut the border-radius area\n\t\tbackground-color: transparent;\n\t\tbox-shadow: none;\n\n\t\tfont-weight: normal;\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: $clickable-area;\n\n\t\t& > span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t&__icon {\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\topacity: $opacity_full;\n\t\t\tbackground-position: $icon-margin center;\n\t\t\tbackground-size: $icon-size;\n\t\t\tbackground-repeat: no-repeat;\n\t\t}\n\n\t\t&:deep(.material-design-icon) {\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\topacity: $opacity_full;\n\n\t\t\t.material-design-icon__svg {\n\t\t\t\tvertical-align: middle;\n\t\t\t}\n\t\t}\n\n\t\t// long text area\n\t\tp {\n\t\t\tmax-width: 220px;\n\t\t\tline-height: 1.6em;\n\n\t\t\t// 14px are currently 1em line-height. Mixing units as '44px - 1.6em' does not work.\n\t\t\tpadding: #{math.div($clickable-area - 1.6 * 14px, 2)} 0;\n\n\t\t\tcursor: pointer;\n\t\t\ttext-align: left;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t&__longtext {\n\t\t\tcursor: pointer;\n\t\t\t// allow the use of `\\n`\n\t\t\twhite-space: pre-wrap;\n\t\t}\n\n\t\t&__title {\n\t\t\tfont-weight: bold;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t\tmax-width: 100%;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n@import '../../assets/inputs';\n@import '../../assets/action';\n@include action-active;\n@include action--disabled;\n\n$input-margin: 4px;\n\n.action-input {\n\tdisplay: flex;\n\talign-items: flex-start;\n\n\twidth: 100%;\n\theight: auto;\n\tmargin: 0;\n\tpadding: 0;\n\n\tcursor: pointer;\n\twhite-space: nowrap;\n\n\tcolor: var(--color-main-text);\n\tborder: 0;\n\tborder-radius: 0; // otherwise Safari will cut the border-radius area\n\tbackground-color: transparent;\n\tbox-shadow: none;\n\n\tfont-weight: normal;\n\n\t&__icon-wrapper {\n\t\tdisplay: flex;\n\t\talign-self: center;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\t&:deep(.material-design-icon) {\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\topacity: $opacity_full;\n\n\t\t\t.material-design-icon__svg {\n\t\t\t\tvertical-align: middle;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > span {\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\t}\n\n\t&__icon {\n\t\tmin-width: 0; /* Overwrite icons*/\n\t\tmin-height: 0;\n\t\t/* Keep padding to define the width to\n\t\t\tassure correct position of a possible text */\n\t\tpadding: #{math.div($clickable-area, 2)} 0 #{math.div($clickable-area, 2)} $clickable-area;\n\n\t\tbackground-position: #{$icon-margin} center;\n\t\tbackground-size: $icon-size;\n\t}\n\n\t// Forms & text inputs\n\t&__form {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 auto;\n\n\t\tmargin: $input-margin 0;\n\t\tpadding-right: $icon-margin;\n\t}\n\n\t&__container {\n\t\twidth: 100%;\n\t}\n\n\t&__input-container {\n\t\tdisplay: flex;\n\n\t\t.colorpicker {\n\t\t\t&__trigger,\n\t\t\t&__preview {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t&__preview {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 36px;\n\t\t\t\tborder-radius: var(--border-radius-large);\n\t\t\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\t\t\tbox-shadow: none !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__text-label {\n\t\tpadding: 4px 0;\n\t\tdisplay: block;\n\n\t\t&--hidden {\n\t\t\tposition: absolute;\n\t\t\tleft: -10000px;\n\t\t\ttop: auto;\n\t\t\twidth: 1px;\n\t\t\theight: 1px;\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\n\t&__datetimepicker {\n\t\twidth: 100%;\n\n\t\t:deep(.mx-input) {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n\n\t&__multi {\n\t\twidth: 100%;\n\t}\n}\n\n// if a form is the last of the list\n// add the same bottomMargin as the right padding\n// for visual balance\nli:last-child > .action-input {\n\tpadding-bottom: $icon-margin - $input-margin;\n}\n\n// same for first item\nli:first-child > .action-input:not(.action-input--visible-label) {\n\tpadding-top: $icon-margin - $input-margin;\n}\n\n"],sourceRoot:""}]);const s=o},2242:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i),s=n(1667),l=n.n(s),u=new URL(n(3423),n.b),c=new URL(n(2605),n.b),d=new URL(n(7127),n.b),p=o()(r()),h=l()(u),m=l()(c),f=l()(d);p.push([e.id,".material-design-icon[data-v-f73be20c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.avatardiv[data-v-f73be20c]{position:relative;display:inline-block;width:var(--size);height:var(--size)}.avatardiv--unknown[data-v-f73be20c]{position:relative;background-color:var(--color-main-background)}.avatardiv[data-v-f73be20c]:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:0 0 5px rgba(0,0,0,.05) inset}.avatardiv--with-menu[data-v-f73be20c]{cursor:pointer}.avatardiv--with-menu[data-v-f73be20c] .v-popper{position:absolute;top:0;left:0}.avatardiv--with-menu .icon-more[data-v-f73be20c]{cursor:pointer;opacity:0}.avatardiv--with-menu:focus .icon-more[data-v-f73be20c],.avatardiv--with-menu:hover .icon-more[data-v-f73be20c]{opacity:1}.avatardiv--with-menu:focus img[data-v-f73be20c],.avatardiv--with-menu:hover img[data-v-f73be20c]{opacity:.3}.avatardiv--with-menu .icon-more[data-v-f73be20c],.avatardiv--with-menu img[data-v-f73be20c]{transition:opacity var(--animation-quick)}.avatardiv .avatardiv__initials-wrapper[data-v-f73be20c]{height:var(--size);width:var(--size);background-color:var(--color-main-background);border-radius:50%}.avatardiv .avatardiv__initials-wrapper .unknown[data-v-f73be20c]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;font-weight:normal}.avatardiv img[data-v-f73be20c]{width:100%;height:100%;object-fit:cover}.avatardiv .material-design-icon[data-v-f73be20c]{width:var(--size);height:var(--size)}.avatardiv .avatardiv__user-status[data-v-f73be20c]{position:absolute;right:-4px;bottom:-4px;max-height:18px;max-width:18px;height:40%;width:40%;line-height:15px;font-size:var(--default-font-size);border:2px solid var(--color-main-background);background-color:var(--color-main-background);background-repeat:no-repeat;background-size:16px;background-position:center;border-radius:50%}.acli:hover .avatardiv .avatardiv__user-status[data-v-f73be20c]{border-color:var(--color-background-hover);background-color:var(--color-background-hover)}.acli.active .avatardiv .avatardiv__user-status[data-v-f73be20c]{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}.avatardiv .avatardiv__user-status--online[data-v-f73be20c]{background-image:url("+h+")}.avatardiv .avatardiv__user-status--dnd[data-v-f73be20c]{background-image:url("+m+");background-color:#fff}.avatardiv .avatardiv__user-status--away[data-v-f73be20c]{background-image:url("+f+")}.avatardiv .avatardiv__user-status--icon[data-v-f73be20c]{border:none;background-color:rgba(0,0,0,0)}.avatardiv .popovermenu-wrapper[data-v-f73be20c]{position:relative;display:inline-block}.avatar-class-icon[data-v-f73be20c]{border-radius:50%;background-color:var(--color-background-darker);height:100%}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcAvatar/NcAvatar.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,4BACC,iBAAA,CACA,oBAAA,CACA,iBAAA,CACA,kBAAA,CAEA,qCACC,iBAAA,CACA,6CAAA,CAGD,qDAEC,wDAAA,CACA,wCAAA,CAGD,uCACC,cAAA,CACA,iDACC,iBAAA,CACA,KAAA,CACA,MAAA,CAED,kDACC,cAAA,CACA,SAAA,CAIA,gHACC,SAAA,CAED,kGACC,UAAA,CAGF,6FAEC,yCAAA,CAIF,yDACC,kBAAA,CACA,iBAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kEACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,aAAA,CACA,UAAA,CACA,iBAAA,CACA,kBAAA,CAIF,gCAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CAGD,kDACC,iBAAA,CACA,kBAAA,CAGD,oDACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,cAAA,CACA,UAAA,CACA,SAAA,CACA,gBAAA,CACA,kCAAA,CACA,6CAAA,CACA,6CAAA,CACA,2BAAA,CACA,oBAAA,CACA,0BAAA,CACA,iBAAA,CAEA,gEACC,0CAAA,CACA,8CAAA,CAED,iEACC,+CAAA,CACA,mDAAA,CAGD,4DACC,wDAAA,CAED,yDACC,wDAAA,CACA,qBAAA,CAED,0DACC,wDAAA,CAED,0DACC,WAAA,CACA,8BAAA,CAIF,iDACC,iBAAA,CACA,oBAAA,CAIF,oCACC,iBAAA,CACA,+CAAA,CACA,WAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n.avatardiv {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: var(--size);\n\theight: var(--size);\n\n\t&--unknown {\n\t\tposition: relative;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&:not(&--unknown) {\n\t\t// White/black background for avatars with transparency\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\n\t}\n\n\t&--with-menu {\n\t\tcursor: pointer;\n\t\t:deep(.v-popper) {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t}\n\t\t.icon-more {\n\t\t\tcursor: pointer;\n\t\t\topacity: 0;\n\t\t}\n\t\t&:focus,\n\t\t&:hover {\n\t\t\t.icon-more {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t\timg {\n\t\t\t\topacity: 0.3;\n\t\t\t}\n\t\t}\n\t\t.icon-more,\n\t\timg {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\t}\n\n\t.avatardiv__initials-wrapper {\n\t\theight: var(--size);\n\t\twidth: var(--size);\n\t\tbackground-color: var(--color-main-background);\n\t\tborder-radius: 50%;\n\n\t\t.unknown {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\ttext-align: center;\n\t\t\tfont-weight: normal;\n\t\t}\n\t}\n\n\timg {\n\t\t// Cover entire area\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\t// Keep ratio\n\t\tobject-fit: cover;\n\t}\n\n\t.material-design-icon {\n\t\twidth: var(--size);\n\t\theight: var(--size);\n\t}\n\n\t.avatardiv__user-status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tmax-height: 18px;\n\t\tmax-width: 18px;\n\t\theight: 40%;\n\t\twidth: 40%;\n\t\tline-height: 15px;\n\t\tfont-size: var(--default-font-size);\n\t\tborder: 2px solid var(--color-main-background);\n\t\tbackground-color: var(--color-main-background);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\t\tborder-radius: 50%;\n\n\t\t.acli:hover & {\n\t\t\tborder-color: var(--color-background-hover);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t\t.acli.active & {\n\t\t\tborder-color: var(--color-primary-element-light);\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\n\t\t&--online{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\n\t\t}\n\t\t&--dnd{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\n\t\t\tbackground-color: #ffffff;\n\t\t}\n\t\t&--away{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\n\t\t}\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t.popovermenu-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n}\n\n.avatar-class-icon {\n\tborder-radius: 50%;\n\tbackground-color: var(--color-background-darker);\n\theight: 100%;\n}\n\n"],sourceRoot:""}]);const g=p},7233:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-488fcfba]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-488fcfba]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue *[data-v-488fcfba],.button-vue span[data-v-488fcfba]{cursor:pointer}.button-vue[data-v-488fcfba]:focus{outline:none}.button-vue[data-v-488fcfba]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-488fcfba]{cursor:default}.button-vue[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-488fcfba]:active{background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-488fcfba]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue__icon[data-v-488fcfba]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-488fcfba]{font-weight:bold;margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue--icon-only[data-v-488fcfba]{width:44px !important}.button-vue--text-only[data-v-488fcfba]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-488fcfba]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-488fcfba]{padding:0 16px 0 4px}.button-vue--wide[data-v-488fcfba]{width:100%}.button-vue[data-v-488fcfba]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-488fcfba]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.button-vue--vue-primary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-488fcfba]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-488fcfba]{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue--vue-secondary[data-v-488fcfba]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--vue-tertiary[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{color:var(--color-primary-element-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-488fcfba]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-488fcfba]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-488fcfba]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-488fcfba]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-488fcfba]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-488fcfba]:active{background-color:var(--color-error)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcButton/NcButton.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAKA,kBAAA,CACA,uDAAA,CACA,uBAAA,CACA,iCAAA,CAkBA,6CAAA,CACA,mDAAA,CA1BA,iEAEC,cAAA,CAQD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCIiB,CDFjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,yDAAA,CAKD,oCACC,mDAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAGD,mCACC,WCvCe,CDwCf,UCxCe,CDyCf,eCzCe,CD0Cf,cC1Ce,CD2Cf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,mDAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,uCAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,6CAAA,CACA,mDAAA,CACA,iEACC,6CAAA,CACA,yDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,uCAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n\n.button-vue {\n\tposition: relative;\n\twidth: fit-content;\n\toverflow: hidden;\n\tborder: 0;\n\tpadding: 0;\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\tmin-height: $clickable-area;\n\tmin-width: $clickable-area;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t// Cursor pointer on element and all children\n\tcursor: pointer;\n\t& *,\n\tspan {\n\t\tcursor: pointer;\n\t}\n\tborder-radius: math.div($clickable-area, 2);\n\ttransition-property: color, border-color, background-color;\n\ttransition-duration: 0.1s;\n\ttransition-timing-function: linear;\n\n\t// No outline feedback for focus. Handled with a toggled class in js (see data)\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\t& * {\n\t\t\tcursor: default;\n\t\t}\n\t\topacity: $opacity_disabled;\n\t\t// Gives a wash out effect\n\t\tfilter: saturate($opacity_normal);\n\t}\n\n\t// Default button type\n\tcolor: var(--color-primary-element-light-text);\n\tbackground-color: var(--color-primary-element-light);\n\t&:hover:not(:disabled) {\n\t\tbackground-color: var(--color-primary-element-light-hover);\n\t}\n\n\t// Back to the default color for this button when active\n\t// TODO: add ripple effect\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n\n\t&__wrapper {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t}\n\n\t&__icon {\n\t\theight: $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-height: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t&__text {\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1px;\n\t\tpadding: 2px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t// Icon-only button\n\t&--icon-only {\n\t\twidth: $clickable-area !important;\n\t}\n\n\t// Text-only button\n\t&--text-only {\n\t\tpadding: 0 12px;\n\t\t& .button-vue__text {\n\t\t\tmargin-left: 4px;\n\t\t\tmargin-right: 4px;\n\t\t}\n\t}\n\n\t// Icon and text button\n\t&--icon-and-text {\n\t\tpadding: 0 16px 0 4px;\n\t}\n\n\t// Wide button spans the whole width of the container\n\t&--wide {\n\t\twidth: 100%;\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t&.button-vue--vue-tertiary-on-primary {\n\t\t\toutline: 2px solid var(--color-primary-element-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Button types\n\n\t// Primary\n\t&--vue-primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tcolor: var(--color-primary-element-text);\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-primary-element-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Secondary\n\t&--vue-secondary {\n\t\tcolor: var(--color-primary-element-light-text);\n\t\tbackground-color: var(--color-primary-element-light);\n\t\t&:hover:not(:disabled) {\n\t\t\tcolor: var(--color-primary-element-light-text);\n\t\t\tbackground-color: var(--color-primary-element-light-hover);\n\t\t}\n\t}\n\n\t// Tertiary\n\t&--vue-tertiary {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Tertiary, no background\n\t&--vue-tertiary-no-background {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Tertiary on primary color (like the header)\n\t&--vue-tertiary-on-primary {\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: transparent;\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t// Success\n\t&--vue-success {\n\t\tbackground-color: var(--color-success);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// : add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-success);\n\t\t}\n\t}\n\n\t// Warning\n\t&--vue-warning {\n\t\tbackground-color: var(--color-warning);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-warning);\n\t\t}\n\t}\n\n\t// Error\n\t&--vue-error {\n\t\tbackground-color: var(--color-error);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-error);\n\t\t}\n\t}\n}\n\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},8940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-b5e8dce0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.native-datetime-picker[data-v-b5e8dce0]{display:flex;flex-direction:column}.native-datetime-picker .native-datetime-picker--input[data-v-b5e8dce0]{width:100%;flex:0 0 auto;padding-right:4px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcDateTimePickerNative/NcDateTimePickerNative.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,yCACC,YAAA,CACA,qBAAA,CAGD,wEACC,UAAA,CACA,aAAA,CACA,iBAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n.native-datetime-picker {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.native-datetime-picker .native-datetime-picker--input {\n\twidth: 100%;\n\tflex: 0 0 auto;\n\tpadding-right: 4px;\n}\n"],sourceRoot:""}]);const s=o},6526:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-68e9c068]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mx-datepicker[data-v-68e9c068] .mx-input-wrapper .mx-input{background-clip:border-box}.datetime-picker-inline-icon[data-v-68e9c068]{opacity:.3;border:none;background-color:rgba(0,0,0,0);border-radius:0;padding:0 !important;margin:0}.datetime-picker-inline-icon--highlighted[data-v-68e9c068]{opacity:.7}.datetime-picker-inline-icon[data-v-68e9c068]:focus,.datetime-picker-inline-icon[data-v-68e9c068]:hover{opacity:1}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcDatetimePicker/NcDatetimePicker.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,4DACC,0BAAA,CAGD,8CACC,UAAA,CACA,WAAA,CACA,8BAAA,CACA,eAAA,CACA,oBAAA,CACA,QAAA,CAEA,2DACC,UAAA,CAGD,wGAEC,SAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n.mx-datepicker :deep(.mx-input-wrapper .mx-input) {\n\tbackground-clip: border-box;\n}\n\n.datetime-picker-inline-icon {\n\topacity: .3;\n\tborder: none;\n\tbackground-color: transparent;\n\tborder-radius: 0;\n\tpadding: 0 !important;\n\tmargin: 0;\n\n\t&--highlighted {\n\t\topacity: .7;\n\t}\n\n\t&:focus,\n\t&:hover {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const s=o},2618:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper{border-radius:var(--border-radius-large)}.v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner{padding:4px;border-radius:var(--border-radius-large)}.v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__title{padding:4px 0;padding-left:14px}.v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select .vs__dropdown-toggle{border-radius:calc(var(--border-radius-large) - 4px)}.v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select.vs--open .vs__dropdown-toggle{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select.vs--open.select--drop-up .vs__dropdown-toggle{border-radius:0 0 calc(var(--border-radius-large) - 4px) calc(var(--border-radius-large) - 4px)}.vs__dropdown-menu--floating{z-index:100001}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcDatetimePicker/NcDatetimePicker.vue"],names:[],mappings:"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCJD,sFACC,wCAAA,CAEA,uGACC,WAAA,CACA,wCAAA,CAGC,wIACC,aAAA,CACA,iBAAA,CAKA,gLACC,oDAAA,CAIA,yLACC,2BAAA,CACA,4BAAA,CAED,yMACC,+FAAA,CASN,6BAEC,cAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n// We overwrite the popover base class, so we can style\n// the popover for the timezone select only.\n.v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper {\n\tborder-radius: var(--border-radius-large);\n\n\t.v-popper__inner {\n\t\tpadding: 4px;\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t.timezone-popover-wrapper {\n\t\t\t&__title {\n\t\t\t\tpadding: 4px 0;\n\t\t\t\tpadding-left: 14px; // Left-align with NcSelect text\n\t\t\t}\n\n\t\t\t// We overwrite the border radius of the input to account for the popover border-radius minus the padding\n\t\t\t&__timezone-select.v-select {\n\t\t\t\t.vs__dropdown-toggle {\n\t\t\t\t\tborder-radius: calc(var(--border-radius-large) - 4px);\n\t\t\t\t}\n\n\t\t\t\t&.vs--open {\n\t\t\t\t\t.vs__dropdown-toggle {\n\t\t\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t\t\t}\n\t\t\t\t\t&.select--drop-up .vs__dropdown-toggle {\n\t\t\t\t\t\tborder-radius: 0 0 calc(var(--border-radius-large) - 4px) calc(var(--border-radius-large) - 4px);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// TODO: This should be scoped or targeted by a specific selector, but the NcSelect component does not allow this yet.\n.vs__dropdown-menu--floating {\n\t// Higher z-index than the popover in which the NcSelect is located.\n\tz-index: 100001;\n}\n"],sourceRoot:""}]);const s=o},436:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-3daafbe0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.name-parts[data-v-3daafbe0]{display:flex;max-width:100%;cursor:inherit}.name-parts__first[data-v-3daafbe0]{overflow:hidden;text-overflow:ellipsis}.name-parts__first[data-v-3daafbe0],.name-parts__last[data-v-3daafbe0]{white-space:pre;cursor:inherit}.name-parts__first strong[data-v-3daafbe0],.name-parts__last strong[data-v-3daafbe0]{font-weight:bold}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcEllipsisedOption/NcEllipsisedOption.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,6BACC,YAAA,CACA,cAAA,CACA,cAAA,CACA,oCACC,eAAA,CACA,sBAAA,CAED,uEAGC,eAAA,CACA,cAAA,CACA,qFACC,gBAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n.name-parts {\n\tdisplay: flex;\n\tmax-width: 100%;\n\tcursor: inherit;\n\t&__first {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t&__first,\n\t&__last {\n\t\t// prevent whitespace from being trimmed\n\t\twhite-space: pre;\n\t\tcursor: inherit;\n\t\tstrong {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o},8973:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-a3da3488]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-vue[data-v-a3da3488]{display:flex;justify-content:center;align-items:center;min-width:44px;min-height:44px;opacity:1}.icon-vue[data-v-a3da3488] svg{fill:currentColor;max-width:20px;max-height:20px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcIconSvgWrapper/NcIconSvgWrapper.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,2BACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,cAAA,CACA,eAAA,CACA,SAAA,CAEA,+BACC,iBAAA,CACA,cAAA,CACA,eAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n.icon-vue {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tmin-width: 44px;\n\tmin-height: 44px;\n\topacity: 1;\n\n\t&:deep(svg) {\n\t\tfill: currentColor;\n\t\tmax-width: 20px;\n\t\tmax-height: 20px;\n\t}\n}\n"],sourceRoot:""}]);const s=o},4326:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-474d33a2]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-474d33a2]{position:relative;width:100%;border-radius:var(--border-radius-large)}.input-field__main-wrapper[data-v-474d33a2]{height:36px;position:relative}.input-field__input[data-v-474d33a2]{margin:0;padding:0 12px;font-size:var(--default-font-size);background-color:var(--color-main-background);color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);height:36px !important;border-radius:var(--border-radius-large);text-overflow:ellipsis;cursor:pointer;width:100%;-webkit-appearance:textfield !important;-moz-appearance:textfield !important}.input-field__input[data-v-474d33a2]:active:not([disabled]),.input-field__input[data-v-474d33a2]:hover:not([disabled]),.input-field__input[data-v-474d33a2]:focus:not([disabled]){border-color:var(--color-primary-element)}.input-field__input[data-v-474d33a2]:focus{cursor:text}.input-field__input[data-v-474d33a2]:focus-visible{box-shadow:unset !important}.input-field__input--success[data-v-474d33a2]{border-color:var(--color-success) !important}.input-field__input--success[data-v-474d33a2]:focus-visible{box-shadow:#f8fafc 0px 0px 0px 2px,var(--color-primary-element) 0px 0px 0px 4px,rgba(0,0,0,.05) 0px 1px 2px 0px}.input-field__input--error[data-v-474d33a2]{border-color:var(--color-error) !important}.input-field__input--error[data-v-474d33a2]:focus-visible{box-shadow:#f8fafc 0px 0px 0px 2px,var(--color-primary-element) 0px 0px 0px 4px,rgba(0,0,0,.05) 0px 1px 2px 0px}.input-field__input--leading-icon[data-v-474d33a2]{padding-left:28px}.input-field__input--trailing-icon[data-v-474d33a2]{padding-right:28px}.input-field__label[data-v-474d33a2]{padding:4px 0;display:block}.input-field__label--hidden[data-v-474d33a2]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.input-field__icon[data-v-474d33a2]{position:absolute;height:32px;width:32px;display:flex;align-items:center;justify-content:center;opacity:.7}.input-field__icon--leading[data-v-474d33a2]{bottom:2px;left:2px}.input-field__icon--trailing[data-v-474d33a2]{bottom:2px;right:2px}.input-field__clear-button.button-vue[data-v-474d33a2]{position:absolute;top:2px;right:1px;min-width:unset;min-height:unset;height:32px;width:32px !important;border-radius:var(--border-radius-large)}.input-field__helper-text-message[data-v-474d33a2]{padding:4px 0;display:flex;align-items:center}.input-field__helper-text-message__icon[data-v-474d33a2]{margin-right:8px;align-self:start;margin-top:4px}.input-field__helper-text-message--error[data-v-474d33a2]{color:var(--color-error)}.input-field__helper-text-message--success[data-v-474d33a2]{color:var(--color-success)}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcInputField/NcInputField.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,8BACC,iBAAA,CACA,UAAA,CACA,wCAAA,CAEA,4CACC,WAAA,CACA,iBAAA,CAGD,qCACC,QAAA,CACA,cAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,gDAAA,CACA,sBAAA,CACA,wCAAA,CACA,sBAAA,CACA,cAAA,CACA,UAAA,CACA,uCAAA,CACA,oCAAA,CAEA,kLAGC,yCAAA,CAGD,2CACC,WAAA,CAGD,mDACC,2BAAA,CAGD,8CACC,4CAAA,CACA,4DACC,+GAAA,CAIF,4CACC,0CAAA,CACA,0DACC,+GAAA,CAIF,mDACC,iBAAA,CAGD,oDACC,kBAAA,CAIF,qCACC,aAAA,CACA,aAAA,CAEA,6CACC,iBAAA,CACA,aAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,eAAA,CAIF,oCACC,iBAAA,CACA,WAAA,CACA,UAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,6CACC,UAAA,CACA,QAAA,CAGD,8CACC,UAAA,CACA,SAAA,CAIF,uDACC,iBAAA,CACA,OAAA,CACA,SAAA,CACA,eAAA,CACA,gBAAA,CACA,WAAA,CACA,qBAAA,CACA,wCAAA,CAGD,mDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,yDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,0DACC,wBAAA,CAGD,4DACC,0BAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n\n.input-field {\n\tposition: relative;\n\twidth: 100%;\n\tborder-radius: var(--border-radius-large);\n\n\t&__main-wrapper {\n\t\theight: 36px;\n\t\tposition: relative;\n\t}\n\n\t&__input {\n\t\tmargin: 0;\n\t\tpadding: 0 12px;\n\t\tfont-size: var(--default-font-size);\n\t\tbackground-color: var(--color-main-background);\n\t\tcolor: var(--color-main-text);\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\theight: 36px !important;\n\t\tborder-radius: var(--border-radius-large);\n\t\ttext-overflow: ellipsis;\n\t\tcursor: pointer;\n\t\twidth: 100%;\n\t\t-webkit-appearance: textfield !important;\n\t\t-moz-appearance: textfield !important;\n\n\t\t&:active:not([disabled]),\n\t\t&:hover:not([disabled]),\n\t\t&:focus:not([disabled]) {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\n\t\t&:focus {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: unset !important; // Override server rules\n\t\t}\n\n\t\t&--success {\n\t\t\tborder-color: var(--color-success) !important; //Override hover border color\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\n\t\t\t}\n\t\t}\n\n\t\t&--error {\n\t\t\tborder-color: var(--color-error) !important; //Override hover border color\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\n\t\t\t}\n\t\t}\n\n\t\t&--leading-icon {\n\t\t\tpadding-left: 28px;\n\t\t}\n\n\t\t&--trailing-icon {\n\t\t\tpadding-right: 28px;\n\t\t}\n\t}\n\n\t&__label {\n\t\tpadding: 4px 0;\n\t\tdisplay: block;\n\n\t\t&--hidden {\n\t\t\tposition: absolute;\n\t\t\tleft: -10000px;\n\t\t\ttop: auto;\n\t\t\twidth: 1px;\n\t\t\theight: 1px;\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tposition: absolute;\n\t\theight: 32px;\n\t\twidth: 32px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\topacity: 0.7;\n\t\t&--leading {\n\t\t\tbottom: 2px;\n\t\t\tleft: 2px;\n\t\t}\n\n\t\t&--trailing {\n\t\t\tbottom: 2px;\n\t\t\tright: 2px;\n\t\t}\n\t}\n\n\t&__clear-button.button-vue {\n\t\tposition: absolute;\n\t\ttop: 2px;\n\t\tright: 1px;\n\t\tmin-width: unset;\n\t\tmin-height: unset;\n\t\theight: 32px;\n\t\twidth: 32px !important;\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\n\t\t&--success {\n\t\t\tcolor: var(--color-success);\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=o},808:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-4f3daf70]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.option[data-v-4f3daf70]{display:flex;align-items:center;width:100%;height:var(--height);cursor:inherit}.option__avatar[data-v-4f3daf70]{margin-right:var(--margin)}.option__details[data-v-4f3daf70]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__lineone[data-v-4f3daf70]{color:var(--color-main-text)}.option__linetwo[data-v-4f3daf70]{color:var(--color-text-maxcontrast)}.option__lineone[data-v-4f3daf70],.option__linetwo[data-v-4f3daf70]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.1em}.option__lineone strong[data-v-4f3daf70],.option__linetwo strong[data-v-4f3daf70]{font-weight:bold}.option__icon[data-v-4f3daf70]{width:44px;height:44px;color:var(--color-text-maxcontrast)}.option__icon.icon[data-v-4f3daf70]{flex:0 0 44px;opacity:.7;background-position:center;background-size:16px}.option__details[data-v-4f3daf70],.option__lineone[data-v-4f3daf70],.option__linetwo[data-v-4f3daf70],.option__icon[data-v-4f3daf70]{cursor:inherit}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcListItemIcon/NcListItemIcon.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,yBACC,YAAA,CACA,kBAAA,CACA,UAAA,CACA,oBAAA,CACA,cAAA,CAEA,iCACC,0BAAA,CAGD,kCACC,YAAA,CACA,QAAA,CACA,qBAAA,CACA,sBAAA,CACA,WAAA,CAGD,kCACC,4BAAA,CAGD,kCACC,mCAAA,CAGD,oEAEC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,iBAAA,CACA,kFACC,gBAAA,CAIF,+BACC,UChBe,CDiBf,WCjBe,CDkBf,mCAAA,CACA,oCACC,aAAA,CACA,UCHc,CDId,0BAAA,CACA,oBAAA,CAIF,qIAIC,cAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n.option {\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\theight: var(--height);\n\tcursor: inherit;\n\n\t&__avatar {\n\t\tmargin-right: var(--margin);\n\t}\n\n\t&__details {\n\t\tdisplay: flex;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t}\n\n\t&__lineone {\n\t\tcolor: var(--color-main-text);\n\t}\n\n\t&__linetwo {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__lineone,\n\t&__linetwo {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tline-height: 1.1em;\n\t\tstrong {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n\n\t&__icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\t&.icon {\n\t\t\tflex: 0 0 $clickable-area;\n\t\t\topacity: $opacity_normal;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 16px;\n\t\t}\n\t}\n\n\t&__details,\n\t&__lineone,\n\t&__linetwo,\n\t&__icon {\n\t\tcursor: inherit;\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},5030:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-c4a9cada]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.loading-icon svg[data-v-c4a9cada]{animation:rotate var(--animation-duration, 0.8s) linear infinite}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcLoadingIcon/NcLoadingIcon.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,mCACC,gEAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n.loading-icon svg{\n\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\n}\n"],sourceRoot:""}]);const s=o},1625:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:rgba(0,0,0,0);pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown.v-popper__popper{z-index:100000;top:0;left:0;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-dropdown.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius-large);overflow:hidden;background:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-10px;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopover/NcPopover.vue"],names:[],mappings:"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,iBACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,8BAAA,CACA,mBAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CAGD,wBACC,aAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,eAAA,CACA,mBAAA,CACA,UAAA,CAMA,2CACC,cAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CAEA,sDAAA,CAEA,4DACC,SAAA,CACA,4BAAA,CACA,wCAAA,CACA,eAAA,CACA,uCAAA,CAGD,sEACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBA1BW,CA6BZ,kGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAGD,qGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAGD,oGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAGD,mGACC,WAAA,CACA,oBAAA,CACA,8CAAA,CAGD,6DACC,iBAAA,CACA,2EAAA,CACA,SAAA,CAGD,8DACC,kBAAA,CACA,yCAAA,CACA,SAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n\n.resize-observer {\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\tz-index:-1;\n\twidth:100%;\n\theight:100%;\n\tborder:none;\n\tbackground-color:transparent;\n\tpointer-events:none;\n\tdisplay:block;\n\toverflow:hidden;\n\topacity:0\n}\n\n.resize-observer object {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\theight:100%;\n\twidth:100%;\n\toverflow:hidden;\n\tpointer-events:none;\n\tz-index:-1\n}\n\n$arrow-width: 10px;\n\n.v-popper--theme-dropdown {\n\t&.v-popper__popper {\n\t\tz-index: 100000;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block !important;\n\n\t\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t\t.v-popper__inner {\n\t\t\tpadding: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\toverflow: hidden;\n\t\t\tbackground: var(--color-main-background);\n\t\t}\n\n\t\t.v-popper__arrow-container {\n\t\t\tposition: absolute;\n\t\t\tz-index: 1;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t\tborder-color: transparent;\n\t\t\tborder-width: $arrow-width;\n\t\t}\n\n\t\t&[data-popper-placement^='top'] .v-popper__arrow-container {\n\t\t\tbottom: -$arrow-width;\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-top-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\n\t\t\ttop: -$arrow-width;\n\t\t\tborder-top-width: 0;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='right'] .v-popper__arrow-container {\n\t\t\tleft: -$arrow-width;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='left'] .v-popper__arrow-container {\n\t\t\tright: -$arrow-width;\n\t\t\tborder-right-width: 0;\n\t\t\tborder-left-color: var(--color-main-background);\n\t\t}\n\n\t\t&[aria-hidden='true'] {\n\t\t\tvisibility: hidden;\n\t\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\t\topacity: 0;\n\t\t}\n\n\t\t&[aria-hidden='false'] {\n\t\t\tvisibility: visible;\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=o},2:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-31ffd2d4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}ul[data-v-31ffd2d4]{display:flex;flex-direction:column;gap:4px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopoverMenu/NcPopoverMenu.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,oBACC,YAAA,CACA,qBAAA,CACA,OAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\nul {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n}\n"],sourceRoot:""}]);const s=o},408:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,'.material-design-icon[data-v-127b0c62]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li[data-v-127b0c62]{display:flex;flex:0 0 auto}li.hidden[data-v-127b0c62]{display:none}li>button[data-v-127b0c62],li>a[data-v-127b0c62],li>.menuitem[data-v-127b0c62]{cursor:pointer;line-height:44px;border:0;background-color:rgba(0,0,0,0);display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^=icon-][data-v-127b0c62],li>button span[class*=" icon-"][data-v-127b0c62],li>button[class^=icon-][data-v-127b0c62],li>button[class*=" icon-"][data-v-127b0c62],li>a span[class^=icon-][data-v-127b0c62],li>a span[class*=" icon-"][data-v-127b0c62],li>a[class^=icon-][data-v-127b0c62],li>a[class*=" icon-"][data-v-127b0c62],li>.menuitem span[class^=icon-][data-v-127b0c62],li>.menuitem span[class*=" icon-"][data-v-127b0c62],li>.menuitem[class^=icon-][data-v-127b0c62],li>.menuitem[class*=" icon-"][data-v-127b0c62]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^=icon-][data-v-127b0c62],li>button span[class*=" icon-"][data-v-127b0c62],li>a span[class^=icon-][data-v-127b0c62],li>a span[class*=" icon-"][data-v-127b0c62],li>.menuitem span[class^=icon-][data-v-127b0c62],li>.menuitem span[class*=" icon-"][data-v-127b0c62]{padding:22px 0 22px 44px}li>button:not([class^=icon-]):not([class*=icon-])>span[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child,li>button:not([class^=icon-]):not([class*=icon-])>input[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child,li>button:not([class^=icon-]):not([class*=icon-])>form[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>span[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>input[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>form[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>span[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>input[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>form[data-v-127b0c62]:not([class^=icon-]):not([class*=icon-]):first-child{margin-left:44px}li>button[class^=icon-][data-v-127b0c62],li>button[class*=" icon-"][data-v-127b0c62],li>a[class^=icon-][data-v-127b0c62],li>a[class*=" icon-"][data-v-127b0c62],li>.menuitem[class^=icon-][data-v-127b0c62],li>.menuitem[class*=" icon-"][data-v-127b0c62]{padding:0 14px 0 44px}li>button[data-v-127b0c62]:not(:disabled):hover,li>button[data-v-127b0c62]:not(:disabled):focus,li>button:not(:disabled).active[data-v-127b0c62],li>a[data-v-127b0c62]:not(:disabled):hover,li>a[data-v-127b0c62]:not(:disabled):focus,li>a:not(:disabled).active[data-v-127b0c62],li>.menuitem[data-v-127b0c62]:not(:disabled):hover,li>.menuitem[data-v-127b0c62]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-127b0c62]{opacity:1 !important}li>button.action[data-v-127b0c62],li>a.action[data-v-127b0c62],li>.menuitem.action[data-v-127b0c62]{padding:inherit !important}li>button>span[data-v-127b0c62],li>a>span[data-v-127b0c62],li>.menuitem>span[data-v-127b0c62]{cursor:pointer;white-space:nowrap}li>button>p[data-v-127b0c62],li>a>p[data-v-127b0c62],li>.menuitem>p[data-v-127b0c62]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal;overflow:hidden;text-overflow:ellipsis}li>button>select[data-v-127b0c62],li>a>select[data-v-127b0c62],li>.menuitem>select[data-v-127b0c62]{margin:0;margin-left:6px}li>button[data-v-127b0c62]:not(:empty),li>a[data-v-127b0c62]:not(:empty),li>.menuitem[data-v-127b0c62]:not(:empty){padding-right:14px !important}li>button>img[data-v-127b0c62],li>a>img[data-v-127b0c62],li>.menuitem>img[data-v-127b0c62]{width:16px;height:16px;margin:14px}li>button>input.radio+label[data-v-127b0c62],li>button>input.checkbox+label[data-v-127b0c62],li>a>input.radio+label[data-v-127b0c62],li>a>input.checkbox+label[data-v-127b0c62],li>.menuitem>input.radio+label[data-v-127b0c62],li>.menuitem>input.checkbox+label[data-v-127b0c62]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-127b0c62]::before,li>a>input.checkbox+label[data-v-127b0c62]::before,li>.menuitem>input.checkbox+label[data-v-127b0c62]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-127b0c62]::before,li>a>input.radio+label[data-v-127b0c62]::before,li>.menuitem>input.radio+label[data-v-127b0c62]::before{margin:-2px 12px 0}li>button>input[data-v-127b0c62]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-127b0c62]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-127b0c62]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-127b0c62],li>a form[data-v-127b0c62],li>.menuitem form[data-v-127b0c62]{display:flex;flex:1 1 auto}li>button form[data-v-127b0c62]:not(:first-child),li>a form[data-v-127b0c62]:not(:first-child),li>.menuitem form[data-v-127b0c62]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-127b0c62],li>button>span[style*="display:none"]+form[data-v-127b0c62],li>a>span.hidden+form[data-v-127b0c62],li>a>span[style*="display:none"]+form[data-v-127b0c62],li>.menuitem>span.hidden+form[data-v-127b0c62],li>.menuitem>span[style*="display:none"]+form[data-v-127b0c62]{margin-left:0}li>button input[data-v-127b0c62],li>a input[data-v-127b0c62],li>.menuitem input[data-v-127b0c62]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-127b0c62]:not(:first-child),li>a input[data-v-127b0c62]:not(:first-child),li>.menuitem input[data-v-127b0c62]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*="display:none"]):first-of-type>button>form[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):first-of-type>button>input[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):first-of-type>a>form[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):first-of-type>a>input[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input[data-v-127b0c62]{margin-top:12px}li:not(.hidden):not([style*="display:none"]):last-of-type>button>form[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):last-of-type>button>input[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):last-of-type>a>form[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):last-of-type>a>input[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form[data-v-127b0c62],li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input[data-v-127b0c62]{margin-bottom:12px}li>button[data-v-127b0c62]{padding:0}li>button span[data-v-127b0c62]{opacity:1}',"",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopoverMenu/NcPopoverMenuItem.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,oBACC,YAAA,CACA,aAAA,CAEA,2BACC,YAAA,CAGD,+EAGC,cAAA,CACA,gBCWe,CDVf,QAAA,CACA,8BAAA,CACA,YAAA,CACA,sBAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,kBAAA,CACA,eAAA,CACA,UAAA,CACA,4BAAA,CACA,kBAAA,CACA,UCgBe,CDbf,ohBAIC,WAAA,CACA,YAAA,CACA,+BAAA,CACA,oBCRS,CDWV,yRAIC,wBAAA,CAQC,ylCACC,gBC5BY,CDiCf,2PAEC,qBAAA,CAGD,6aAGC,oBAAA,CAID,oGACC,0BAAA,CAGD,8FACC,cAAA,CACA,kBAAA,CAID,qFACC,WAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CAGA,eAAA,CACA,sBAAA,CAID,oGACC,QAAA,CACA,eAAA,CAID,mHACC,6BAAA,CAKD,2FACC,UC5ES,CD6ET,WC7ES,CD8ET,WC1EW,CD8EZ,mRAEC,oBAAA,CACA,UAAA,CAED,sKACC,kBAAA,CAED,6JACC,kBAAA,CAED,4QACC,WAAA,CAID,8FACC,YAAA,CACA,aAAA,CAGA,oJACC,eAAA,CAIF,oTAEC,aAAA,CAGD,iGACC,cCtHc,CDuHd,eAAA,CACA,YAAA,CACA,aAAA,CAEA,uJACC,eAAA,CAUA,+gBACC,eAAA,CAMD,ygBACC,kBAAA,CAKJ,2BACC,SAAA,CACA,gCACC,SCnIY",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\nli {\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n\n\t> button,\n\t> a,\n\t> .menuitem {\n\t\tcursor: pointer;\n\t\tline-height: $clickable-area;\n\t\tborder: 0;\n\t\tbackground-color: transparent;\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tfont-weight: normal;\n\t\tbox-shadow: none;\n\t\twidth: 100%;\n\t\tcolor: var(--color-main-text);\n\t\twhite-space: nowrap;\n\t\topacity: $opacity_normal;\n\n\t\t// TODO split into individual components for readability\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'],\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tmin-width: 0; /* Overwrite icons*/\n\t\t\tmin-height: 0;\n\t\t\tbackground-position: #{$icon-margin} center;\n\t\t\tbackground-size: $icon-size;\n\t\t}\n\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'] {\n\t\t\t/* Keep padding to define the width to\n\t\t\t\tassure correct position of a possible text */\n\t\t\tpadding: #{math.div($clickable-area, 2)} 0 #{math.div($clickable-area, 2)} $clickable-area;\n\t\t}\n\n\t\t// If no icons set, force left margin to align\n\t\t&:not([class^='icon-']):not([class*='icon-']) {\n\t\t\t> span,\n\t\t\t> input,\n\t\t\t> form {\n\t\t\t\t&:not([class^='icon-']):not([class*='icon-']):first-child {\n\t\t\t\t\tmargin-left: $clickable-area;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tpadding: 0 $icon-margin 0 $clickable-area;\n\t\t}\n\n\t\t&:not(:disabled):hover,\n\t\t&:not(:disabled):focus,\n\t\t&:not(:disabled).active {\n\t\t\topacity: $opacity_full !important;\n\t\t}\n\n\t\t/* prevent .action class to break the design */\n\t\t&.action {\n\t\t\tpadding: inherit !important;\n\t\t}\n\n\t\t> span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t// long text area\n\t\t> p {\n\t\t\twidth: 150px;\n\t\t\tline-height: 1.6em;\n\t\t\tpadding: 8px 0;\n\t\t\twhite-space: normal;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t// TODO: do we really supports it?\n\t\t> select {\n\t\t\tmargin: 0;\n\t\t\tmargin-left: 6px;\n\t\t}\n\n\t\t/* Add padding if contains icon+text */\n\t\t&:not(:empty) {\n\t\t\tpadding-right: $icon-margin !important;\n\t\t}\n\n\t\t/* DEPRECATED! old img in popover fallback\n\t\t\t* TODO: to remove */\n\t\t> img {\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t\tmargin: $icon-margin;\n\t\t}\n\n\t\t/* checkbox/radio fixes */\n\t\t> input.radio + label,\n\t\t> input.checkbox + label {\n\t\t\tpadding: 0 !important;\n\t\t\twidth: 100%;\n\t\t}\n\t\t> input.checkbox + label::before {\n\t\t\tmargin: -2px 13px 0;\n\t\t}\n\t\t> input.radio + label::before {\n\t\t\tmargin: -2px 12px 0;\n\t\t}\n\t\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\n\t\t\twidth: 150px;\n\t\t}\n\n\t\t// Forms & text inputs\n\t\tform {\n\t\t\tdisplay: flex;\n\t\t\tflex: 1 1 auto;\n\t\t\t/* put a small space between text and form\n\t\t\t\tif there is an element before */\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t\t/* no margin if hidden span before */\n\t\t> span.hidden + form,\n\t\t> span[style*='display:none'] + form {\n\t\t\tmargin-left: 0;\n\t\t}\n\t\t/* Inputs inside popover supports text, submit & reset */\n\t\tinput {\n\t\t\tmin-width: $clickable-area;\n\t\t\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\n\t\t\tmargin: 2px 0;\n\t\t\tflex: 1 1 auto;\n\t\t\t// space between inline inputs\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: do that in js, should be cleaner\n\t/* css hack, only first not hidden */\n\t&:not(.hidden):not([style*='display:none']) {\n\t\t&:first-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-top: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&:last-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-bottom: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t> button {\n\t\tpadding: 0;\n\t\tspan {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},5594:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon[data-v-8a961b36]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mention-bubble--primary .mention-bubble__content[data-v-8a961b36]{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-8a961b36]{max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-8a961b36]{display:inline-flex;overflow:hidden;align-items:center;max-width:100%;height:20px;-webkit-user-select:none;user-select:none;padding-right:6px;padding-left:2px;border-radius:10px;background-color:var(--color-background-dark)}.mention-bubble__icon[data-v-8a961b36]{position:relative;width:16px;height:16px;border-radius:8px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:12px}.mention-bubble__icon--with-avatar[data-v-8a961b36]{color:inherit;background-size:cover}.mention-bubble__title[data-v-8a961b36]{overflow:hidden;margin-left:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-8a961b36]::before{content:attr(title)}.mention-bubble__select[data-v-8a961b36]{position:absolute;z-index:-1;left:-1000px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcRichContenteditable/NcMentionBubble.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CAAA,mECCC,uCAAA,CACA,6CAAA,CAGD,0CACC,eAXiB,CAajB,WAAA,CACA,0BAAA,CACA,mBAAA,CACA,kBAAA,CAGD,0CACC,mBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,WAzBc,CA0Bd,wBAAA,CACA,gBAAA,CACA,iBAAA,CACA,gBA3Be,CA4Bf,kBAAA,CACA,6CAAA,CAGD,uCACC,iBAAA,CACA,UAjCmB,CAkCnB,WAlCmB,CAmCnB,iBAAA,CACA,+CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CAEA,oDACC,aAAA,CACA,qBAAA,CAIF,wCACC,eAAA,CACA,eAlDe,CAmDf,kBAAA,CACA,sBAAA,CAEA,gDACC,mBAAA,CAKF,yCACC,iBAAA,CACA,UAAA,CACA,YAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: math.div($bubble-height, 2);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: math.div($bubble-avatar-size, 2);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put label in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -1000px;\n\t}\n}\n\n"],sourceRoot:""}]);const s=o},394:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}body{--vs-search-input-color: var(--color-main-text);--vs-search-input-bg: var(--color-main-background);--vs-search-input-placeholder-color: var(--color-text-maxcontrast);--vs-font-size: var(--default-font-size);--vs-line-height: var(--default-line-height);--vs-state-disabled-bg: var(--color-background-dark);--vs-state-disabled-color: var(--color-text-maxcontrast);--vs-state-disabled-controls-color: var(--color-text-maxcontrast);--vs-state-disabled-cursor: not-allowed;--vs-disabled-bg: var(--color-background-dark);--vs-disabled-color: var(--color-text-maxcontrast);--vs-disabled-cursor: not-allowed;--vs-border-color: var(--color-border-maxcontrast);--vs-border-width: 2px;--vs-border-style: solid;--vs-border-radius: var(--border-radius-large);--vs-controls-color: var(--color-text-maxcontrast);--vs-selected-bg: var(--color-background-dark);--vs-selected-color: var(--color-main-text);--vs-dropdown-bg: var(--color-main-background);--vs-dropdown-color: var(--color-main-text);--vs-dropdown-z-index: 9999;--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);--vs-dropdown-option-padding: 8px 20px;--vs-dropdown-option--active-bg: var(--color-background-hover);--vs-dropdown-option--active-color: var(--color-main-text);--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);--vs-dropdown-option--deselect-bg: var(--color-error);--vs-dropdown-option--deselect-color: #fff;--vs-transition-duration: 0ms}.v-select.select{min-height:44px;min-width:260px;margin:0}.v-select.select .vs__selected{min-height:36px;padding:0 .5em}.v-select.select .vs__clear{margin-right:2px}.v-select.select.vs--open .vs__dropdown-toggle{border-color:var(--color-primary-element);border-bottom-color:rgba(0,0,0,0)}.v-select.select:not(.vs--disabled,.vs--open) .vs__dropdown-toggle:hover{border-color:var(--color-primary-element)}.v-select.select.vs--disabled .vs__clear,.v-select.select.vs--disabled .vs__deselect{display:none}.v-select.select--no-wrap .vs__selected-options{flex-wrap:nowrap;overflow:auto}.v-select.select--drop-up.vs--open .vs__dropdown-toggle{border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);border-top-color:rgba(0,0,0,0);border-bottom-color:var(--color-primary-element)}.v-select.select .vs__selected-options{min-height:40px}.v-select.select .vs__selected-options .vs__selected~.vs__search[readonly]{position:absolute}.v-select.select:not(.select--no-wrap) .vs__selected-options{min-width:0}.v-select.select:not(.select--no-wrap) .vs__selected-options .vs__selected{min-width:0}.v-select.select.vs--single.vs--loading .vs__selected,.v-select.select.vs--single.vs--open .vs__selected{max-width:100%}.v-select.select.vs--single .vs__selected-options{flex-wrap:nowrap}.vs__dropdown-menu{border-color:var(--color-primary-element) !important;padding:4px !important}.vs__dropdown-menu--floating{width:max-content;position:absolute;top:0;left:0}.vs__dropdown-menu--floating-placement-top{border-radius:var(--vs-border-radius) var(--vs-border-radius) 0 0 !important;border-top-style:var(--vs-border-style) !important;border-bottom-style:none !important;box-shadow:0px -1px 1px 0px var(--color-box-shadow) !important}.vs__dropdown-menu .vs__dropdown-option{border-radius:6px !important}.vs__dropdown-menu .vs__no-options{color:var(--color-text-lighter) !important}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcSelect/NcSelect.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,KAOC,+CAAA,CACA,kDAAA,CACA,kEAAA,CAGA,wCAAA,CACA,4CAAA,CAGA,oDAAA,CACA,wDAAA,CACA,iEAAA,CACA,uCAAA,CACA,8CAAA,CACA,kDAAA,CACA,iCAAA,CAGA,kDAAA,CACA,sBAAA,CACA,wBAAA,CACA,8CAAA,CAGA,kDAAA,CAGA,8CAAA,CACA,2CAAA,CAGA,8CAAA,CACA,2CAAA,CACA,2BAAA,CACA,iEAAA,CAGA,sCAAA,CAGA,8DAAA,CACA,0DAAA,CAGA,uFAAA,CAGA,qDAAA,CACA,0CAAA,CAGA,6BAAA,CAGD,iBAEC,eCxCgB,CDyChB,eAAA,CACA,QAAA,CAEA,+BACC,eAAA,CACA,cAAA,CAGD,4BACC,gBAAA,CAGD,+CACC,yCAAA,CACA,iCAAA,CAGD,yEACC,yCAAA,CAIA,qFAEC,YAAA,CAKD,gDACC,gBAAA,CACA,aAAA,CAMA,wDACC,iEAAA,CACA,8BAAA,CACA,gDAAA,CAKH,uCAEC,eAAA,CAGA,2EACC,iBAAA,CAUD,6DACC,WAAA,CACA,2EACC,WAAA,CAQD,yGAEC,cAAA,CAGF,kDACC,gBAAA,CAKH,mBACC,oDAAA,CACA,sBAAA,CAEA,6BAEC,iBAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CAEA,2CACC,4EAAA,CACA,kDAAA,CACA,mCAAA,CACA,8DAAA,CAIF,wCACC,4BAAA,CAGD,mCACC,0CAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"cdfec4c\"; @import 'variables'; @import 'material-icons';\n\nbody {\n\t/**\n\t * Set custom vue-select CSS variables.\n\t * Needs to be on the body (not :root) for theming to apply (see nextcloud/server#36462)\n\t */\n\n\t/* Search Input */\n\t--vs-search-input-color: var(--color-main-text);\n\t--vs-search-input-bg: var(--color-main-background);\n\t--vs-search-input-placeholder-color: var(--color-text-maxcontrast);\n\n\t/* Font */\n\t--vs-font-size: var(--default-font-size);\n\t--vs-line-height: var(--default-line-height);\n\n\t/* Disabled State */\n\t--vs-state-disabled-bg: var(--color-background-dark);\n\t--vs-state-disabled-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-controls-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-cursor: not-allowed;\n\t--vs-disabled-bg: var(--color-background-dark);\n\t--vs-disabled-color: var(--color-text-maxcontrast);\n\t--vs-disabled-cursor: not-allowed;\n\n\t/* Borders */\n\t--vs-border-color: var(--color-border-maxcontrast);\n\t--vs-border-width: 2px;\n\t--vs-border-style: solid;\n\t--vs-border-radius: var(--border-radius-large);\n\n\t/* Component Controls: Clear, Open Indicator */\n\t--vs-controls-color: var(--color-text-maxcontrast);\n\n\t/* Selected */\n\t--vs-selected-bg: var(--color-background-dark);\n\t--vs-selected-color: var(--color-main-text);\n\n\t/* Dropdown */\n\t--vs-dropdown-bg: var(--color-main-background);\n\t--vs-dropdown-color: var(--color-main-text);\n\t--vs-dropdown-z-index: 9999;\n\t--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);\n\n\t/* Options */\n\t--vs-dropdown-option-padding: 8px 20px;\n\n\t/* Active State */\n\t--vs-dropdown-option--active-bg: var(--color-background-hover);\n\t--vs-dropdown-option--active-color: var(--color-main-text);\n\n\t/* Keyboard Focus State */\n\t--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);\n\n\t/* Deselect State */\n\t--vs-dropdown-option--deselect-bg: var(--color-error);\n\t--vs-dropdown-option--deselect-color: #fff;\n\n\t/* Transitions */\n\t--vs-transition-duration: 0ms;\n}\n\n.v-select.select {\n\t/* Override default vue-select styles */\n\tmin-height: $clickable-area;\n\tmin-width: 260px;\n\tmargin: 0;\n\n\t.vs__selected {\n\t\tmin-height: 36px;\n\t\tpadding: 0 0.5em;\n\t}\n\n\t.vs__clear {\n\t\tmargin-right: 2px;\n\t}\n\n\t&.vs--open .vs__dropdown-toggle {\n\t\tborder-color: var(--color-primary-element);\n\t\tborder-bottom-color: transparent;\n\t}\n\n\t&:not(.vs--disabled, .vs--open) .vs__dropdown-toggle:hover {\n\t\tborder-color: var(--color-primary-element);\n\t}\n\n\t&.vs--disabled {\n\t\t.vs__clear,\n\t\t.vs__deselect {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t&--no-wrap {\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t\toverflow: auto;\n\t\t}\n\t}\n\n\t&--drop-up {\n\t\t&.vs--open {\n\t\t\t.vs__dropdown-toggle {\n\t\t\t\tborder-radius: 0 0 var(--vs-border-radius) var(--vs-border-radius);\n\t\t\t\tborder-top-color: transparent;\n\t\t\t\tborder-bottom-color: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n\n\t.vs__selected-options {\n\t\t// If search is hidden, ensure that the height of the search is the same\n\t\tmin-height: 40px; // 36px search height + 4px search margin\n\n\t\t// Hide search from dom if unused to prevent unneeded flex wrap\n\t\t.vs__selected ~ .vs__search[readonly] {\n\t\t\tposition: absolute;\n\t\t}\n\t}\n\n\t/**\n\t * Fix overlow of selected options\n\t * There is an upstream pull request, if it is merged and released remove this fix\n\t * https://github.com/sagalbot/vue-select/pull/1756\n\t */\n\t&:not(.select--no-wrap) {\n\t\t.vs__selected-options {\n\t\t\tmin-width: 0;\n\t\t\t.vs__selected {\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.vs--single {\n\t\t&.vs--loading,\n\t\t&.vs--open {\n\t\t\t.vs__selected {\n\t\t\t\t// Fix `max-width` for `position: absolute`\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t}\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t}\n\t}\n}\n\n.vs__dropdown-menu {\n\tborder-color: var(--color-primary-element) !important;\n\tpadding: 4px !important;\n\n\t&--floating {\n\t\t/* Fallback styles overidden by programmatically set inline styles */\n\t\twidth: max-content;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\n\t\t&-placement-top {\n\t\t\tborder-radius: var(--vs-border-radius) var(--vs-border-radius) 0 0 !important;\n\t\t\tborder-top-style: var(--vs-border-style) !important;\n\t\t\tborder-bottom-style: none !important;\n\t\t\tbox-shadow: 0px -1px 1px 0px var(--color-box-shadow) !important;\n\t\t}\n\t}\n\n\t.vs__dropdown-option {\n\t\tborder-radius: 6px !important;\n\t}\n\n\t.vs__no-options {\n\t\tcolor: var(--color-text-lighter) !important;\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=o},8369:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(7537),r=n.n(a),i=n(3645),o=n.n(i)()(r());o.push([e.id,"\nbutton.menuitem[data-v-127b0c62] {\n\tborder-radius: var(--border-radius-large) !important;\n\ttext-align: left;\n}\nbutton.menuitem *[data-v-127b0c62] {\n\tcursor: pointer;\n}\nbutton.menuitem[data-v-127b0c62]:disabled {\n\topacity: 0.5 !important;\n\tcursor: default;\n}\nbutton.menuitem:disabled *[data-v-127b0c62] {\n\tcursor: default;\n}\n.menuitem.active[data-v-127b0c62] {\n\tborder-left: 4px solid var(--color-primary-element);\n\tborder-radius: 0 var(--border-radius-large) var(--border-radius-large) 0 !important;\n}\n","",{version:3,sources:["webpack://./src/components/NcPopoverMenu/NcPopoverMenuItem.vue"],names:[],mappings:";AAgYA;CACA,oDAAA;CACA,gBAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,uBAAA;CACA,eAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,mDAAA;CACA,mFAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 John Molakvoæ \n -\n - @author John Molakvoæ \n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see .\n -\n --\x3e\n\n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Alert.vue?vue&type=template&id=89056902&\"\nimport script from \"./Alert.vue?vue&type=script&lang=js&\"\nexport * from \"./Alert.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AlertCircleOutline.vue?vue&type=template&id=108cd4b2&\"\nimport script from \"./AlertCircleOutline.vue?vue&type=script&lang=js&\"\nexport * from \"./AlertCircleOutline.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertDecagram.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertDecagram.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AlertDecagram.vue?vue&type=template&id=137d8918&\"\nimport script from \"./AlertDecagram.vue?vue&type=script&lang=js&\"\nexport * from \"./AlertDecagram.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-decagram-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M13,17H11V15H13V17M13,13H11V7H13V13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7&\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowRight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowRight.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrowRight.vue?vue&type=template&id=2ee57bcf&\"\nimport script from \"./ArrowRight.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrowRight.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-right-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarBlank.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarBlank.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CalendarBlank.vue?vue&type=template&id=042fd602&\"\nimport script from \"./CalendarBlank.vue?vue&type=script&lang=js&\"\nexport * from \"./CalendarBlank.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon calendar-blank-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Check.vue?vue&type=template&id=2e48c8c6&\"\nimport script from \"./Check.vue?vue&type=script&lang=js&\"\nexport * from \"./Check.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon check-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxBlankOutline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxBlankOutline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CheckboxBlankOutline.vue?vue&type=template&id=fb5828cc&\"\nimport script from \"./CheckboxBlankOutline.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxBlankOutline.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon checkbox-blank-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxMarked.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxMarked.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CheckboxMarked.vue?vue&type=template&id=66a59ab7&\"\nimport script from \"./CheckboxMarked.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxMarked.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon checkbox-marked-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxMarkedCircle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxMarkedCircle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CheckboxMarkedCircle.vue?vue&type=template&id=b94c09be&\"\nimport script from \"./CheckboxMarkedCircle.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxMarkedCircle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon checkbox-marked-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronDown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronDown.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChevronDown.vue?vue&type=template&id=5a2dce2f&\"\nimport script from \"./ChevronDown.vue?vue&type=script&lang=js&\"\nexport * from \"./ChevronDown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-down-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronLeft.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronLeft.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChevronLeft.vue?vue&type=template&id=09d94b5a&\"\nimport script from \"./ChevronLeft.vue?vue&type=script&lang=js&\"\nexport * from \"./ChevronLeft.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronRight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronRight.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChevronRight.vue?vue&type=template&id=750bcc07&\"\nimport script from \"./ChevronRight.vue?vue&type=script&lang=js&\"\nexport * from \"./ChevronRight.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-right-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronUp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronUp.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChevronUp.vue?vue&type=template&id=431f415e&\"\nimport script from \"./ChevronUp.vue?vue&type=script&lang=js&\"\nexport * from \"./ChevronUp.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-up-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Close.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Close.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Close.vue?vue&type=template&id=75d4151a&\"\nimport script from \"./Close.vue?vue&type=script&lang=js&\"\nexport * from \"./Close.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon close-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Delete.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Delete.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Delete.vue?vue&type=template&id=458c7ecb&\"\nimport script from \"./Delete.vue?vue&type=script&lang=js&\"\nexport * from \"./Delete.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon delete-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./DotsHorizontal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./DotsHorizontal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DotsHorizontal.vue?vue&type=template&id=6950b9a6&\"\nimport script from \"./DotsHorizontal.vue?vue&type=script&lang=js&\"\nexport * from \"./DotsHorizontal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon dots-horizontal-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Eye.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Eye.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Eye.vue?vue&type=template&id=beccbcf6&\"\nimport script from \"./Eye.vue?vue&type=script&lang=js&\"\nexport * from \"./Eye.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon eye-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./EyeOff.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./EyeOff.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EyeOff.vue?vue&type=template&id=0fb59bd2&\"\nimport script from \"./EyeOff.vue?vue&type=script&lang=js&\"\nexport * from \"./EyeOff.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon eye-off-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./HelpCircle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./HelpCircle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelpCircle.vue?vue&type=template&id=4dac44fa&\"\nimport script from \"./HelpCircle.vue?vue&type=script&lang=js&\"\nexport * from \"./HelpCircle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon help-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LinkVariant.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LinkVariant.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LinkVariant.vue?vue&type=template&id=3834522c&\"\nimport script from \"./LinkVariant.vue?vue&type=script&lang=js&\"\nexport * from \"./LinkVariant.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon link-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Magnify.vue?vue&type=template&id=d480a606&\"\nimport script from \"./Magnify.vue?vue&type=script&lang=js&\"\nexport * from \"./Magnify.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon magnify-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Menu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Menu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Menu.vue?vue&type=template&id=b3763850&\"\nimport script from \"./Menu.vue?vue&type=script&lang=js&\"\nexport * from \"./Menu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon menu-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuOpen.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuOpen.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MenuOpen.vue?vue&type=template&id=179c83d7&\"\nimport script from \"./MenuOpen.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuOpen.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon menu-open-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MinusBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MinusBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MinusBox.vue?vue&type=template&id=d90829ce&\"\nimport script from \"./MinusBox.vue?vue&type=script&lang=js&\"\nexport * from \"./MinusBox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon minus-box-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Pause.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Pause.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Pause.vue?vue&type=template&id=713ddbb4&\"\nimport script from \"./Pause.vue?vue&type=script&lang=js&\"\nexport * from \"./Pause.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon pause-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M14,19H18V5H14M6,19H10V5H6V19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Pencil.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Pencil.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Pencil.vue?vue&type=template&id=b6f92b54&\"\nimport script from \"./Pencil.vue?vue&type=script&lang=js&\"\nexport * from \"./Pencil.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon pencil-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Play.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Play.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Play.vue?vue&type=template&id=40a96fba&\"\nimport script from \"./Play.vue?vue&type=script&lang=js&\"\nexport * from \"./Play.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M8,5.14V19.14L19,12.14L8,5.14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./RadioboxBlank.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./RadioboxBlank.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RadioboxBlank.vue?vue&type=template&id=0bb006bd&\"\nimport script from \"./RadioboxBlank.vue?vue&type=script&lang=js&\"\nexport * from \"./RadioboxBlank.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon radiobox-blank-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./RadioboxMarked.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./RadioboxMarked.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RadioboxMarked.vue?vue&type=template&id=3ebe8680&\"\nimport script from \"./RadioboxMarked.vue?vue&type=script&lang=js&\"\nexport * from \"./RadioboxMarked.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon radiobox-marked-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Star.vue?vue&type=template&id=22339b94&\"\nimport script from \"./Star.vue?vue&type=script&lang=js&\"\nexport * from \"./Star.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon star-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./StarOutline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./StarOutline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StarOutline.vue?vue&type=template&id=3a0ad9db&\"\nimport script from \"./StarOutline.vue?vue&type=script&lang=js&\"\nexport * from \"./StarOutline.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon star-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToggleSwitch.vue?vue&type=template&id=286211c1&\"\nimport script from \"./ToggleSwitch.vue?vue&type=script&lang=js&\"\nexport * from \"./ToggleSwitch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon toggle-switch-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ToggleSwitchOff.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ToggleSwitchOff.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToggleSwitchOff.vue?vue&type=template&id=134175c4&\"\nimport script from \"./ToggleSwitchOff.vue?vue&type=script&lang=js&\"\nexport * from \"./ToggleSwitchOff.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon toggle-switch-off-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Undo.vue?vue&type=template&id=bc8e3c2a&\"\nimport script from \"./Undo.vue?vue&type=script&lang=js&\"\nexport * from \"./Undo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./UndoVariant.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./UndoVariant.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UndoVariant.vue?vue&type=template&id=3b13fe6c&\"\nimport script from \"./UndoVariant.vue?vue&type=script&lang=js&\"\nexport * from \"./UndoVariant.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Web.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Web.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Web.vue?vue&type=template&id=175b4906&\"\nimport script from \"./Web.vue?vue&type=script&lang=js&\"\nexport * from \"./Web.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon web-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js&\"","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueMultiselect=e():t.VueMultiselect=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=89)}([function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(35),i=Function.prototype,o=i.call,s=r&&i.bind.bind(o,o);t.exports=r?s:function(t){return function(){return o.apply(t,arguments)}}},function(t,e,n){var r=n(59),i=r.all;t.exports=r.IS_HTMLDDA?function(t){return\"function\"==typeof t||t===i}:function(t){return\"function\"==typeof t}},function(t,e,n){var r=n(4),i=n(43).f,o=n(30),s=n(11),u=n(33),a=n(95),l=n(66);t.exports=function(t,e){var n,c,f,p,h,d=t.target,v=t.global,g=t.stat;if(n=v?r:g?r[d]||u(d,{}):(r[d]||{}).prototype)for(c in e){if(p=e[c],t.dontCallGetSet?(h=i(n,c),f=h&&h.value):f=n[c],!l(v?c:d+(g?\".\":\"#\")+c,t.forced)&&void 0!==f){if(typeof p==typeof f)continue;a(p,f)}(t.sham||f&&f.sham)&&o(p,\"sham\",!0),s(n,c,p,t)}}},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n(\"object\"==typeof globalThis&&globalThis)||n(\"object\"==typeof window&&window)||n(\"object\"==typeof self&&self)||n(\"object\"==typeof e&&e)||function(){return this}()||Function(\"return this\")()}).call(e,n(139))},function(t,e,n){var r=n(0);t.exports=!r(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(t,e,n){var r=n(8),i=String,o=TypeError;t.exports=function(t){if(r(t))return t;throw o(i(t)+\" is not an object\")}},function(t,e,n){var r=n(1),i=n(14),o=r({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return o(i(t),e)}},function(t,e,n){var r=n(2),i=n(59),o=i.all;t.exports=i.IS_HTMLDDA?function(t){return\"object\"==typeof t?null!==t:r(t)||t===o}:function(t){return\"object\"==typeof t?null!==t:r(t)}},function(t,e,n){var r=n(4),i=n(47),o=n(7),s=n(75),u=n(72),a=n(76),l=i(\"wks\"),c=r.Symbol,f=c&&c.for,p=a?c:c&&c.withoutSetter||s;t.exports=function(t){if(!o(l,t)||!u&&\"string\"!=typeof l[t]){var e=\"Symbol.\"+t;u&&o(c,t)?l[t]=c[t]:l[t]=a&&f?f(e):p(e)}return l[t]}},function(t,e,n){var r=n(123);t.exports=function(t){return r(t.length)}},function(t,e,n){var r=n(2),i=n(13),o=n(104),s=n(33);t.exports=function(t,e,n,u){u||(u={});var a=u.enumerable,l=void 0!==u.name?u.name:e;if(r(n)&&o(n,l,u),u.global)a?t[e]=n:s(e,n);else{try{u.unsafe?t[e]&&(a=!0):delete t[e]}catch(t){}a?t[e]=n:i.f(t,e,{value:n,enumerable:!1,configurable:!u.nonConfigurable,writable:!u.nonWritable})}return t}},function(t,e,n){var r=n(35),i=Function.prototype.call;t.exports=r?i.bind(i):function(){return i.apply(i,arguments)}},function(t,e,n){var r=n(5),i=n(62),o=n(77),s=n(6),u=n(50),a=TypeError,l=Object.defineProperty,c=Object.getOwnPropertyDescriptor;e.f=r?o?function(t,e,n){if(s(t),e=u(e),s(n),\"function\"==typeof t&&\"prototype\"===e&&\"value\"in n&&\"writable\"in n&&!n.writable){var r=c(t,e);r&&r.writable&&(t[e]=n.value,n={configurable:\"configurable\"in n?n.configurable:r.configurable,enumerable:\"enumerable\"in n?n.enumerable:r.enumerable,writable:!1})}return l(t,e,n)}:l:function(t,e,n){if(s(t),e=u(e),s(n),i)try{return l(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw a(\"Accessors not supported\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(24),i=Object;t.exports=function(t){return i(r(t))}},function(t,e,n){var r=n(1),i=r({}.toString),o=r(\"\".slice);t.exports=function(t){return o(i(t),8,-1)}},function(t,e,n){var r=n(0),i=n(9),o=n(23),s=i(\"species\");t.exports=function(t){return o>=51||!r(function(){var e=[],n=e.constructor={};return n[s]=function(){return{foo:1}},1!==e[t](Boolean).foo})}},function(t,e,n){var r=n(4),i=n(2),o=function(t){return i(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?o(r[t]):r[t]&&r[t][e]}},function(t,e,n){var r=n(15);t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},function(t,e,n){var r=n(39),i=n(24);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(29),i=String;t.exports=function(t){if(\"Symbol\"===r(t))throw TypeError(\"Cannot convert a Symbol value to a string\");return i(t)}},function(t,e,n){var r=n(100),i=n(1),o=n(39),s=n(14),u=n(10),a=n(28),l=i([].push),c=function(t){var e=1==t,n=2==t,i=3==t,c=4==t,f=6==t,p=7==t,h=5==t||f;return function(d,v,g,y){for(var b,m,x=s(d),_=o(x),O=r(v,g),w=u(_),S=0,E=y||a,L=e?E(d,w):n||p?E(d,0):void 0;w>S;S++)if((h||S in _)&&(b=_[S],m=O(b,S,x),t))if(e)L[S]=m;else if(m)switch(t){case 3:return!0;case 5:return b;case 6:return S;case 2:l(L,b)}else switch(t){case 4:return!1;case 7:l(L,b)}return f?-1:i||c?c:L}};t.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterReject:c(7)}},function(t,e){var n=TypeError;t.exports=function(t){if(t>9007199254740991)throw n(\"Maximum allowed index exceeded\");return t}},function(t,e,n){var r,i,o=n(4),s=n(97),u=o.process,a=o.Deno,l=u&&u.versions||a&&a.version,c=l&&l.v8;c&&(r=c.split(\".\"),i=r[0]>0&&r[0]<4?1:+(r[0]+r[1])),!i&&s&&(!(r=s.match(/Edge\\/(\\d+)/))||r[1]>=74)&&(r=s.match(/Chrome\\/(\\d+)/))&&(i=+r[1]),t.exports=i},function(t,e,n){var r=n(40),i=TypeError;t.exports=function(t){if(r(t))throw i(\"Can't call method on \"+t);return t}},function(t,e,n){var r=n(2),i=n(74),o=TypeError;t.exports=function(t){if(r(t))return t;throw o(i(t)+\" is not a function\")}},function(t,e,n){\"use strict\";var r=n(0);t.exports=function(t,e){var n=[][t];return!!n&&r(function(){n.call(null,e||function(){return 1},1)})}},function(t,e,n){\"use strict\";var r=n(5),i=n(18),o=TypeError,s=Object.getOwnPropertyDescriptor,u=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],\"length\",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=u?function(t,e){if(i(t)&&!s(t,\"length\").writable)throw o(\"Cannot set read only .length\");return t.length=e}:function(t,e){return t.length=e}},function(t,e,n){var r=n(94);t.exports=function(t,e){return new(r(t))(0===e?0:e)}},function(t,e,n){var r=n(51),i=n(2),o=n(15),s=n(9),u=s(\"toStringTag\"),a=Object,l=\"Arguments\"==o(function(){return arguments}()),c=function(t,e){try{return t[e]}catch(t){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=c(e=a(t),u))?n:l?o(e):\"Object\"==(r=o(e))&&i(e.callee)?\"Arguments\":r}},function(t,e,n){var r=n(5),i=n(13),o=n(31);t.exports=r?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){\"use strict\";var r=n(50),i=n(13),o=n(31);t.exports=function(t,e,n){var s=r(e);s in t?i.f(t,s,o(0,n)):t[s]=n}},function(t,e,n){var r=n(4),i=Object.defineProperty;t.exports=function(t,e){try{i(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},function(t,e){t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},function(t,e,n){var r=n(0);t.exports=!r(function(){var t=function(){}.bind();return\"function\"!=typeof t||t.hasOwnProperty(\"prototype\")})},function(t,e,n){var r=n(5),i=n(7),o=Function.prototype,s=r&&Object.getOwnPropertyDescriptor,u=i(o,\"name\"),a=u&&\"something\"===function(){}.name,l=u&&(!r||r&&s(o,\"name\").configurable);t.exports={EXISTS:u,PROPER:a,CONFIGURABLE:l}},function(t,e,n){var r=n(15),i=n(1);t.exports=function(t){if(\"Function\"===r(t))return i(t)}},function(t,e){t.exports={}},function(t,e,n){var r=n(1),i=n(0),o=n(15),s=Object,u=r(\"\".split);t.exports=i(function(){return!s(\"z\").propertyIsEnumerable(0)})?function(t){return\"String\"==o(t)?u(t,\"\"):s(t)}:s},function(t,e){t.exports=function(t){return null===t||void 0===t}},function(t,e,n){var r=n(17),i=n(2),o=n(44),s=n(76),u=Object;t.exports=s?function(t){return\"symbol\"==typeof t}:function(t){var e=r(\"Symbol\");return i(e)&&o(e.prototype,u(t))}},function(t,e,n){var r,i=n(6),o=n(107),s=n(34),u=n(38),a=n(101),l=n(60),c=n(70),f=c(\"IE_PROTO\"),p=function(){},h=function(t){return\"\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {HastNodes | null | undefined}\n * hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, null)\n const foot = footer(state)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n // To do: next major: always return root?\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {References} node\n * Reference node (image, link).\n * @returns {ElementContent | Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return {type: 'text', value: '![' + node.alt + suffix}\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract} MdastParents\n *\n * @typedef EmbeddedHastFields\n * hast fields.\n * @property {string | null | undefined} [hName]\n * Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n * Generate an element with these properties instead.\n * @property {Array | null | undefined} [hChildren]\n * Generate an element with this content instead.\n *\n * @typedef {Record & EmbeddedHastFields} MdastData\n * mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n * mdast node with embedded hast data.\n *\n * @typedef PointLike\n * Point-like value.\n * @property {number | null | undefined} [line]\n * Line.\n * @property {number | null | undefined} [column]\n * Column.\n * @property {number | null | undefined} [offset]\n * Offset.\n *\n * @typedef PositionLike\n * Position-like value.\n * @property {PointLike | null | undefined} [start]\n * Point-like value.\n * @property {PointLike | null | undefined} [end]\n * Point-like value.\n *\n * @callback Handler\n * Handle a node.\n * @param {State} state\n * Info passed around.\n * @param {any} node\n * mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n * Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n * hast node.\n *\n * @callback HFunctionProps\n * Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {HastProperties} props\n * Properties.\n * @param {Array | null | undefined} [children]\n * hast content.\n * @returns {HastElement}\n * Compiled element.\n *\n * @callback HFunctionNoProps\n * Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {Array | null | undefined} [children]\n * hast content.\n * @returns {HastElement}\n * Compiled element.\n *\n * @typedef HFields\n * Info on `state`.\n * @property {boolean} dangerous\n * Whether HTML is allowed.\n * @property {string} clobberPrefix\n * Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n * Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n * HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n * Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n * Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n * Definition cache.\n * @property {Record} footnoteById\n * Footnote definitions by their identifier.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Record} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {Handler} unknownHandler\n * Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n * Copy a node’s positional info.\n * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one\n * Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n * Like `state` but lower-level and usable on non-elements.\n * Deprecated: use `patch` and `applyData`.\n * @property {Array} passThrough\n * List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n * Prefix to use before the `id` attribute on footnotes to prevent it from\n * *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n * Label to use from backreferences back to their footnote call (affects\n * screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (note that `id: 'footnote-label'`\n * is always added as footnote calls use it with `aria-describedby` to\n * provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes.\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n * Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n * Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || {}\n const dangerous = settings.allowDangerousHtml || false\n /** @type {Record} */\n const footnoteById = {}\n\n // To do: next major: add `options` to state, remove:\n // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n // `unknownHandler`.\n\n // To do: next major: move to `state.options.allowDangerousHtml`.\n state.dangerous = dangerous\n // To do: next major: move to `state.options`.\n state.clobberPrefix =\n settings.clobberPrefix === undefined || settings.clobberPrefix === null\n ? 'user-content-'\n : settings.clobberPrefix\n // To do: next major: move to `state.options`.\n state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n // To do: next major: move to `state.options`.\n state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n // To do: next major: move to `state.options`.\n state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n className: ['sr-only']\n }\n // To do: next major: move to `state.options`.\n state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n // To do: next major: move to `state.options`.\n state.unknownHandler = settings.unknownHandler\n // To do: next major: move to `state.options`.\n state.passThrough = settings.passThrough\n\n state.handlers = {...handlers, ...settings.handlers}\n\n // To do: next major: replace utility with `definitionById` object, so we\n // only walk once (as we need footnotes too).\n state.definition = definitions(tree)\n state.footnoteById = footnoteById\n /** @type {Array} */\n state.footnoteOrder = []\n /** @type {Record} */\n state.footnoteCounts = {}\n\n state.patch = patch\n state.applyData = applyData\n state.one = oneBound\n state.all = allBound\n state.wrap = wrap\n // To do: next major: remove `augment`.\n state.augment = augment\n\n visit(tree, 'footnoteDefinition', (definition) => {\n const id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n })\n\n // @ts-expect-error Hush, it’s fine!\n return state\n\n /**\n * Finalise the created `right`, a hast node, from `left`, an mdast node.\n *\n * @param {MdastNodeWithData | PositionLike | null | undefined} left\n * @param {HastElementContent} right\n * @returns {HastElementContent}\n */\n /* c8 ignore start */\n // To do: next major: remove.\n function augment(left, right) {\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && 'data' in left && left.data) {\n /** @type {MdastData} */\n const data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = {...right.properties, ...data.hProperties}\n }\n\n if ('children' in right && right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n if (left) {\n const ctx = 'type' in left ? left : {position: left}\n\n if (!generated(ctx)) {\n // @ts-expect-error: fine.\n right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n }\n }\n\n return right\n }\n /* c8 ignore stop */\n\n /**\n * Create an element for `node`.\n *\n * @type {HFunctionProps}\n */\n /* c8 ignore start */\n // To do: next major: remove.\n function state(node, tagName, props, children) {\n if (Array.isArray(props)) {\n children = props\n props = {}\n }\n\n // @ts-expect-error augmenting an element yields an element.\n return augment(node, {\n type: 'element',\n tagName,\n properties: props || {},\n children: children || []\n })\n }\n /* c8 ignore stop */\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | null | undefined} [parent]\n * Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n * Resulting hast node.\n */\n function oneBound(node, parent) {\n // @ts-expect-error: that’s a state :)\n return one(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function allBound(parent) {\n // @ts-expect-error: that’s a state :)\n return all(state, parent)\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {void}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {Type | HastElement}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {Type | HastElement} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent is likely to keep the content around (otherwise: pass\n // `hChildren`).\n else {\n result = {\n type: 'element',\n tagName: hName,\n properties: {},\n children: []\n }\n\n // To do: next major: take the children from the `root`, or inject the\n // raw/text/comment or so into the element?\n // if ('children' in node) {\n // // @ts-expect-error: assume `children` are allowed in elements.\n // result.children = node.children\n // } else {\n // // @ts-expect-error: assume `node` is allowed in elements.\n // result.children.push(node)\n // }\n }\n }\n\n if (result.type === 'element' && hProperties) {\n result.properties = {...result.properties, ...hProperties}\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n // @ts-expect-error: assume valid children are defined.\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | null | undefined} [parent]\n * Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n * Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n const type = node && node.type\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(state.handlers, type)) {\n return state.handlers[type](state, node, parent)\n }\n\n if (state.passThrough && state.passThrough.includes(type)) {\n // To do: next major: deep clone.\n // @ts-expect-error: types of passed through nodes are expected to be added manually.\n return 'children' in node ? {...node, children: all(state, node)} : node\n }\n\n if (state.unknownHandler) {\n return state.unknownHandler(state, node, parent)\n }\n\n return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = one(state, nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastText | HastElement}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastText | HastElement} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: all(state, node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n * Whether to add line endings at start and end.\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code)\n ? factorySpace(effects, after, 'linePrefix')(code)\n : after(code)\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownSpace} from 'micromark-util-character'\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n return ok(code)\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n effects.exit(type)\n return ok(code)\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nexport const unicodePunctuationRegex =\n /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/)\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {Array} */\n let parameters\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n remove = remove > 0 ? remove : 0\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove)\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {Array} items\n * Items to add to `list`.\n * @returns {Array}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record} */\n const left = maybe || (all[hook] = {})\n /** @type {Record | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array} existing\n * @param {Array} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return (\n value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ')\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\nimport {splice} from 'micromark-util-chunked'\n/**\n * Tokenize subcontent.\n *\n * @param {Array} events\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n let event\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number} */\n let otherIndex\n /** @type {Event} */\n let otherEvent\n /** @type {Array} */\n let parameters\n /** @type {Array} */\n let subevents\n /** @type {boolean | undefined} */\n let more\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n event = events[index]\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array} events\n * @param {number} eventIndex\n * @returns {Record}\n */\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {Array} */\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {Array<[number, number]>} */\n const jumps = []\n /** @type {Record} */\n const gaps = {}\n /** @type {Array} */\n let stream\n /** @type {Token | undefined} */\n let previous\n let index = -1\n /** @type {Token | undefined} */\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start]\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition)\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n if (!current.next) {\n stream.push(null)\n }\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n tokenizer.write(stream)\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n }\n\n // Unravel the next token.\n previous = current\n current = current.next\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start)\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n }\n\n // Help GC.\n tokenizer.events = []\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n index = -1\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('thematicBreak')\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code\n return atBreak(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit('thematicBreak')\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n effects.exit('thematicBreakSequence')\n return markdownSpace(code)\n ? factorySpace(effects, atBreak, 'whitespace')(code)\n : atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/** @type {Construct} */\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n return nok(code)\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n return nok(code)\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this\n return contStart\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n contBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return contBefore(code)\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code)\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * \n * b>\n * \n * \n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (``).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | \n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return enclosedBefore\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return raw(code)\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return enclosed(code)\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return enclosedBefore(code)\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? enclosedEscape : enclosed\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return enclosed\n }\n return enclosed(code)\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (\n !balance &&\n (code === null || code === 41 || markdownLineEndingOrSpace(code))\n ) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n if (balance < limit && code === 40) {\n effects.consume(code)\n balance++\n return raw\n }\n if (code === 41) {\n effects.consume(code)\n balance--\n return raw\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? rawEscape : raw\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return raw\n }\n return raw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n let seen\n return start\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (\n size > 999 ||\n code === null ||\n code === 91 ||\n (code === 93 && !seen) ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return labelInside(code)\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n if (!seen) seen = !markdownSpace(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return begin\n }\n return nok(code)\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n return atBreak(code)\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return begin(marker)\n }\n if (code === null) {\n return nok(code)\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atBreak, 'linePrefix')\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return inside(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n return code === 92 ? escape : inside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return inside\n }\n return inside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n\n/** @type {Construct} */\nconst titleBefore = {\n tokenize: tokenizeTitleBefore,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n let identifier\n return start\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter('definition')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n return markerAfter\n }\n return nok(code)\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, destinationBefore)(code)\n : destinationBefore(code)\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(\n effects,\n destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )(code)\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code)\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code)\n ? factorySpace(effects, afterWhitespace, 'whitespace')(code)\n : afterWhitespace(code)\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier)\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, beforeMarker)(code)\n : nok(code)\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(\n effects,\n titleAfter,\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code)\n ? factorySpace(effects, titleAfterOptionalWhitespace, 'whitespace')(code)\n : titleAfterOptionalWhitespace(code)\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst furtherStart = {\n tokenize: tokenizeFurtherStart,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter('codeIndented')\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? atBreak(code)\n : nok(code)\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code)\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return inside(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return atBreak(code)\n }\n effects.consume(code)\n return inside\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit('codeIndented')\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this\n return furtherStart\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return furtherStart\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? furtherStart(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n let content\n /** @type {Token} */\n let text\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n }\n\n // Suffix whitespace, part of the closing.\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter('atxHeading')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('atxHeadingSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return sequenceOpen\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n return nok(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequenceFurther(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code)\n return sequenceFurther\n }\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return atBreak(code)\n }\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length\n /** @type {number | undefined} */\n let content\n /** @type {number | undefined} */\n let text\n /** @type {number | undefined} */\n let definition\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n }\n // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n\n // Change the paragraph to setext heading text.\n events[text][1].type = 'setextHeadingText'\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context])\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length\n /** @type {boolean | undefined} */\n let paragraph\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n marker = code\n return before(code)\n }\n return nok(code)\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('setextHeadingLineSequence')\n return inside(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n effects.exit('setextHeadingLineSequence')\n return markdownSpace(code)\n ? factorySpace(effects, after, 'lineSuffix')(code)\n : after(code)\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * .\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n\n/** @type {Construct} */\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n\n/** @type {Construct} */\nconst blankLineBefore = {\n tokenize: tokenizeBlankLineBefore,\n partial: true\n}\nconst nonLazyContinuationStart = {\n tokenize: tokenizeNonLazyContinuationStart,\n partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start\n // Remove the line prefix.\n events.splice(index - 2, 2)\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n let marker\n /** @type {boolean} */\n let closingTag\n /** @type {string} */\n let buffer\n /** @type {number} */\n let index\n /** @type {Code} */\n let markerB\n return start\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n closingTag = true\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n marker = 3\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n marker = 2\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n marker = 5\n index = 0\n return cdataOpenInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n marker = 4\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After ` | &<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | \n * ^^\n * > | \n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n const slash = code === 47\n const name = buffer.toLowerCase()\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6\n if (slash) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n marker = 7\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : closingTag\n ? completeClosingTagAfter(code)\n : completeAttributeNameBefore(code)\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > |
\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n return completeEnd(code)\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n return completeEnd(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n return completeAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n return completeAttributeNameBefore(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n markerB = code\n return completeAttributeValueQuoted\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n return completeAttributeValueUnquoted(code)\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code)\n markerB = null\n return completeAttributeValueQuotedAfter\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 47 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n if (code === 60 && marker === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n if (code === 62 && marker === 4) {\n effects.consume(code)\n return continuationClose\n }\n if (code === 63 && marker === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n if (code === 93 && marker === 5) {\n effects.consume(code)\n return continuationCdataInside\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit('htmlFlowData')\n return effects.check(\n blankLineBefore,\n continuationAfter,\n continuationStart\n )(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationStart(code)\n }\n effects.consume(code)\n return continuation\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(\n nonLazyContinuationStart,\n continuationStartNonLazy,\n continuationAfter\n )(code)\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return continuationBefore\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | \n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code)\n }\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit | undefined} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n const columnStart = {}\n /** @type {Array} */\n const resolveAllConstructs = []\n /** @type {Array} */\n let chunks = []\n /** @type {Array} */\n let stack = []\n /** @type {boolean | undefined} */\n let consumed = true\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n\n /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects)\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n return context\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice)\n main()\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n addResult(initialize, 0)\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {line, column, offset, _index, _bufferIndex} = point\n return {\n line,\n column,\n offset,\n _index,\n _bufferIndex\n }\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n function main() {\n /** @type {number} */\n let chunkIndex\n while (point._index < chunks.length) {\n const chunk = chunks[point._index]\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n }\n\n // Expose the previous character.\n context.previous = code\n\n // Mark as consumed.\n consumed = true\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n let constructIndex\n /** @type {Construct} */\n let currentConstruct\n /** @type {Info} */\n let info\n return Array.isArray(constructs) /* c8 ignore next 1 */\n ? handleListOfConstructs(constructs)\n : 'tokenize' in constructs\n ? // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start\n\n /** @type {State} */\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n if (list.length === 0) {\n return bogusState\n }\n return handleConstruct(list[constructIndex])\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n // Always populated by defaults.\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true\n info.restore()\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n return bogusState\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n */\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n\n /**\n * Restore state.\n *\n * @returns {void}\n */\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n let view\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n if (startBufferIndex > -1) {\n const head = view[0]\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex)\n } else {\n view.shift()\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n const result = []\n /** @type {boolean | undefined} */\n let atTab\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n let value\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n case -4: {\n value = '\\n'\n break\n }\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n atTab = chunk === -2\n result.push(value)\n }\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n let previous\n return contentStart\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n if (previous) {\n previous.next = token\n }\n previous = token\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n}\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n const stack = []\n let continued = 0\n /** @type {TokenizeContext | undefined} */\n let childFlow\n /** @type {Token | undefined} */\n let childToken\n /** @type {number} */\n let lineStartOffset\n return start\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n }\n\n // Done.\n return checkNewContainers(code)\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n if (childFlow) {\n closeFlow()\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point | undefined} */\n let point\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n let index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n return checkNewContainers(code)\n }\n return start(code)\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n }\n\n // Check if there is a new container.\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState])\n // Try another.\n return documentContinued(code)\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow'))\n // Get ready for the next line.\n continued = 0\n self.interrupt = undefined\n return start\n }\n effects.consume(code)\n return flowContinue\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\n */\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream)\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset &&\n // …and either is not ended yet…\n (!childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean | undefined} */\n let seen\n /** @type {Point | undefined} */\n let point\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n seen = true\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n stack.length = size\n }\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n\n/** @type {Construct} */\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous\n return chunkStart\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return chunkInside(code)\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n }\n\n // Data.\n effects.consume(code)\n return chunkInside\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return chunkInside\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1]\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === null) {\n return true\n }\n const list = constructs[code]\n let index = -1\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index]\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n return false\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number | undefined} */\n let enter\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n enter = undefined\n }\n }\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean | undefined} */\n let tabs\n while (index--) {\n const chunk = chunks[index]\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n if (bufferIndex) break\n bufferIndex = -1\n }\n // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n eventIndex++\n }\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Alert.vue?vue&type=template&id=89056902&\"\nimport script from \"./Alert.vue?vue&type=script&lang=js&\"\nexport * from \"./Alert.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AlertCircleOutline.vue?vue&type=template&id=108cd4b2&\"\nimport script from \"./AlertCircleOutline.vue?vue&type=script&lang=js&\"\nexport * from \"./AlertCircleOutline.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertDecagram.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertDecagram.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AlertDecagram.vue?vue&type=template&id=137d8918&\"\nimport script from \"./AlertDecagram.vue?vue&type=script&lang=js&\"\nexport * from \"./AlertDecagram.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-decagram-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M13,17H11V15H13V17M13,13H11V7H13V13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7&\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowRight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowRight.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrowRight.vue?vue&type=template&id=2ee57bcf&\"\nimport script from \"./ArrowRight.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrowRight.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-right-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarBlank.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarBlank.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CalendarBlank.vue?vue&type=template&id=042fd602&\"\nimport script from \"./CalendarBlank.vue?vue&type=script&lang=js&\"\nexport * from \"./CalendarBlank.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon calendar-blank-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Check.vue?vue&type=template&id=2e48c8c6&\"\nimport script from \"./Check.vue?vue&type=script&lang=js&\"\nexport * from \"./Check.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon check-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxBlankOutline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxBlankOutline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CheckboxBlankOutline.vue?vue&type=template&id=fb5828cc&\"\nimport script from \"./CheckboxBlankOutline.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxBlankOutline.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon checkbox-blank-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxMarked.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxMarked.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CheckboxMarked.vue?vue&type=template&id=66a59ab7&\"\nimport script from \"./CheckboxMarked.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxMarked.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon checkbox-marked-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxMarkedCircle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckboxMarkedCircle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CheckboxMarkedCircle.vue?vue&type=template&id=b94c09be&\"\nimport script from \"./CheckboxMarkedCircle.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxMarkedCircle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon checkbox-marked-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronDown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronDown.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChevronDown.vue?vue&type=template&id=5a2dce2f&\"\nimport script from \"./ChevronDown.vue?vue&type=script&lang=js&\"\nexport * from \"./ChevronDown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-down-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronLeft.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronLeft.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChevronLeft.vue?vue&type=template&id=09d94b5a&\"\nimport script from \"./ChevronLeft.vue?vue&type=script&lang=js&\"\nexport * from \"./ChevronLeft.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronRight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronRight.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChevronRight.vue?vue&type=template&id=750bcc07&\"\nimport script from \"./ChevronRight.vue?vue&type=script&lang=js&\"\nexport * from \"./ChevronRight.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-right-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronUp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronUp.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChevronUp.vue?vue&type=template&id=431f415e&\"\nimport script from \"./ChevronUp.vue?vue&type=script&lang=js&\"\nexport * from \"./ChevronUp.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-up-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Close.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Close.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Close.vue?vue&type=template&id=75d4151a&\"\nimport script from \"./Close.vue?vue&type=script&lang=js&\"\nexport * from \"./Close.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon close-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Delete.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Delete.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Delete.vue?vue&type=template&id=458c7ecb&\"\nimport script from \"./Delete.vue?vue&type=script&lang=js&\"\nexport * from \"./Delete.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon delete-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./DotsHorizontal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./DotsHorizontal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DotsHorizontal.vue?vue&type=template&id=6950b9a6&\"\nimport script from \"./DotsHorizontal.vue?vue&type=script&lang=js&\"\nexport * from \"./DotsHorizontal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon dots-horizontal-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Eye.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Eye.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Eye.vue?vue&type=template&id=beccbcf6&\"\nimport script from \"./Eye.vue?vue&type=script&lang=js&\"\nexport * from \"./Eye.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon eye-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./EyeOff.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./EyeOff.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EyeOff.vue?vue&type=template&id=0fb59bd2&\"\nimport script from \"./EyeOff.vue?vue&type=script&lang=js&\"\nexport * from \"./EyeOff.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon eye-off-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./HelpCircle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./HelpCircle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelpCircle.vue?vue&type=template&id=4dac44fa&\"\nimport script from \"./HelpCircle.vue?vue&type=script&lang=js&\"\nexport * from \"./HelpCircle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon help-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LinkVariant.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LinkVariant.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LinkVariant.vue?vue&type=template&id=3834522c&\"\nimport script from \"./LinkVariant.vue?vue&type=script&lang=js&\"\nexport * from \"./LinkVariant.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon link-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Magnify.vue?vue&type=template&id=d480a606&\"\nimport script from \"./Magnify.vue?vue&type=script&lang=js&\"\nexport * from \"./Magnify.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon magnify-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Menu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Menu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Menu.vue?vue&type=template&id=b3763850&\"\nimport script from \"./Menu.vue?vue&type=script&lang=js&\"\nexport * from \"./Menu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon menu-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuOpen.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuOpen.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MenuOpen.vue?vue&type=template&id=179c83d7&\"\nimport script from \"./MenuOpen.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuOpen.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon menu-open-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MinusBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MinusBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MinusBox.vue?vue&type=template&id=d90829ce&\"\nimport script from \"./MinusBox.vue?vue&type=script&lang=js&\"\nexport * from \"./MinusBox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon minus-box-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Pause.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Pause.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Pause.vue?vue&type=template&id=713ddbb4&\"\nimport script from \"./Pause.vue?vue&type=script&lang=js&\"\nexport * from \"./Pause.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon pause-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M14,19H18V5H14M6,19H10V5H6V19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Pencil.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Pencil.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Pencil.vue?vue&type=template&id=b6f92b54&\"\nimport script from \"./Pencil.vue?vue&type=script&lang=js&\"\nexport * from \"./Pencil.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon pencil-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Play.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Play.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Play.vue?vue&type=template&id=40a96fba&\"\nimport script from \"./Play.vue?vue&type=script&lang=js&\"\nexport * from \"./Play.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M8,5.14V19.14L19,12.14L8,5.14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./RadioboxBlank.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./RadioboxBlank.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RadioboxBlank.vue?vue&type=template&id=0bb006bd&\"\nimport script from \"./RadioboxBlank.vue?vue&type=script&lang=js&\"\nexport * from \"./RadioboxBlank.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon radiobox-blank-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./RadioboxMarked.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./RadioboxMarked.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RadioboxMarked.vue?vue&type=template&id=3ebe8680&\"\nimport script from \"./RadioboxMarked.vue?vue&type=script&lang=js&\"\nexport * from \"./RadioboxMarked.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon radiobox-marked-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Star.vue?vue&type=template&id=22339b94&\"\nimport script from \"./Star.vue?vue&type=script&lang=js&\"\nexport * from \"./Star.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon star-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./StarOutline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./StarOutline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StarOutline.vue?vue&type=template&id=3a0ad9db&\"\nimport script from \"./StarOutline.vue?vue&type=script&lang=js&\"\nexport * from \"./StarOutline.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon star-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToggleSwitch.vue?vue&type=template&id=286211c1&\"\nimport script from \"./ToggleSwitch.vue?vue&type=script&lang=js&\"\nexport * from \"./ToggleSwitch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon toggle-switch-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ToggleSwitchOff.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ToggleSwitchOff.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToggleSwitchOff.vue?vue&type=template&id=134175c4&\"\nimport script from \"./ToggleSwitchOff.vue?vue&type=script&lang=js&\"\nexport * from \"./ToggleSwitchOff.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon toggle-switch-off-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Undo.vue?vue&type=template&id=bc8e3c2a&\"\nimport script from \"./Undo.vue?vue&type=script&lang=js&\"\nexport * from \"./Undo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./UndoVariant.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./UndoVariant.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UndoVariant.vue?vue&type=template&id=3b13fe6c&\"\nimport script from \"./UndoVariant.vue?vue&type=script&lang=js&\"\nexport * from \"./UndoVariant.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Web.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Web.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Web.vue?vue&type=template&id=175b4906&\"\nimport script from \"./Web.vue?vue&type=script&lang=js&\"\nexport * from \"./Web.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon web-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js&\"","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueMultiselect=e():t.VueMultiselect=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=89)}([function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(35),i=Function.prototype,o=i.call,s=r&&i.bind.bind(o,o);t.exports=r?s:function(t){return function(){return o.apply(t,arguments)}}},function(t,e,n){var r=n(59),i=r.all;t.exports=r.IS_HTMLDDA?function(t){return\"function\"==typeof t||t===i}:function(t){return\"function\"==typeof t}},function(t,e,n){var r=n(4),i=n(43).f,o=n(30),s=n(11),u=n(33),a=n(95),l=n(66);t.exports=function(t,e){var n,c,f,p,h,d=t.target,v=t.global,g=t.stat;if(n=v?r:g?r[d]||u(d,{}):(r[d]||{}).prototype)for(c in e){if(p=e[c],t.dontCallGetSet?(h=i(n,c),f=h&&h.value):f=n[c],!l(v?c:d+(g?\".\":\"#\")+c,t.forced)&&void 0!==f){if(typeof p==typeof f)continue;a(p,f)}(t.sham||f&&f.sham)&&o(p,\"sham\",!0),s(n,c,p,t)}}},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n(\"object\"==typeof globalThis&&globalThis)||n(\"object\"==typeof window&&window)||n(\"object\"==typeof self&&self)||n(\"object\"==typeof e&&e)||function(){return this}()||Function(\"return this\")()}).call(e,n(139))},function(t,e,n){var r=n(0);t.exports=!r(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(t,e,n){var r=n(8),i=String,o=TypeError;t.exports=function(t){if(r(t))return t;throw o(i(t)+\" is not an object\")}},function(t,e,n){var r=n(1),i=n(14),o=r({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return o(i(t),e)}},function(t,e,n){var r=n(2),i=n(59),o=i.all;t.exports=i.IS_HTMLDDA?function(t){return\"object\"==typeof t?null!==t:r(t)||t===o}:function(t){return\"object\"==typeof t?null!==t:r(t)}},function(t,e,n){var r=n(4),i=n(47),o=n(7),s=n(75),u=n(72),a=n(76),l=i(\"wks\"),c=r.Symbol,f=c&&c.for,p=a?c:c&&c.withoutSetter||s;t.exports=function(t){if(!o(l,t)||!u&&\"string\"!=typeof l[t]){var e=\"Symbol.\"+t;u&&o(c,t)?l[t]=c[t]:l[t]=a&&f?f(e):p(e)}return l[t]}},function(t,e,n){var r=n(123);t.exports=function(t){return r(t.length)}},function(t,e,n){var r=n(2),i=n(13),o=n(104),s=n(33);t.exports=function(t,e,n,u){u||(u={});var a=u.enumerable,l=void 0!==u.name?u.name:e;if(r(n)&&o(n,l,u),u.global)a?t[e]=n:s(e,n);else{try{u.unsafe?t[e]&&(a=!0):delete t[e]}catch(t){}a?t[e]=n:i.f(t,e,{value:n,enumerable:!1,configurable:!u.nonConfigurable,writable:!u.nonWritable})}return t}},function(t,e,n){var r=n(35),i=Function.prototype.call;t.exports=r?i.bind(i):function(){return i.apply(i,arguments)}},function(t,e,n){var r=n(5),i=n(62),o=n(77),s=n(6),u=n(50),a=TypeError,l=Object.defineProperty,c=Object.getOwnPropertyDescriptor;e.f=r?o?function(t,e,n){if(s(t),e=u(e),s(n),\"function\"==typeof t&&\"prototype\"===e&&\"value\"in n&&\"writable\"in n&&!n.writable){var r=c(t,e);r&&r.writable&&(t[e]=n.value,n={configurable:\"configurable\"in n?n.configurable:r.configurable,enumerable:\"enumerable\"in n?n.enumerable:r.enumerable,writable:!1})}return l(t,e,n)}:l:function(t,e,n){if(s(t),e=u(e),s(n),i)try{return l(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw a(\"Accessors not supported\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(24),i=Object;t.exports=function(t){return i(r(t))}},function(t,e,n){var r=n(1),i=r({}.toString),o=r(\"\".slice);t.exports=function(t){return o(i(t),8,-1)}},function(t,e,n){var r=n(0),i=n(9),o=n(23),s=i(\"species\");t.exports=function(t){return o>=51||!r(function(){var e=[],n=e.constructor={};return n[s]=function(){return{foo:1}},1!==e[t](Boolean).foo})}},function(t,e,n){var r=n(4),i=n(2),o=function(t){return i(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?o(r[t]):r[t]&&r[t][e]}},function(t,e,n){var r=n(15);t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},function(t,e,n){var r=n(39),i=n(24);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(29),i=String;t.exports=function(t){if(\"Symbol\"===r(t))throw TypeError(\"Cannot convert a Symbol value to a string\");return i(t)}},function(t,e,n){var r=n(100),i=n(1),o=n(39),s=n(14),u=n(10),a=n(28),l=i([].push),c=function(t){var e=1==t,n=2==t,i=3==t,c=4==t,f=6==t,p=7==t,h=5==t||f;return function(d,v,g,y){for(var b,m,x=s(d),_=o(x),O=r(v,g),w=u(_),S=0,E=y||a,L=e?E(d,w):n||p?E(d,0):void 0;w>S;S++)if((h||S in _)&&(b=_[S],m=O(b,S,x),t))if(e)L[S]=m;else if(m)switch(t){case 3:return!0;case 5:return b;case 6:return S;case 2:l(L,b)}else switch(t){case 4:return!1;case 7:l(L,b)}return f?-1:i||c?c:L}};t.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterReject:c(7)}},function(t,e){var n=TypeError;t.exports=function(t){if(t>9007199254740991)throw n(\"Maximum allowed index exceeded\");return t}},function(t,e,n){var r,i,o=n(4),s=n(97),u=o.process,a=o.Deno,l=u&&u.versions||a&&a.version,c=l&&l.v8;c&&(r=c.split(\".\"),i=r[0]>0&&r[0]<4?1:+(r[0]+r[1])),!i&&s&&(!(r=s.match(/Edge\\/(\\d+)/))||r[1]>=74)&&(r=s.match(/Chrome\\/(\\d+)/))&&(i=+r[1]),t.exports=i},function(t,e,n){var r=n(40),i=TypeError;t.exports=function(t){if(r(t))throw i(\"Can't call method on \"+t);return t}},function(t,e,n){var r=n(2),i=n(74),o=TypeError;t.exports=function(t){if(r(t))return t;throw o(i(t)+\" is not a function\")}},function(t,e,n){\"use strict\";var r=n(0);t.exports=function(t,e){var n=[][t];return!!n&&r(function(){n.call(null,e||function(){return 1},1)})}},function(t,e,n){\"use strict\";var r=n(5),i=n(18),o=TypeError,s=Object.getOwnPropertyDescriptor,u=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],\"length\",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=u?function(t,e){if(i(t)&&!s(t,\"length\").writable)throw o(\"Cannot set read only .length\");return t.length=e}:function(t,e){return t.length=e}},function(t,e,n){var r=n(94);t.exports=function(t,e){return new(r(t))(0===e?0:e)}},function(t,e,n){var r=n(51),i=n(2),o=n(15),s=n(9),u=s(\"toStringTag\"),a=Object,l=\"Arguments\"==o(function(){return arguments}()),c=function(t,e){try{return t[e]}catch(t){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=c(e=a(t),u))?n:l?o(e):\"Object\"==(r=o(e))&&i(e.callee)?\"Arguments\":r}},function(t,e,n){var r=n(5),i=n(13),o=n(31);t.exports=r?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){\"use strict\";var r=n(50),i=n(13),o=n(31);t.exports=function(t,e,n){var s=r(e);s in t?i.f(t,s,o(0,n)):t[s]=n}},function(t,e,n){var r=n(4),i=Object.defineProperty;t.exports=function(t,e){try{i(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},function(t,e){t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},function(t,e,n){var r=n(0);t.exports=!r(function(){var t=function(){}.bind();return\"function\"!=typeof t||t.hasOwnProperty(\"prototype\")})},function(t,e,n){var r=n(5),i=n(7),o=Function.prototype,s=r&&Object.getOwnPropertyDescriptor,u=i(o,\"name\"),a=u&&\"something\"===function(){}.name,l=u&&(!r||r&&s(o,\"name\").configurable);t.exports={EXISTS:u,PROPER:a,CONFIGURABLE:l}},function(t,e,n){var r=n(15),i=n(1);t.exports=function(t){if(\"Function\"===r(t))return i(t)}},function(t,e){t.exports={}},function(t,e,n){var r=n(1),i=n(0),o=n(15),s=Object,u=r(\"\".split);t.exports=i(function(){return!s(\"z\").propertyIsEnumerable(0)})?function(t){return\"String\"==o(t)?u(t,\"\"):s(t)}:s},function(t,e){t.exports=function(t){return null===t||void 0===t}},function(t,e,n){var r=n(17),i=n(2),o=n(44),s=n(76),u=Object;t.exports=s?function(t){return\"symbol\"==typeof t}:function(t){var e=r(\"Symbol\");return i(e)&&o(e.prototype,u(t))}},function(t,e,n){var r,i=n(6),o=n(107),s=n(34),u=n(38),a=n(101),l=n(60),c=n(70),f=c(\"IE_PROTO\"),p=function(){},h=function(t){return\"\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {HastNodes | null | undefined}\n * hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, null)\n const foot = footer(state)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n // To do: next major: always return root?\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {References} node\n * Reference node (image, link).\n * @returns {ElementContent | Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return {type: 'text', value: '![' + node.alt + suffix}\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract} MdastParents\n *\n * @typedef EmbeddedHastFields\n * hast fields.\n * @property {string | null | undefined} [hName]\n * Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n * Generate an element with these properties instead.\n * @property {Array | null | undefined} [hChildren]\n * Generate an element with this content instead.\n *\n * @typedef {Record & EmbeddedHastFields} MdastData\n * mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n * mdast node with embedded hast data.\n *\n * @typedef PointLike\n * Point-like value.\n * @property {number | null | undefined} [line]\n * Line.\n * @property {number | null | undefined} [column]\n * Column.\n * @property {number | null | undefined} [offset]\n * Offset.\n *\n * @typedef PositionLike\n * Position-like value.\n * @property {PointLike | null | undefined} [start]\n * Point-like value.\n * @property {PointLike | null | undefined} [end]\n * Point-like value.\n *\n * @callback Handler\n * Handle a node.\n * @param {State} state\n * Info passed around.\n * @param {any} node\n * mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n * Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n * hast node.\n *\n * @callback HFunctionProps\n * Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {HastProperties} props\n * Properties.\n * @param {Array | null | undefined} [children]\n * hast content.\n * @returns {HastElement}\n * Compiled element.\n *\n * @callback HFunctionNoProps\n * Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {Array | null | undefined} [children]\n * hast content.\n * @returns {HastElement}\n * Compiled element.\n *\n * @typedef HFields\n * Info on `state`.\n * @property {boolean} dangerous\n * Whether HTML is allowed.\n * @property {string} clobberPrefix\n * Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n * Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n * HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n * Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n * Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n * Definition cache.\n * @property {Record} footnoteById\n * Footnote definitions by their identifier.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Record} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {Handler} unknownHandler\n * Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n * Copy a node’s positional info.\n * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one\n * Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n * Like `state` but lower-level and usable on non-elements.\n * Deprecated: use `patch` and `applyData`.\n * @property {Array} passThrough\n * List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n * Prefix to use before the `id` attribute on footnotes to prevent it from\n * *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n * Label to use from backreferences back to their footnote call (affects\n * screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (note that `id: 'footnote-label'`\n * is always added as footnote calls use it with `aria-describedby` to\n * provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes.\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n * Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n * Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || {}\n const dangerous = settings.allowDangerousHtml || false\n /** @type {Record} */\n const footnoteById = {}\n\n // To do: next major: add `options` to state, remove:\n // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n // `unknownHandler`.\n\n // To do: next major: move to `state.options.allowDangerousHtml`.\n state.dangerous = dangerous\n // To do: next major: move to `state.options`.\n state.clobberPrefix =\n settings.clobberPrefix === undefined || settings.clobberPrefix === null\n ? 'user-content-'\n : settings.clobberPrefix\n // To do: next major: move to `state.options`.\n state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n // To do: next major: move to `state.options`.\n state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n // To do: next major: move to `state.options`.\n state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n className: ['sr-only']\n }\n // To do: next major: move to `state.options`.\n state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n // To do: next major: move to `state.options`.\n state.unknownHandler = settings.unknownHandler\n // To do: next major: move to `state.options`.\n state.passThrough = settings.passThrough\n\n state.handlers = {...handlers, ...settings.handlers}\n\n // To do: next major: replace utility with `definitionById` object, so we\n // only walk once (as we need footnotes too).\n state.definition = definitions(tree)\n state.footnoteById = footnoteById\n /** @type {Array} */\n state.footnoteOrder = []\n /** @type {Record} */\n state.footnoteCounts = {}\n\n state.patch = patch\n state.applyData = applyData\n state.one = oneBound\n state.all = allBound\n state.wrap = wrap\n // To do: next major: remove `augment`.\n state.augment = augment\n\n visit(tree, 'footnoteDefinition', (definition) => {\n const id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n })\n\n // @ts-expect-error Hush, it’s fine!\n return state\n\n /**\n * Finalise the created `right`, a hast node, from `left`, an mdast node.\n *\n * @param {MdastNodeWithData | PositionLike | null | undefined} left\n * @param {HastElementContent} right\n * @returns {HastElementContent}\n */\n /* c8 ignore start */\n // To do: next major: remove.\n function augment(left, right) {\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && 'data' in left && left.data) {\n /** @type {MdastData} */\n const data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = {...right.properties, ...data.hProperties}\n }\n\n if ('children' in right && right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n if (left) {\n const ctx = 'type' in left ? left : {position: left}\n\n if (!generated(ctx)) {\n // @ts-expect-error: fine.\n right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n }\n }\n\n return right\n }\n /* c8 ignore stop */\n\n /**\n * Create an element for `node`.\n *\n * @type {HFunctionProps}\n */\n /* c8 ignore start */\n // To do: next major: remove.\n function state(node, tagName, props, children) {\n if (Array.isArray(props)) {\n children = props\n props = {}\n }\n\n // @ts-expect-error augmenting an element yields an element.\n return augment(node, {\n type: 'element',\n tagName,\n properties: props || {},\n children: children || []\n })\n }\n /* c8 ignore stop */\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | null | undefined} [parent]\n * Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n * Resulting hast node.\n */\n function oneBound(node, parent) {\n // @ts-expect-error: that’s a state :)\n return one(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function allBound(parent) {\n // @ts-expect-error: that’s a state :)\n return all(state, parent)\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {void}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {Type | HastElement}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {Type | HastElement} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent is likely to keep the content around (otherwise: pass\n // `hChildren`).\n else {\n result = {\n type: 'element',\n tagName: hName,\n properties: {},\n children: []\n }\n\n // To do: next major: take the children from the `root`, or inject the\n // raw/text/comment or so into the element?\n // if ('children' in node) {\n // // @ts-expect-error: assume `children` are allowed in elements.\n // result.children = node.children\n // } else {\n // // @ts-expect-error: assume `node` is allowed in elements.\n // result.children.push(node)\n // }\n }\n }\n\n if (result.type === 'element' && hProperties) {\n result.properties = {...result.properties, ...hProperties}\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n // @ts-expect-error: assume valid children are defined.\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | null | undefined} [parent]\n * Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n * Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n const type = node && node.type\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(state.handlers, type)) {\n return state.handlers[type](state, node, parent)\n }\n\n if (state.passThrough && state.passThrough.includes(type)) {\n // To do: next major: deep clone.\n // @ts-expect-error: types of passed through nodes are expected to be added manually.\n return 'children' in node ? {...node, children: all(state, node)} : node\n }\n\n if (state.unknownHandler) {\n return state.unknownHandler(state, node, parent)\n }\n\n return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = one(state, nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastText | HastElement}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastText | HastElement} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: all(state, node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n * Whether to add line endings at start and end.\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code)\n ? factorySpace(effects, after, 'linePrefix')(code)\n : after(code)\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownSpace} from 'micromark-util-character'\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n return ok(code)\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n effects.exit(type)\n return ok(code)\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nexport const unicodePunctuationRegex =\n /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/)\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {Array} */\n let parameters\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n remove = remove > 0 ? remove : 0\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove)\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {Array} items\n * Items to add to `list`.\n * @returns {Array}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record} */\n const left = maybe || (all[hook] = {})\n /** @type {Record | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array} existing\n * @param {Array} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return (\n value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ')\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\nimport {splice} from 'micromark-util-chunked'\n/**\n * Tokenize subcontent.\n *\n * @param {Array} events\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n let event\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number} */\n let otherIndex\n /** @type {Event} */\n let otherEvent\n /** @type {Array} */\n let parameters\n /** @type {Array} */\n let subevents\n /** @type {boolean | undefined} */\n let more\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n event = events[index]\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array} events\n * @param {number} eventIndex\n * @returns {Record}\n */\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {Array} */\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {Array<[number, number]>} */\n const jumps = []\n /** @type {Record} */\n const gaps = {}\n /** @type {Array} */\n let stream\n /** @type {Token | undefined} */\n let previous\n let index = -1\n /** @type {Token | undefined} */\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start]\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition)\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n if (!current.next) {\n stream.push(null)\n }\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n tokenizer.write(stream)\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n }\n\n // Unravel the next token.\n previous = current\n current = current.next\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start)\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n }\n\n // Help GC.\n tokenizer.events = []\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n index = -1\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('thematicBreak')\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code\n return atBreak(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit('thematicBreak')\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n effects.exit('thematicBreakSequence')\n return markdownSpace(code)\n ? factorySpace(effects, atBreak, 'whitespace')(code)\n : atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/** @type {Construct} */\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n return nok(code)\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n return nok(code)\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this\n return contStart\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n contBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return contBefore(code)\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code)\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * \n * b>\n * \n * \n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (``).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | \n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return enclosedBefore\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return raw(code)\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return enclosed(code)\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return enclosedBefore(code)\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? enclosedEscape : enclosed\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return enclosed\n }\n return enclosed(code)\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (\n !balance &&\n (code === null || code === 41 || markdownLineEndingOrSpace(code))\n ) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n if (balance < limit && code === 40) {\n effects.consume(code)\n balance++\n return raw\n }\n if (code === 41) {\n effects.consume(code)\n balance--\n return raw\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? rawEscape : raw\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return raw\n }\n return raw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n let seen\n return start\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (\n size > 999 ||\n code === null ||\n code === 91 ||\n (code === 93 && !seen) ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return labelInside(code)\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n if (!seen) seen = !markdownSpace(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return begin\n }\n return nok(code)\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n return atBreak(code)\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return begin(marker)\n }\n if (code === null) {\n return nok(code)\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atBreak, 'linePrefix')\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return inside(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n return code === 92 ? escape : inside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return inside\n }\n return inside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n\n/** @type {Construct} */\nconst titleBefore = {\n tokenize: tokenizeTitleBefore,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n let identifier\n return start\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter('definition')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n return markerAfter\n }\n return nok(code)\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, destinationBefore)(code)\n : destinationBefore(code)\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(\n effects,\n destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )(code)\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code)\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code)\n ? factorySpace(effects, afterWhitespace, 'whitespace')(code)\n : afterWhitespace(code)\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier)\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, beforeMarker)(code)\n : nok(code)\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(\n effects,\n titleAfter,\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code)\n ? factorySpace(effects, titleAfterOptionalWhitespace, 'whitespace')(code)\n : titleAfterOptionalWhitespace(code)\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst furtherStart = {\n tokenize: tokenizeFurtherStart,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter('codeIndented')\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? atBreak(code)\n : nok(code)\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code)\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return inside(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return atBreak(code)\n }\n effects.consume(code)\n return inside\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit('codeIndented')\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this\n return furtherStart\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return furtherStart\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? furtherStart(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n let content\n /** @type {Token} */\n let text\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n }\n\n // Suffix whitespace, part of the closing.\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter('atxHeading')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('atxHeadingSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return sequenceOpen\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n return nok(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequenceFurther(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code)\n return sequenceFurther\n }\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return atBreak(code)\n }\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length\n /** @type {number | undefined} */\n let content\n /** @type {number | undefined} */\n let text\n /** @type {number | undefined} */\n let definition\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n }\n // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n\n // Change the paragraph to setext heading text.\n events[text][1].type = 'setextHeadingText'\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context])\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length\n /** @type {boolean | undefined} */\n let paragraph\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n marker = code\n return before(code)\n }\n return nok(code)\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('setextHeadingLineSequence')\n return inside(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n effects.exit('setextHeadingLineSequence')\n return markdownSpace(code)\n ? factorySpace(effects, after, 'lineSuffix')(code)\n : after(code)\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * .\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n\n/** @type {Construct} */\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n\n/** @type {Construct} */\nconst blankLineBefore = {\n tokenize: tokenizeBlankLineBefore,\n partial: true\n}\nconst nonLazyContinuationStart = {\n tokenize: tokenizeNonLazyContinuationStart,\n partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start\n // Remove the line prefix.\n events.splice(index - 2, 2)\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n let marker\n /** @type {boolean} */\n let closingTag\n /** @type {string} */\n let buffer\n /** @type {number} */\n let index\n /** @type {Code} */\n let markerB\n return start\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n closingTag = true\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n marker = 3\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n marker = 2\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n marker = 5\n index = 0\n return cdataOpenInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n marker = 4\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After ` | &<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | \n * ^^\n * > | \n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n const slash = code === 47\n const name = buffer.toLowerCase()\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6\n if (slash) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n marker = 7\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : closingTag\n ? completeClosingTagAfter(code)\n : completeAttributeNameBefore(code)\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > |
\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n return completeEnd(code)\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n return completeEnd(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n return completeAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n return completeAttributeNameBefore(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n markerB = code\n return completeAttributeValueQuoted\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n return completeAttributeValueUnquoted(code)\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code)\n markerB = null\n return completeAttributeValueQuotedAfter\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 47 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n if (code === 60 && marker === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n if (code === 62 && marker === 4) {\n effects.consume(code)\n return continuationClose\n }\n if (code === 63 && marker === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n if (code === 93 && marker === 5) {\n effects.consume(code)\n return continuationCdataInside\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit('htmlFlowData')\n return effects.check(\n blankLineBefore,\n continuationAfter,\n continuationStart\n )(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationStart(code)\n }\n effects.consume(code)\n return continuation\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(\n nonLazyContinuationStart,\n continuationStartNonLazy,\n continuationAfter\n )(code)\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return continuationBefore\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | \n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code)\n }\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit | undefined} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n const columnStart = {}\n /** @type {Array} */\n const resolveAllConstructs = []\n /** @type {Array} */\n let chunks = []\n /** @type {Array} */\n let stack = []\n /** @type {boolean | undefined} */\n let consumed = true\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n\n /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects)\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n return context\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice)\n main()\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n addResult(initialize, 0)\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {line, column, offset, _index, _bufferIndex} = point\n return {\n line,\n column,\n offset,\n _index,\n _bufferIndex\n }\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n function main() {\n /** @type {number} */\n let chunkIndex\n while (point._index < chunks.length) {\n const chunk = chunks[point._index]\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n }\n\n // Expose the previous character.\n context.previous = code\n\n // Mark as consumed.\n consumed = true\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n let constructIndex\n /** @type {Construct} */\n let currentConstruct\n /** @type {Info} */\n let info\n return Array.isArray(constructs) /* c8 ignore next 1 */\n ? handleListOfConstructs(constructs)\n : 'tokenize' in constructs\n ? // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start\n\n /** @type {State} */\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n if (list.length === 0) {\n return bogusState\n }\n return handleConstruct(list[constructIndex])\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n // Always populated by defaults.\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true\n info.restore()\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n return bogusState\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n */\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n\n /**\n * Restore state.\n *\n * @returns {void}\n */\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n let view\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n if (startBufferIndex > -1) {\n const head = view[0]\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex)\n } else {\n view.shift()\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n const result = []\n /** @type {boolean | undefined} */\n let atTab\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n let value\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n case -4: {\n value = '\\n'\n break\n }\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n atTab = chunk === -2\n result.push(value)\n }\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n let previous\n return contentStart\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n if (previous) {\n previous.next = token\n }\n previous = token\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n}\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n const stack = []\n let continued = 0\n /** @type {TokenizeContext | undefined} */\n let childFlow\n /** @type {Token | undefined} */\n let childToken\n /** @type {number} */\n let lineStartOffset\n return start\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n }\n\n // Done.\n return checkNewContainers(code)\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n if (childFlow) {\n closeFlow()\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point | undefined} */\n let point\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n let index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n return checkNewContainers(code)\n }\n return start(code)\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n }\n\n // Check if there is a new container.\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState])\n // Try another.\n return documentContinued(code)\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow'))\n // Get ready for the next line.\n continued = 0\n self.interrupt = undefined\n return start\n }\n effects.consume(code)\n return flowContinue\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\n */\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream)\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset &&\n // …and either is not ended yet…\n (!childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean | undefined} */\n let seen\n /** @type {Point | undefined} */\n let point\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n seen = true\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n stack.length = size\n }\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n\n/** @type {Construct} */\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous\n return chunkStart\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return chunkInside(code)\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n }\n\n // Data.\n effects.consume(code)\n return chunkInside\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return chunkInside\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1]\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === null) {\n return true\n }\n const list = constructs[code]\n let index = -1\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index]\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n return false\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number | undefined} */\n let enter\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n enter = undefined\n }\n }\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean | undefined} */\n let tabs\n while (index--) {\n const chunk = chunks[index]\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n if (bufferIndex) break\n bufferIndex = -1\n }\n // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n eventIndex++\n }\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `
` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePreview.vue?vue&type=template&id=5b09ec60&scoped=true&\"\nimport script from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b09ec60\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"template-picker__item\"},[_c('input',{staticClass:\"radio\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"template-picker\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onCheck}}),_vm._v(\" \"),_c('label',{staticClass:\"template-picker__label\",attrs:{\"for\":_vm.id}},[_c('div',{staticClass:\"template-picker__preview\",class:_vm.failedPreview ? 'template-picker__preview--failed' : ''},[_c('img',{staticClass:\"template-picker__image\",attrs:{\"src\":_vm.realPreviewUrl,\"alt\":\"\",\"draggable\":\"false\"},on:{\"error\":_vm.onFailure}})]),_vm._v(\" \"),_c('span',{staticClass:\"template-picker__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.nameWithoutExt)+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nexport const getTemplates = async function() {\n\tconst response = await axios.get(generateOcsUrl('apps/files/api/v1/templates'))\n\treturn response.data.ocs.data\n}\n\n/**\n * Create a new file from a specified template\n *\n * @param {string} filePath The new file destination path\n * @param {string} templatePath The template source path\n * @param {string} templateType The template type e.g 'user'\n */\nexport const createFromTemplate = async function(filePath, templatePath, templateType) {\n\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/create'), {\n\t\tfilePath,\n\t\ttemplatePath,\n\t\ttemplateType,\n\t})\n\treturn response.data.ocs.data\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePicker.vue?vue&type=template&id=d46f1dc6&scoped=true&\"\nimport script from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d46f1dc6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.opened)?_c('NcModal',{staticClass:\"templates-picker\",attrs:{\"clear-view-delay\":-1,\"size\":\"large\"},on:{\"close\":_vm.close}},[_c('form',{staticClass:\"templates-picker__form\",style:(_vm.style),on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onSubmit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Pick a template for {name}', { name: _vm.nameWithoutExt })))]),_vm._v(\" \"),_c('ul',{staticClass:\"templates-picker__list\"},[_c('TemplatePreview',_vm._b({attrs:{\"checked\":_vm.checked === _vm.emptyTemplate.fileid},on:{\"check\":_vm.onCheck}},'TemplatePreview',_vm.emptyTemplate,false)),_vm._v(\" \"),_vm._l((_vm.provider.templates),function(template){return _c('TemplatePreview',_vm._b({key:template.fileid,attrs:{\"checked\":_vm.checked === template.fileid,\"ratio\":_vm.provider.ratio},on:{\"check\":_vm.onCheck}},'TemplatePreview',template,false))})],2),_vm._v(\" \"),_c('div',{staticClass:\"templates-picker__buttons\"},[_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('files', 'Create a new file with the selected template')},domProps:{\"value\":_vm.t('files', 'Create')}})])]),_vm._v(\" \"),(_vm.loading)?_c('NcEmptyContent',{staticClass:\"templates-picker__loading\",attrs:{\"icon\":\"icon-loading\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files', 'Creating file'))+\"\\n\\t\")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentDirectory } from './utils/davUtils.js'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\n\nimport TemplatePickerView from './views/TemplatePicker.vue'\nimport { showError } from '@nextcloud/dialogs'\n\n// Set up logger\nconst logger = getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\n// Create document root\nconst TemplatePickerRoot = document.createElement('div')\nTemplatePickerRoot.id = 'template-picker'\ndocument.body.appendChild(TemplatePickerRoot)\n\n// Retrieve and init templates\nlet templates = loadState('files', 'templates', [])\nlet templatesPath = loadState('files', 'templates_path', false)\nlogger.debug('Templates providers', templates)\nlogger.debug('Templates folder', { templatesPath })\n\n// Init vue app\nconst View = Vue.extend(TemplatePickerView)\nconst TemplatePicker = new View({\n\tname: 'TemplatePicker',\n\tpropsData: {\n\t\tlogger,\n\t},\n})\nTemplatePicker.$mount('#template-picker')\n\n// Init template engine after load to make sure it's the last injected entry\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (!templatesPath) {\n\t\tlogger.debug('Templates folder not initialized')\n\t\tconst initTemplatesPlugin = {\n\t\t\tattach(menu) {\n\t\t\t\t// register the new menu entry\n\t\t\t\tmenu.addMenuEntry({\n\t\t\t\t\tid: 'template-init',\n\t\t\t\t\tdisplayName: t('files', 'Set up templates folder'),\n\t\t\t\t\ttemplateName: t('files', 'Templates'),\n\t\t\t\t\ticonClass: 'icon-template-add',\n\t\t\t\t\tfileType: 'file',\n\t\t\t\t\tactionLabel: t('files', 'Create new templates folder'),\n\t\t\t\t\tactionHandler(name) {\n\t\t\t\t\t\tinitTemplatesFolder(name)\n\t\t\t\t\t\tmenu.removeMenuEntry('template-init')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t\tOC.Plugins.register('OCA.Files.NewFileMenu', initTemplatesPlugin)\n\t}\n})\n\n// Init template files menu\ntemplates.forEach((provider, index) => {\n\tconst newTemplatePlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: `template-new-${provider.app}-${index}`,\n\t\t\t\tdisplayName: provider.label,\n\t\t\t\ttemplateName: provider.label + provider.extension,\n\t\t\t\ticonClass: provider.iconClass || 'icon-file',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionLabel: provider.actionLabel,\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tTemplatePicker.open(name, provider)\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newTemplatePlugin)\n})\n\n/**\n * Init the template directory\n *\n * @param {string} name the templates folder name\n */\nconst initTemplatesFolder = async function(name) {\n\tconst templatePath = (getCurrentDirectory() + `/${name}`).replace('//', '/')\n\ttry {\n\t\tlogger.debug('Initializing the templates directory', { templatePath })\n\t\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n\t\t\ttemplatePath,\n\t\t\tcopySystemTemplates: true,\n\t\t})\n\n\t\t// Go to template directory\n\t\tOCA.Files.App.currentFileList.changeDirectory(templatePath, true, true)\n\n\t\ttemplates = response.data.ocs.data.templates\n\t\ttemplatesPath = response.data.ocs.data.template_path\n\t} catch (error) {\n\t\tlogger.error('Unable to initialize the templates directory')\n\t\tshowError(t('files', 'Unable to initialize the templates directory'))\n\t}\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\n(function() {\n\n\tconst FilesPlugin = {\n\t\tattach(fileList) {\n\t\t\tsubscribe('nextcloud:unified-search.search', ({ query }) => {\n\t\t\t\tfileList.setFilter(query)\n\t\t\t})\n\t\t\tsubscribe('nextcloud:unified-search.reset', () => {\n\t\t\t\tthis.query = null\n\t\t\t\tfileList.setFilter('')\n\t\t\t})\n\n\t\t},\n\t}\n\n\twindow.OC.Plugins.register('OCA.Files.FileList', FilesPlugin)\n\n})()\n","import { getCanonicalLocale } from '@nextcloud/l10n';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { join, basename, extname, dirname } from 'path';\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst humanList = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\nconst humanListBinary = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];\n/**\n * Format a file size in a human-like format. e.g. 42GB\n *\n * @param size in bytes\n * @param skipSmallSizes avoid rendering tiny sizes and return '< 1 KB' instead\n */\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false) {\n if (typeof size === 'string') {\n size = Number(size);\n }\n /*\n * @note This block previously used Log base 1024, per IEC 80000-13;\n * however, the wrong prefix was used. Now we use decimal calculation\n * with base 1000 per the SI. Base 1024 calculation with binary\n * prefixes is optional, but has yet to be added to the UI.\n */\n // Calculate Log with base 1024 or 1000: size = base ** order\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(binaryPrefixes ? 1024 : 1000)) : 0;\n // Stay in range of the byte sizes that are defined\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(binaryPrefixes ? 1024 : 1000, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== '0.0' ? '< 1 ' : '0 ') + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n }\n else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + ' ' + readableFormat;\n}\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst getLogger = user => {\n if (user === null) {\n return getLoggerBuilder()\n .setApp('files')\n .build();\n }\n return getLoggerBuilder()\n .setApp('files')\n .setUid(user.uid)\n .build();\n};\nvar logger = getLogger(getCurrentUser());\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === 'string'\n ? this.getEntryIndex(entry)\n : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn('Entry not found, nothing removed', { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\n getEntries(context) {\n if (context) {\n return this._entries\n .filter(entry => typeof entry.if === 'function' ? entry.if(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex(entry => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass)) {\n throw new Error('Invalid entry');\n }\n if (typeof entry.id !== 'string'\n || typeof entry.displayName !== 'string') {\n throw new Error('Invalid id or displayName property');\n }\n if ((entry.iconClass && typeof entry.iconClass !== 'string')\n || (entry.iconSvgInline && typeof entry.iconSvgInline !== 'string')) {\n throw new Error('Invalid icon provided');\n }\n if (entry.if !== undefined && typeof entry.if !== 'function') {\n throw new Error('Invalid if property');\n }\n if (entry.templateName && typeof entry.templateName !== 'string') {\n throw new Error('Invalid templateName property');\n }\n if (entry.handler && typeof entry.handler !== 'function') {\n throw new Error('Invalid handler property');\n }\n if (!entry.templateName && !entry.handler) {\n throw new Error('At least a templateName or a handler must be provided');\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error('Duplicate entry');\n }\n }\n}\nconst getNewFileMenu = function () {\n if (typeof window._nc_newfilemenu === 'undefined') {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug('NewFileMenu initialized');\n }\n return window._nc_newfilemenu;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar FileType;\n(function (FileType) {\n FileType[\"Folder\"] = \"folder\";\n FileType[\"File\"] = \"file\";\n})(FileType || (FileType = {}));\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Permission;\n(function (Permission) {\n Permission[Permission[\"NONE\"] = 0] = \"NONE\";\n Permission[Permission[\"CREATE\"] = 4] = \"CREATE\";\n Permission[Permission[\"READ\"] = 1] = \"READ\";\n Permission[Permission[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission[Permission[\"DELETE\"] = 8] = \"DELETE\";\n Permission[Permission[\"SHARE\"] = 16] = \"SHARE\";\n Permission[Permission[\"ALL\"] = 31] = \"ALL\";\n})(Permission || (Permission = {}));\n/**\n * Parse the webdav permission string to a permission enum\n * @see https://github.com/nextcloud/server/blob/71f698649f578db19a22457cb9d420fb62c10382/lib/public/Files/DavUtil.php#L58-L88\n */\nconst parseWebdavPermissions = function (permString = '') {\n let permissions = Permission.NONE;\n if (!permString)\n return permissions;\n if (permString.includes('C') || permString.includes('K'))\n permissions |= Permission.CREATE;\n if (permString.includes('G'))\n permissions |= Permission.READ;\n if (permString.includes('W') || permString.includes('N') || permString.includes('V'))\n permissions |= Permission.UPDATE;\n if (permString.includes('D'))\n permissions |= Permission.DELETE;\n if (permString.includes('R'))\n permissions |= Permission.SHARE;\n return permissions;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst isDavRessource = function (source, davService) {\n return source.match(davService) !== null;\n};\n/**\n * Validate Node construct data\n */\nconst validateData = (data, davService) => {\n if ('id' in data && (typeof data.id !== 'number' || data.id < 0)) {\n throw new Error('Invalid id type of value');\n }\n if (!data.source) {\n throw new Error('Missing mandatory source');\n }\n try {\n new URL(data.source);\n }\n catch (e) {\n throw new Error('Invalid source format, source must be a valid URL');\n }\n if (!data.source.startsWith('http')) {\n throw new Error('Invalid source format, only http(s) is supported');\n }\n if ('mtime' in data && !(data.mtime instanceof Date)) {\n throw new Error('Invalid mtime type');\n }\n if ('crtime' in data && !(data.crtime instanceof Date)) {\n throw new Error('Invalid crtime type');\n }\n if (!data.mime || typeof data.mime !== 'string'\n || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error('Missing or invalid mandatory mime');\n }\n if ('size' in data && typeof data.size !== 'number') {\n throw new Error('Invalid size type');\n }\n if ('permissions' in data && !(typeof data.permissions === 'number'\n && data.permissions >= Permission.NONE\n && data.permissions <= Permission.ALL)) {\n throw new Error('Invalid permissions');\n }\n if ('owner' in data\n && data.owner !== null\n && typeof data.owner !== 'string') {\n throw new Error('Invalid owner type');\n }\n if ('attributes' in data && typeof data.attributes !== 'object') {\n throw new Error('Invalid attributes format');\n }\n if ('root' in data && typeof data.root !== 'string') {\n throw new Error('Invalid root format');\n }\n if (data.root && !data.root.startsWith('/')) {\n throw new Error('Root must start with a leading slash');\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error('Root must be part of the source');\n }\n if (data.root && isDavRessource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error('The root must be relative to the service. e.g /files/emma');\n }\n }\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(data, davService) {\n // Validate data\n validateData(data, davService || this._knownDavService);\n this._data = data;\n const handler = {\n set: (target, prop, value) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.deleteProperty(target, prop);\n },\n };\n // Proxy the attributes to update the mtime on change\n this._attributes = new Proxy(data.attributes || {}, handler);\n delete this._data.attributes;\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n */\n get source() {\n // strip any ending slash\n return this._data.source.replace(/\\/$/i, '');\n }\n /**\n * Get this object name\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return dirname(this.source.slice(firstMatch + this.root.length) || '/');\n }\n // This should always be a valid URL\n // as this is tested in the constructor\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n // If this is not a dav ressource, we can only read it\n if (this.owner === null && !this.isDavRessource) {\n return Permission.READ;\n }\n // If the permissions are not defined, we have none\n return this._data.permissions !== undefined\n ? this._data.permissions\n : Permission.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n // Remote ressources have no owner\n if (!this.isDavRessource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return isDavRessource(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n // If provided (recommended), use the root and strip away the ending slash\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, '$1');\n }\n // Use the source to get the root from the dav service\n if (this.isDavRessource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return this.source.slice(firstMatch + this.root.length) || '/';\n }\n return (this.dirname + '/' + this.basename).replace(/\\/\\//g, '/');\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n this._data.source = destination;\n this._data.mtime = new Date();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n */\n rename(basename) {\n if (basename.includes('/')) {\n throw new Error('Invalid basename');\n }\n this.move(dirname(this.source) + '/' + basename);\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Folder extends Node {\n constructor(data) {\n // enforcing mimes\n super({\n ...data,\n mime: 'httpd/unix-directory'\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return 'httpd/unix-directory';\n }\n}\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nconst registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function () {\n return window._nc_fileactions || [];\n};\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n/**\n * Add a new menu entry to the upload manager menu\n */\nconst addNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\n/**\n * Remove a previously registered entry from the upload menu\n */\nconst removeNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\n/**\n * Get the list of registered entries from the upload menu\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\nconst getNewFileMenuEntries = function (context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context);\n};\n\nexport { File, FileAction, FileType, Folder, Node, Permission, addNewFileMenuEntry, formatFileSize, getFileActions, getNewFileMenuEntries, parseWebdavPermissions, registerFileAction, removeNewFileMenuEntry };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport logger from '../logger';\nexport var DefaultType;\n(function (DefaultType) {\n DefaultType[\"DEFAULT\"] = \"default\";\n DefaultType[\"HIDDEN\"] = \"hidden\";\n})(DefaultType || (DefaultType = {}));\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { Permission, Node } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport TrashCanSvg from '@mdi/svg/svg/trash-can.svg?raw';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nimport logger from '../logger.js';\nexport const action = new FileAction({\n id: 'delete',\n displayName(nodes, view) {\n return view.id === 'trashbin'\n ? t('files_trashbin', 'Delete permanently')\n : t('files', 'Delete');\n },\n iconSvgInline: () => TrashCanSvg,\n enabled(nodes) {\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.DELETE) !== 0);\n },\n async exec(node) {\n try {\n await axios.delete(node.source);\n // Let's delete even if it's moved to the trashbin\n // since it has been removed from the current view\n // and changing the view will trigger a reload anyway.\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n logger.error('Error while deleting a file', { error, source: node.source, node });\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 100,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, Node, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport ArrowDownSvg from '@mdi/svg/svg/arrow-down.svg?raw';\nimport { registerFileAction, FileAction, DefaultType } from '../services/FileAction';\nimport { generateUrl } from '@nextcloud/router';\nconst triggerDownload = function (url) {\n const hiddenElement = document.createElement('a');\n hiddenElement.download = '';\n hiddenElement.href = url;\n hiddenElement.click();\n};\nconst downloadNodes = function (dir, nodes) {\n const secret = Math.random().toString(36).substring(2);\n const url = generateUrl('/apps/files/ajax/download.php?dir={dir}&files={files}&downloadStartSecret={secret}', {\n dir,\n secret,\n files: JSON.stringify(nodes.map(node => node.basename)),\n });\n triggerDownload(url);\n};\nexport const action = new FileAction({\n id: 'download',\n displayName: () => t('files', 'Download'),\n iconSvgInline: () => ArrowDownSvg,\n enabled(nodes) {\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.READ) !== 0);\n },\n async exec(node, view, dir) {\n if (node.type === FileType.Folder) {\n downloadNodes(dir, [node]);\n return null;\n }\n triggerDownload(node.source);\n return null;\n },\n async execBatch(nodes, view, dir) {\n if (nodes.length === 1) {\n this.exec(nodes[0], view, dir);\n return [null];\n }\n downloadNodes(dir, nodes);\n return new Array(nodes.length).fill(null);\n },\n order: 30,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { encodePath } from '@nextcloud/paths';\nimport { Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport LaptopSvg from '@mdi/svg/svg/laptop.svg?raw';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { registerFileAction, FileAction, DefaultType } from '../services/FileAction';\nimport { showError } from '@nextcloud/dialogs';\nconst openLocalClient = async function (path) {\n const link = generateOcsUrl('apps/files/api/v1') + '/openlocaleditor?format=json';\n try {\n const result = await axios.post(link, { path });\n const uid = getCurrentUser()?.uid;\n let url = `nc://open/${uid}@` + window.location.host + encodePath(path);\n url += '?token=' + result.data.ocs.data.token;\n window.location.href = url;\n }\n catch (error) {\n showError(t('files', 'Failed to redirect to client'));\n }\n};\nexport const action = new FileAction({\n id: 'edit-locally',\n displayName: () => t('files', 'Edit locally'),\n iconSvgInline: () => LaptopSvg,\n // Only works on single files\n enabled(nodes) {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n return (nodes[0].permissions & Permission.UPDATE) !== 0;\n },\n async exec(node) {\n openLocalClient(node.path);\n return null;\n },\n order: 25,\n});\nif (!/Android|iPhone|iPad|iPod/i.test(navigator.userAgent)) {\n registerFileAction(action);\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nimport StarOutlineSvg from '@mdi/svg/svg/star-outline.svg?raw';\nimport StarSvg from '@mdi/svg/svg/star.svg?raw';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nimport logger from '../logger.js';\n// If any of the nodes is not favorited, we display the favorite action.\nconst shouldFavorite = (nodes) => {\n return nodes.some(node => node.attributes.favorite !== 1);\n};\nexport const favoriteNode = async (node, view, willFavorite) => {\n try {\n // TODO: migrate to webdav tags plugin\n const url = generateUrl('/apps/files/api/v1/files') + node.path;\n await axios.post(url, {\n tags: willFavorite\n ? [window.OC.TAG_FAVORITE]\n : [],\n });\n // Let's delete if we are in the favourites view\n // AND if it is removed from the user favorites\n // AND it's in the root of the favorites view\n if (view.id === 'favorites' && !willFavorite && node.dirname === '/') {\n emit('files:node:deleted', node);\n }\n // Update the node webdav attribute\n Vue.set(node.attributes, 'favorite', willFavorite ? 1 : 0);\n // Dispatch event to whoever is interested\n if (willFavorite) {\n emit('files:favorites:added', node);\n }\n else {\n emit('files:favorites:removed', node);\n }\n return true;\n }\n catch (error) {\n const action = willFavorite ? 'adding a file to favourites' : 'removing a file from favourites';\n logger.error('Error while ' + action, { error, source: node.source, node });\n return false;\n }\n};\nexport const action = new FileAction({\n id: 'favorite',\n displayName(nodes) {\n return shouldFavorite(nodes)\n ? t('files', 'Add to favorites')\n : t('files', 'Remove from favorites');\n },\n iconSvgInline: (nodes) => {\n return shouldFavorite(nodes)\n ? StarOutlineSvg\n : StarSvg;\n },\n enabled(nodes) {\n // We can only favorite nodes within files and with permissions\n return !nodes.some(node => !node.root?.startsWith?.('/files'))\n && nodes.every(node => node.permissions !== Permission.NONE);\n },\n async exec(node, view) {\n const willFavorite = shouldFavorite([node]);\n return await favoriteNode(node, view, willFavorite);\n },\n async execBatch(nodes, view) {\n const willFavorite = shouldFavorite(nodes);\n return Promise.all(nodes.map(async (node) => await favoriteNode(node, view, willFavorite)));\n },\n order: -50,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, Node, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport FolderSvg from '@mdi/svg/svg/folder.svg?raw';\nimport { join } from 'path';\nimport { registerFileAction, FileAction, DefaultType } from '../services/FileAction';\nexport const action = new FileAction({\n id: 'open-folder',\n displayName(files) {\n // Only works on single node\n const displayName = files[0].attributes.displayName || files[0].basename;\n return t('files', 'Open folder {displayName}', { displayName });\n },\n iconSvgInline: () => FolderSvg,\n enabled(nodes) {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n if (!node.isDavRessource) {\n return false;\n }\n return node.type === FileType.Folder\n && (node.permissions & Permission.READ) !== 0;\n },\n async exec(node, view, dir) {\n if (!node || node.type !== FileType.Folder) {\n return false;\n }\n window.OCP.Files.Router.goToRoute(null, null, { dir: join(dir, node.basename) });\n return null;\n },\n // Main action if enabled, meaning folders only\n default: DefaultType.HIDDEN,\n order: -100,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport PencilSvg from '@mdi/svg/svg/pencil.svg?raw';\nimport { emit } from '@nextcloud/event-bus';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: 'rename',\n displayName: () => t('files', 'Rename'),\n iconSvgInline: () => PencilSvg,\n enabled: (nodes) => {\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.UPDATE) !== 0);\n },\n async exec(node) {\n // Renaming is a built-in feature of the files app\n emit('files:node:rename', node);\n return null;\n },\n order: 10,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport { Permission } from '@nextcloud/files';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n window?.OCA?.Files?.Sidebar?.open?.(node.path);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Node, FileType, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move.svg?raw';\nimport { join } from 'path';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nexport const action = new FileAction({\n id: 'view-in-folder',\n displayName() {\n return t('files', 'View in folder');\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled(nodes) {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n if (!node.isDavRessource) {\n return false;\n }\n if (node.permissions === Permission.NONE) {\n return false;\n }\n return node.type === FileType.File;\n },\n async exec(node, view, dir) {\n if (!node || node.type !== FileType.File) {\n return false;\n }\n window.OCP.Files.Router.goToRoute(null, { view: 'files', fileid: node.fileid }, { dir: node.dirname, fileid: node.fileid });\n return null;\n },\n order: 80,\n});\nregisterFileAction(action);\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-ignore\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = global.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n","import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n","/*!\n * pinia v2.1.4\n * (c) 2023 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n return (o &&\n typeof o === 'object' &&\n Object.prototype.toString.call(o) === '[object Object]' &&\n typeof o.toJSON !== 'function');\n}\n// type DeepReadonly = { readonly [P in keyof T]: DeepReadonly }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n /**\n * Direct mutation of the state:\n *\n * - `store.name = 'new name'`\n * - `store.$state.name = 'new name'`\n * - `store.list.push('new item')`\n */\n MutationType[\"direct\"] = \"direct\";\n /**\n * Mutated the state with `$patch` and an object\n *\n * - `store.$patch({ name: 'newName' })`\n */\n MutationType[\"patchObject\"] = \"patch object\";\n /**\n * Mutated the state with `$patch` and a function\n *\n * - `store.$patch(state => state.name = 'newName')`\n */\n MutationType[\"patchFunction\"] = \"patch function\";\n // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n/**\n * Should we add the devtools plugins.\n * - only if dev mode or forced through the prod devtools flag\n * - not in test\n * - only if window exists (could change in the future)\n */\nconst USE_DEVTOOLS = ((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test') && IS_CLIENT;\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n ? window\n : typeof self === 'object' && self.self === self\n ? self\n : typeof global === 'object' && global.global === global\n ? global\n : typeof globalThis === 'object'\n ? globalThis\n : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (autoBom &&\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n }\n return blob;\n}\nfunction download(url, name, opts) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n saveAs(xhr.response, name, opts);\n };\n xhr.onerror = function () {\n console.error('could not download file');\n };\n xhr.send();\n}\nfunction corsEnabled(url) {\n const xhr = new XMLHttpRequest();\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false);\n try {\n xhr.send();\n }\n catch (e) { }\n return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'));\n }\n catch (e) {\n const evt = document.createEvent('MouseEvents');\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\n node.dispatchEvent(evt);\n }\n}\nconst _navigator = \n typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n /AppleWebKit/.test(_navigator.userAgent) &&\n !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n ? () => { } // noop\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n typeof HTMLAnchorElement !== 'undefined' &&\n 'download' in HTMLAnchorElement.prototype &&\n !isMacOSWebView\n ? downloadSaveAs\n : // Use msSaveOrOpenBlob as a second approach\n 'msSaveOrOpenBlob' in _navigator\n ? msSaveAs\n : // Fallback to using FileReader and a popup\n fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n const a = document.createElement('a');\n a.download = name;\n a.rel = 'noopener'; // tabnabbing\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob;\n if (a.origin !== location.origin) {\n if (corsEnabled(a.href)) {\n download(blob, name, opts);\n }\n else {\n a.target = '_blank';\n click(a);\n }\n }\n else {\n click(a);\n }\n }\n else {\n // Support blobs\n a.href = URL.createObjectURL(blob);\n setTimeout(function () {\n URL.revokeObjectURL(a.href);\n }, 4e4); // 40s\n setTimeout(function () {\n click(a);\n }, 0);\n }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts);\n }\n else {\n const a = document.createElement('a');\n a.href = blob;\n a.target = '_blank';\n setTimeout(function () {\n click(a);\n });\n }\n }\n else {\n // @ts-ignore: works on windows\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank');\n if (popup) {\n popup.document.title = popup.document.body.innerText = 'downloading...';\n }\n if (typeof blob === 'string')\n return download(blob, name, opts);\n const force = blob.type === 'application/octet-stream';\n const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n const reader = new FileReader();\n reader.onloadend = function () {\n let url = reader.result;\n if (typeof url !== 'string') {\n popup = null;\n throw new Error('Wrong reader.result type');\n }\n url = isChromeIOS\n ? url\n : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n if (popup) {\n popup.location.href = url;\n }\n else {\n location.assign(url);\n }\n popup = null; // reverse-tabnabbing #460\n };\n reader.readAsDataURL(blob);\n }\n else {\n const url = URL.createObjectURL(blob);\n if (popup)\n popup.location.assign(url);\n else\n location.href = url;\n popup = null; // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url);\n }, 4e4); // 40s\n }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n const piniaMessage = '🍍 ' + message;\n if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n // No longer available :(\n __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n }\n else if (type === 'error') {\n console.error(piniaMessage);\n }\n else if (type === 'warn') {\n console.warn(piniaMessage);\n }\n else {\n console.log(piniaMessage);\n }\n}\nfunction isPinia(o) {\n return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n if (!('clipboard' in navigator)) {\n toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n return true;\n }\n}\nfunction checkNotFocusedError(error) {\n if (error instanceof Error &&\n error.message.toLowerCase().includes('document is not focused')) {\n toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n return true;\n }\n return false;\n}\nasync function actionGlobalCopyState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n toastMessage('Global state copied to clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalPasteState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n pinia.state.value = JSON.parse(await navigator.clipboard.readText());\n toastMessage('Global state pasted from clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalSaveState(pinia) {\n try {\n saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n type: 'text/plain;charset=utf-8',\n }), 'pinia-state.json');\n }\n catch (error) {\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nlet fileInput;\nfunction getFileOpener() {\n if (!fileInput) {\n fileInput = document.createElement('input');\n fileInput.type = 'file';\n fileInput.accept = '.json';\n }\n function openFile() {\n return new Promise((resolve, reject) => {\n fileInput.onchange = async () => {\n const files = fileInput.files;\n if (!files)\n return resolve(null);\n const file = files.item(0);\n if (!file)\n return resolve(null);\n return resolve({ text: await file.text(), file });\n };\n // @ts-ignore: TODO: changed from 4.3 to 4.4\n fileInput.oncancel = () => resolve(null);\n fileInput.onerror = reject;\n fileInput.click();\n });\n }\n return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n try {\n const open = await getFileOpener();\n const result = await open();\n if (!result)\n return;\n const { text, file } = result;\n pinia.state.value = JSON.parse(text);\n toastMessage(`Global state imported from \"${file.name}\".`);\n }\n catch (error) {\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\n\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n return isPinia(store)\n ? {\n id: PINIA_ROOT_ID,\n label: PINIA_ROOT_LABEL,\n }\n : {\n id: store.$id,\n label: store.$id,\n };\n}\nfunction formatStoreForInspectorState(store) {\n if (isPinia(store)) {\n const storeNames = Array.from(store._s.keys());\n const storeMap = store._s;\n const state = {\n state: storeNames.map((storeId) => ({\n editable: true,\n key: storeId,\n value: store.state.value[storeId],\n })),\n getters: storeNames\n .filter((id) => storeMap.get(id)._getters)\n .map((id) => {\n const store = storeMap.get(id);\n return {\n editable: false,\n key: id,\n value: store._getters.reduce((getters, key) => {\n getters[key] = store[key];\n return getters;\n }, {}),\n };\n }),\n };\n return state;\n }\n const state = {\n state: Object.keys(store.$state).map((key) => ({\n editable: true,\n key,\n value: store.$state[key],\n })),\n };\n // avoid adding empty getters\n if (store._getters && store._getters.length) {\n state.getters = store._getters.map((getterName) => ({\n editable: false,\n key: getterName,\n value: store[getterName],\n }));\n }\n if (store._customProperties.size) {\n state.customProperties = Array.from(store._customProperties).map((key) => ({\n editable: true,\n key,\n value: store[key],\n }));\n }\n return state;\n}\nfunction formatEventData(events) {\n if (!events)\n return {};\n if (Array.isArray(events)) {\n // TODO: handle add and delete for arrays and objects\n return events.reduce((data, event) => {\n data.keys.push(event.key);\n data.operations.push(event.type);\n data.oldValue[event.key] = event.oldValue;\n data.newValue[event.key] = event.newValue;\n return data;\n }, {\n oldValue: {},\n keys: [],\n operations: [],\n newValue: {},\n });\n }\n else {\n return {\n operation: formatDisplay(events.type),\n key: formatDisplay(events.key),\n oldValue: events.oldValue,\n newValue: events.newValue,\n };\n }\n}\nfunction formatMutationType(type) {\n switch (type) {\n case MutationType.direct:\n return 'mutation';\n case MutationType.patchFunction:\n return '$patch';\n case MutationType.patchObject:\n return '$patch';\n default:\n return 'unknown';\n }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => '🍍 ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n }, (api) => {\n if (typeof api.now !== 'function') {\n toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: `Pinia 🍍`,\n color: 0xe5df88,\n });\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Pinia 🍍',\n icon: 'storage',\n treeFilterPlaceholder: 'Search stores',\n actions: [\n {\n icon: 'content_copy',\n action: () => {\n actionGlobalCopyState(pinia);\n },\n tooltip: 'Serialize and copy the state',\n },\n {\n icon: 'content_paste',\n action: async () => {\n await actionGlobalPasteState(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Replace the state with the content of your clipboard',\n },\n {\n icon: 'save',\n action: () => {\n actionGlobalSaveState(pinia);\n },\n tooltip: 'Save the state as a JSON file',\n },\n {\n icon: 'folder_open',\n action: async () => {\n await actionGlobalOpenStateFile(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Import the state from a JSON file',\n },\n ],\n nodeActions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state (with \"$reset\")',\n action: (nodeId) => {\n const store = pinia._s.get(nodeId);\n if (!store) {\n toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n }\n else if (typeof store.$reset !== 'function') {\n toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n }\n else {\n store.$reset();\n toastMessage(`Store \"${nodeId}\" reset.`);\n }\n },\n },\n ],\n });\n api.on.inspectComponent((payload, ctx) => {\n const proxy = (payload.componentInstance &&\n payload.componentInstance.proxy);\n if (proxy && proxy._pStores) {\n const piniaStores = payload.componentInstance.proxy._pStores;\n Object.values(piniaStores).forEach((store) => {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'state',\n editable: true,\n value: store._isOptionsAPI\n ? {\n _custom: {\n value: toRaw(store.$state),\n actions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state of this store',\n action: () => store.$reset(),\n },\n ],\n },\n }\n : // NOTE: workaround to unwrap transferred refs\n Object.keys(store.$state).reduce((state, key) => {\n state[key] = store.$state[key];\n return state;\n }, {}),\n });\n if (store._getters && store._getters.length) {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'getters',\n editable: false,\n value: store._getters.reduce((getters, key) => {\n try {\n getters[key] = store[key];\n }\n catch (error) {\n // @ts-expect-error: we just want to show it in devtools\n getters[key] = error;\n }\n return getters;\n }, {}),\n });\n }\n });\n }\n });\n api.on.getInspectorTree((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n let stores = [pinia];\n stores = stores.concat(Array.from(pinia._s.values()));\n payload.rootNodes = (payload.filter\n ? stores.filter((store) => '$id' in store\n ? store.$id\n .toLowerCase()\n .includes(payload.filter.toLowerCase())\n : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n : stores).map(formatStoreForInspectorTree);\n }\n });\n api.on.getInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n // this could be the selected store restored for a different project\n // so it's better not to say anything here\n return;\n }\n if (inspectedStore) {\n payload.state = formatStoreForInspectorState(inspectedStore);\n }\n }\n });\n api.on.editInspectorState((payload, ctx) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (!isPinia(inspectedStore)) {\n // access only the state\n if (path.length !== 1 ||\n !inspectedStore._customProperties.has(path[0]) ||\n path[0] in inspectedStore.$state) {\n path.unshift('$state');\n }\n }\n else {\n // Root access, we can omit the `.value` because the devtools API does it for us\n path.unshift('state');\n }\n isTimelineActive = false;\n payload.set(inspectedStore, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n api.on.editComponentState((payload) => {\n if (payload.type.startsWith('🍍')) {\n const storeId = payload.type.replace(/^🍍\\s*/, '');\n const store = pinia._s.get(storeId);\n if (!store) {\n return toastMessage(`store \"${storeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (path[0] !== 'state') {\n return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n }\n // rewrite the first entry to be able to directly set the state as\n // well as any other path\n path[0] = '$state';\n isTimelineActive = false;\n payload.set(store, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n });\n}\nfunction addStoreToDevtools(app, store) {\n if (!componentStateTypes.includes(getStoreType(store.$id))) {\n componentStateTypes.push(getStoreType(store.$id));\n }\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n settings: {\n logStoreChanges: {\n label: 'Notify about new/deleted stores',\n type: 'boolean',\n defaultValue: true,\n },\n // useEmojis: {\n // label: 'Use emojis in messages ⚡️',\n // type: 'boolean',\n // defaultValue: true,\n // },\n },\n }, (api) => {\n // gracefully handle errors\n const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n store.$onAction(({ after, onError, name, args }) => {\n const groupId = runningActionId++;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛫 ' + name,\n subtitle: 'start',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n },\n groupId,\n },\n });\n after((result) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛬 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n result,\n },\n groupId,\n },\n });\n });\n onError((error) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n logType: 'error',\n title: '💥 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n error,\n },\n groupId,\n },\n });\n });\n }, true);\n store._customProperties.forEach((name) => {\n watch(() => unref(store[name]), (newValue, oldValue) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (isTimelineActive) {\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: 'Change',\n subtitle: name,\n data: {\n newValue,\n oldValue,\n },\n groupId: activeAction,\n },\n });\n }\n }, { deep: true });\n });\n store.$subscribe(({ events, type }, state) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (!isTimelineActive)\n return;\n // rootStore.state[store.id] = state\n const eventData = {\n time: now(),\n title: formatMutationType(type),\n data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n groupId: activeAction,\n };\n if (type === MutationType.patchFunction) {\n eventData.subtitle = '⤵️';\n }\n else if (type === MutationType.patchObject) {\n eventData.subtitle = '🧩';\n }\n else if (events && !Array.isArray(events)) {\n eventData.subtitle = events.type;\n }\n if (events) {\n eventData.data['rawEvent(s)'] = {\n _custom: {\n display: 'DebuggerEvent',\n type: 'object',\n tooltip: 'raw DebuggerEvent[]',\n value: events,\n },\n };\n }\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: eventData,\n });\n }, { detached: true, flush: 'sync' });\n const hotUpdate = store._hotUpdate;\n store._hotUpdate = markRaw((newStore) => {\n hotUpdate(newStore);\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🔥 ' + store.$id,\n subtitle: 'HMR update',\n data: {\n store: formatDisplay(store.$id),\n info: formatDisplay(`HMR update`),\n },\n },\n });\n // update the devtools too\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n });\n const { $dispose } = store;\n store.$dispose = () => {\n $dispose();\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n };\n // trigger an update so it can display new registered stores\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`\"${store.$id}\" store installed 🆕`);\n });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n // original actions of the store as they are given by pinia. We are going to override them\n const actions = actionNames.reduce((storeActions, actionName) => {\n // use toRaw to avoid tracking #541\n storeActions[actionName] = toRaw(store)[actionName];\n return storeActions;\n }, {});\n for (const actionName in actions) {\n store[actionName] = function () {\n // the running action id is incremented in a before action hook\n const _actionId = runningActionId;\n const trackedStore = wrapWithProxy\n ? new Proxy(store, {\n get(...args) {\n activeAction = _actionId;\n return Reflect.get(...args);\n },\n set(...args) {\n activeAction = _actionId;\n return Reflect.set(...args);\n },\n })\n : store;\n // For Setup Stores we need https://github.com/tc39/proposal-async-context\n activeAction = _actionId;\n const retValue = actions[actionName].apply(trackedStore, arguments);\n // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n activeAction = undefined;\n return retValue;\n };\n }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n // HMR module\n if (store.$id.startsWith('__hot:')) {\n return;\n }\n // detect option api vs setup api\n store._isOptionsAPI = !!options.state;\n patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n // Upgrade the HMR to also update the new actions\n const originalHotUpdate = store._hotUpdate;\n toRaw(store)._hotUpdate = function (newStore) {\n originalHotUpdate.apply(this, arguments);\n patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n };\n addStoreToDevtools(app, \n // FIXME: is there a way to allow the assignment from Store to StoreGeneric?\n store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n const scope = effectScope(true);\n // NOTE: here we could check the window object for a state and directly set it\n // if there is anything like it with Vue 3 SSR\n const state = scope.run(() => ref({}));\n let _p = [];\n // plugins added before calling app.use(pinia)\n let toBeInstalled = [];\n const pinia = markRaw({\n install(app) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n if (!isVue2) {\n pinia._a = app;\n app.provide(piniaSymbol, pinia);\n app.config.globalProperties.$pinia = pinia;\n /* istanbul ignore else */\n if (USE_DEVTOOLS) {\n registerPiniaDevtools(app, pinia);\n }\n toBeInstalled.forEach((plugin) => _p.push(plugin));\n toBeInstalled = [];\n }\n },\n use(plugin) {\n if (!this._a && !isVue2) {\n toBeInstalled.push(plugin);\n }\n else {\n _p.push(plugin);\n }\n return this;\n },\n _p,\n // it's actually undefined here\n // @ts-expect-error\n _a: null,\n _e: scope,\n _s: new Map(),\n state,\n });\n // pinia devtools rely on dev only features so they cannot be forced unless\n // the dev build of Vue is used. Avoid old browsers like IE11.\n if (USE_DEVTOOLS && typeof Proxy !== 'undefined') {\n pinia.use(devtoolsPlugin);\n }\n return pinia;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in oldState) {\n const subPatch = oldState[key];\n // skip the whole sub tree\n if (!(key in newState)) {\n continue;\n }\n const targetValue = newState[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n newState[key] = patchObject(targetValue, subPatch);\n }\n else {\n // objects are either a bit more complex (e.g. refs) or primitives, so we\n // just set the whole thing\n if (isVue2) {\n set(newState, key, subPatch);\n }\n else {\n newState[key] = subPatch;\n }\n }\n }\n return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n // strip as much as possible from iife.prod\n if (!(process.env.NODE_ENV !== 'production')) {\n return () => { };\n }\n return (newModule) => {\n const pinia = hot.data.pinia || initialUseStore._pinia;\n if (!pinia) {\n // this store is still not used\n return;\n }\n // preserve the pinia instance across loads\n hot.data.pinia = pinia;\n // console.log('got data', newStore)\n for (const exportName in newModule) {\n const useStore = newModule[exportName];\n // console.log('checking for', exportName)\n if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n // console.log('Accepting update for', useStore.$id)\n const id = useStore.$id;\n if (id !== initialUseStore.$id) {\n console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n // return import.meta.hot.invalidate()\n return hot.invalidate();\n }\n const existingStore = pinia._s.get(id);\n if (!existingStore) {\n console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n return;\n }\n useStore(pinia, existingStore);\n }\n }\n };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n subscriptions.push(callback);\n const removeSubscription = () => {\n const idx = subscriptions.indexOf(callback);\n if (idx > -1) {\n subscriptions.splice(idx, 1);\n onCleanup();\n }\n };\n if (!detached && getCurrentScope()) {\n onScopeDispose(removeSubscription);\n }\n return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n subscriptions.slice().forEach((callback) => {\n callback(...args);\n });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\nfunction mergeReactiveObjects(target, patchToApply) {\n // Handle Map instances\n if (target instanceof Map && patchToApply instanceof Map) {\n patchToApply.forEach((value, key) => target.set(key, value));\n }\n // Handle Set instances\n if (target instanceof Set && patchToApply instanceof Set) {\n patchToApply.forEach(target.add, target);\n }\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in patchToApply) {\n if (!patchToApply.hasOwnProperty(key))\n continue;\n const subPatch = patchToApply[key];\n const targetValue = target[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n target.hasOwnProperty(key) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n target[key] = mergeReactiveObjects(targetValue, subPatch);\n }\n else {\n // @ts-expect-error: subPatch is a valid value\n target[key] = subPatch;\n }\n }\n return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n ? Symbol('pinia:skipHydration')\n : /* istanbul ignore next */ Symbol();\nconst skipHydrateMap = /*#__PURE__*/ new WeakMap();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n return isVue2\n ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\n /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\n : Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n return isVue2\n ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\n : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n const { state, actions, getters } = options;\n const initialState = pinia.state.value[id];\n let store;\n function setup() {\n if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value, id, state ? state() : {});\n }\n else {\n pinia.state.value[id] = state ? state() : {};\n }\n }\n // avoid creating a state in pinia.state.value\n const localState = (process.env.NODE_ENV !== 'production') && hot\n ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n toRefs(ref(state ? state() : {}).value)\n : toRefs(pinia.state.value[id]);\n return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n if ((process.env.NODE_ENV !== 'production') && name in localState) {\n console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n }\n computedGetters[name] = markRaw(computed(() => {\n setActivePinia(pinia);\n // it was created just before\n const store = pinia._s.get(id);\n // allow cross using stores\n /* istanbul ignore next */\n if (isVue2 && !store._r)\n return;\n // @ts-expect-error\n // return getters![name].call(context, context)\n // TODO: avoid reading the getter while assigning with a global variable\n return getters[name].call(store, store);\n }));\n return computedGetters;\n }, {}));\n }\n store = createSetupStore(id, setup, options, pinia, hot, true);\n return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n let scope;\n const optionsForPlugin = assign({ actions: {} }, options);\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n throw new Error('Pinia destroyed');\n }\n // watcher options for $subscribe\n const $subscribeOptions = {\n deep: true,\n // flush: 'post',\n };\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production') && !isVue2) {\n $subscribeOptions.onTrigger = (event) => {\n /* istanbul ignore else */\n if (isListening) {\n debuggerEvents = event;\n // avoid triggering this while the store is being built and the state is being set in pinia\n }\n else if (isListening == false && !store._hotUpdating) {\n // let patch send all the events together later\n /* istanbul ignore else */\n if (Array.isArray(debuggerEvents)) {\n debuggerEvents.push(event);\n }\n else {\n console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n }\n }\n };\n }\n // internal state\n let isListening; // set to true at the end\n let isSyncListening; // set to true at the end\n let subscriptions = [];\n let actionSubscriptions = [];\n let debuggerEvents;\n const initialState = pinia.state.value[$id];\n // avoid setting the state for option stores if it is set\n // by the setup\n if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value, $id, {});\n }\n else {\n pinia.state.value[$id] = {};\n }\n }\n const hotState = ref({});\n // avoid triggering too many listeners\n // https://github.com/vuejs/pinia/issues/1129\n let activeListener;\n function $patch(partialStateOrMutator) {\n let subscriptionMutation;\n isListening = isSyncListening = false;\n // reset the debugger events since patches are sync\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n debuggerEvents = [];\n }\n if (typeof partialStateOrMutator === 'function') {\n partialStateOrMutator(pinia.state.value[$id]);\n subscriptionMutation = {\n type: MutationType.patchFunction,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n else {\n mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n subscriptionMutation = {\n type: MutationType.patchObject,\n payload: partialStateOrMutator,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n const myListenerId = (activeListener = Symbol());\n nextTick().then(() => {\n if (activeListener === myListenerId) {\n isListening = true;\n }\n });\n isSyncListening = true;\n // because we paused the watcher, we need to manually call the subscriptions\n triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n }\n const $reset = isOptionsStore\n ? function $reset() {\n const { state } = options;\n const newState = state ? state() : {};\n // we use a patch to group all changes into one single subscription\n this.$patch(($state) => {\n assign($state, newState);\n });\n }\n : /* istanbul ignore next */\n (process.env.NODE_ENV !== 'production')\n ? () => {\n throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n }\n : noop;\n function $dispose() {\n scope.stop();\n subscriptions = [];\n actionSubscriptions = [];\n pinia._s.delete($id);\n }\n /**\n * Wraps an action to handle subscriptions.\n *\n * @param name - name of the action\n * @param action - action to wrap\n * @returns a wrapped action to handle subscriptions\n */\n function wrapAction(name, action) {\n return function () {\n setActivePinia(pinia);\n const args = Array.from(arguments);\n const afterCallbackList = [];\n const onErrorCallbackList = [];\n function after(callback) {\n afterCallbackList.push(callback);\n }\n function onError(callback) {\n onErrorCallbackList.push(callback);\n }\n // @ts-expect-error\n triggerSubscriptions(actionSubscriptions, {\n args,\n name,\n store,\n after,\n onError,\n });\n let ret;\n try {\n ret = action.apply(this && this.$id === $id ? this : store, args);\n // handle sync errors\n }\n catch (error) {\n triggerSubscriptions(onErrorCallbackList, error);\n throw error;\n }\n if (ret instanceof Promise) {\n return ret\n .then((value) => {\n triggerSubscriptions(afterCallbackList, value);\n return value;\n })\n .catch((error) => {\n triggerSubscriptions(onErrorCallbackList, error);\n return Promise.reject(error);\n });\n }\n // trigger after callbacks\n triggerSubscriptions(afterCallbackList, ret);\n return ret;\n };\n }\n const _hmrPayload = /*#__PURE__*/ markRaw({\n actions: {},\n getters: {},\n state: [],\n hotState,\n });\n const partialStore = {\n _p: pinia,\n // _s: scope,\n $id,\n $onAction: addSubscription.bind(null, actionSubscriptions),\n $patch,\n $reset,\n $subscribe(callback, options = {}) {\n const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n if (options.flush === 'sync' ? isSyncListening : isListening) {\n callback({\n storeId: $id,\n type: MutationType.direct,\n events: debuggerEvents,\n }, state);\n }\n }, assign({}, $subscribeOptions, options)));\n return removeSubscription;\n },\n $dispose,\n };\n /* istanbul ignore if */\n if (isVue2) {\n // start as non ready\n partialStore._r = false;\n }\n const store = reactive((process.env.NODE_ENV !== 'production') || USE_DEVTOOLS\n ? assign({\n _hmrPayload,\n _customProperties: markRaw(new Set()), // devtools custom properties\n }, partialStore\n // must be added later\n // setupStore\n )\n : partialStore);\n // store the partial store now so the setup of stores can instantiate each other before they are finished without\n // creating infinite loops.\n pinia._s.set($id, store);\n const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n const setupStore = pinia._e.run(() => {\n scope = effectScope();\n return runWithContext(() => scope.run(setup));\n });\n // overwrite existing actions to support $onAction\n for (const key in setupStore) {\n const prop = setupStore[key];\n if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n // mark it as a piece of state to be serialized\n if ((process.env.NODE_ENV !== 'production') && hot) {\n set(hotState.value, key, toRef(setupStore, key));\n // createOptionStore directly sets the state in pinia.state.value so we\n // can just skip that\n }\n else if (!isOptionsStore) {\n // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n if (initialState && shouldHydrate(prop)) {\n if (isRef(prop)) {\n prop.value = initialState[key];\n }\n else {\n // probably a reactive object, lets recursively assign\n // @ts-expect-error: prop is unknown\n mergeReactiveObjects(prop, initialState[key]);\n }\n }\n // transfer the ref to the pinia state to keep everything in sync\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value[$id], key, prop);\n }\n else {\n pinia.state.value[$id][key] = prop;\n }\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.state.push(key);\n }\n // action\n }\n else if (typeof prop === 'function') {\n // @ts-expect-error: we are overriding the function we avoid wrapping if\n const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : wrapAction(key, prop);\n // this a hot module replacement store because the hotUpdate method needs\n // to do it with the right context\n /* istanbul ignore if */\n if (isVue2) {\n set(setupStore, key, actionValue);\n }\n else {\n // @ts-expect-error\n setupStore[key] = actionValue;\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.actions[key] = prop;\n }\n // list actions so they can be used in plugins\n // @ts-expect-error\n optionsForPlugin.actions[key] = prop;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n // add getters for devtools\n if (isComputed(prop)) {\n _hmrPayload.getters[key] = isOptionsStore\n ? // @ts-expect-error\n options.getters[key]\n : prop;\n if (IS_CLIENT) {\n const getters = setupStore._getters ||\n // @ts-expect-error: same\n (setupStore._getters = markRaw([]));\n getters.push(key);\n }\n }\n }\n }\n // add the state, getters, and action properties\n /* istanbul ignore if */\n if (isVue2) {\n Object.keys(setupStore).forEach((key) => {\n set(store, key, setupStore[key]);\n });\n }\n else {\n assign(store, setupStore);\n // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n // Make `storeToRefs()` work with `reactive()` #799\n assign(toRaw(store), setupStore);\n }\n // use this instead of a computed with setter to be able to create it anywhere\n // without linking the computed lifespan to wherever the store is first\n // created.\n Object.defineProperty(store, '$state', {\n get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n set: (state) => {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && hot) {\n throw new Error('cannot set hotState');\n }\n $patch(($state) => {\n assign($state, state);\n });\n },\n });\n // add the hotUpdate before plugins to allow them to override it\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n store._hotUpdate = markRaw((newStore) => {\n store._hotUpdating = true;\n newStore._hmrPayload.state.forEach((stateKey) => {\n if (stateKey in store.$state) {\n const newStateTarget = newStore.$state[stateKey];\n const oldStateSource = store.$state[stateKey];\n if (typeof newStateTarget === 'object' &&\n isPlainObject(newStateTarget) &&\n isPlainObject(oldStateSource)) {\n patchObject(newStateTarget, oldStateSource);\n }\n else {\n // transfer the ref\n newStore.$state[stateKey] = oldStateSource;\n }\n }\n // patch direct access properties to allow store.stateProperty to work as\n // store.$state.stateProperty\n set(store, stateKey, toRef(newStore.$state, stateKey));\n });\n // remove deleted state properties\n Object.keys(store.$state).forEach((stateKey) => {\n if (!(stateKey in newStore.$state)) {\n del(store, stateKey);\n }\n });\n // avoid devtools logging this as a mutation\n isListening = false;\n isSyncListening = false;\n pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n isSyncListening = true;\n nextTick().then(() => {\n isListening = true;\n });\n for (const actionName in newStore._hmrPayload.actions) {\n const action = newStore[actionName];\n set(store, actionName, wrapAction(actionName, action));\n }\n // TODO: does this work in both setup and option store?\n for (const getterName in newStore._hmrPayload.getters) {\n const getter = newStore._hmrPayload.getters[getterName];\n const getterValue = isOptionsStore\n ? // special handling of options api\n computed(() => {\n setActivePinia(pinia);\n return getter.call(store, store);\n })\n : getter;\n set(store, getterName, getterValue);\n }\n // remove deleted getters\n Object.keys(store._hmrPayload.getters).forEach((key) => {\n if (!(key in newStore._hmrPayload.getters)) {\n del(store, key);\n }\n });\n // remove old actions\n Object.keys(store._hmrPayload.actions).forEach((key) => {\n if (!(key in newStore._hmrPayload.actions)) {\n del(store, key);\n }\n });\n // update the values used in devtools and to allow deleting new properties later on\n store._hmrPayload = newStore._hmrPayload;\n store._getters = newStore._getters;\n store._hotUpdating = false;\n });\n }\n if (USE_DEVTOOLS) {\n const nonEnumerable = {\n writable: true,\n configurable: true,\n // avoid warning on devtools trying to display this property\n enumerable: false,\n };\n ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n });\n }\n /* istanbul ignore if */\n if (isVue2) {\n // mark the store as ready before plugins\n store._r = true;\n }\n // apply all plugins\n pinia._p.forEach((extender) => {\n /* istanbul ignore else */\n if (USE_DEVTOOLS) {\n const extensions = scope.run(() => extender({\n store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n }));\n Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n assign(store, extensions);\n }\n else {\n assign(store, scope.run(() => extender({\n store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n })));\n }\n });\n if ((process.env.NODE_ENV !== 'production') &&\n store.$state &&\n typeof store.$state === 'object' &&\n typeof store.$state.constructor === 'function' &&\n !store.$state.constructor.toString().includes('[native code]')) {\n console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\n `\\tstate: () => new MyClass()\\n` +\n `Found in store \"${store.$id}\".`);\n }\n // only apply hydrate to option stores with an initial state in pinia\n if (initialState &&\n isOptionsStore &&\n options.hydrate) {\n options.hydrate(store.$state, initialState);\n }\n isListening = true;\n isSyncListening = true;\n return store;\n}\nfunction defineStore(\n// TODO: add proper types from above\nidOrOptions, setup, setupOptions) {\n let id;\n let options;\n const isSetupStore = typeof setup === 'function';\n if (typeof idOrOptions === 'string') {\n id = idOrOptions;\n // the option store setup will contain the actual options in this case\n options = isSetupStore ? setupOptions : setup;\n }\n else {\n options = idOrOptions;\n id = idOrOptions.id;\n if ((process.env.NODE_ENV !== 'production') && typeof id !== 'string') {\n throw new Error(`[🍍]: \"defineStore()\" must be passed a store id as its first argument.`);\n }\n }\n function useStore(pinia, hot) {\n const hasContext = hasInjectionContext();\n pinia =\n // in test mode, ignore the argument provided as we can always retrieve a\n // pinia instance with getActivePinia()\n ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n (hasContext ? inject(piniaSymbol, null) : null);\n if (pinia)\n setActivePinia(pinia);\n if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Did you forget to install pinia?\\n` +\n `\\tconst pinia = createPinia()\\n` +\n `\\tapp.use(pinia)\\n` +\n `This will fail in production.`);\n }\n pinia = activePinia;\n if (!pinia._s.has(id)) {\n // creating the store registers it in `pinia._s`\n if (isSetupStore) {\n createSetupStore(id, setup, options, pinia);\n }\n else {\n createOptionsStore(id, options, pinia);\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n // @ts-expect-error: not the right inferred type\n useStore._pinia = pinia;\n }\n }\n const store = pinia._s.get(id);\n if ((process.env.NODE_ENV !== 'production') && hot) {\n const hotId = '__hot:' + id;\n const newStore = isSetupStore\n ? createSetupStore(hotId, setup, options, pinia, true)\n : createOptionsStore(hotId, assign({}, options), pinia, true);\n hot._hotUpdate(newStore);\n // cleanup the state properties and the store from the cache\n delete pinia.state.value[hotId];\n pinia._s.delete(hotId);\n }\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n const currentInstance = getCurrentInstance();\n // save stores in instances to access them devtools\n if (currentInstance &&\n currentInstance.proxy &&\n // avoid adding stores that are just built for hot module replacement\n !hot) {\n const vm = currentInstance.proxy;\n const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n cache[id] = store;\n }\n }\n // StoreGeneric cannot be casted towards Store\n return store;\n }\n useStore.$id = id;\n return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n * computed: {\n * // other computed properties\n * ...mapStores(useUserStore, useCartStore)\n * },\n *\n * created() {\n * this.userStore // store with id \"user\"\n * this.cartStore // store with id \"cart\"\n * }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n `Replace\\n` +\n `\\tmapStores([useAuthStore, useCartStore])\\n` +\n `with\\n` +\n `\\tmapStores(useAuthStore, useCartStore)\\n` +\n `This will fail in production if not fixed.`);\n stores = stores[0];\n }\n return stores.reduce((reduced, useStore) => {\n // @ts-expect-error: $id is added by defineStore\n reduced[useStore.$id + mapStoreSuffix] = function () {\n return useStore(this.$pinia);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = function () {\n return useStore(this.$pinia)[key];\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function () {\n const store = useStore(this.$pinia);\n const storeKey = keysOrMapper[key];\n // for some reason TS is unable to infer the type of storeKey to be a\n // function\n return typeof storeKey === 'function'\n ? storeKey.call(this, store)\n : store[storeKey];\n };\n return reduced;\n }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n return useStore(this.$pinia)[key](...args);\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n return useStore(this.$pinia)[keysOrMapper[key]](...args);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-ignore\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[key];\n },\n set(value) {\n // it's easier to type it here as any\n return (useStore(this.$pinia)[key] = value);\n },\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-ignore\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[keysOrMapper[key]];\n },\n set(value) {\n // it's easier to type it here as any\n return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n },\n };\n return reduced;\n }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n // See https://github.com/vuejs/pinia/issues/852\n // It's easier to just use toRefs() even if it includes more stuff\n if (isVue2) {\n // @ts-expect-error: toRefs include methods and others\n return toRefs(store);\n }\n else {\n store = toRaw(store);\n const refs = {};\n for (const key in store) {\n const value = store[key];\n if (isRef(value) || isReactive(value)) {\n // @ts-expect-error: the key is state or getter\n refs[key] =\n // ---\n toRef(store, key);\n }\n }\n return refs;\n }\n}\n\n/**\n * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\n * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\n * https://pinia.vuejs.org/ssr/nuxt.html.\n *\n * @example\n * ```js\n * import Vue from 'vue'\n * import { PiniaVuePlugin, createPinia } from 'pinia'\n *\n * Vue.use(PiniaVuePlugin)\n * const pinia = createPinia()\n *\n * new Vue({\n * el: '#app',\n * // ...\n * pinia,\n * })\n * ```\n *\n * @param _Vue - `Vue` imported from 'vue'.\n */\nconst PiniaVuePlugin = function (_Vue) {\n // Equivalent of\n // app.config.globalProperties.$pinia = pinia\n _Vue.mixin({\n beforeCreate() {\n const options = this.$options;\n if (options.pinia) {\n const pinia = options.pinia;\n // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\n /* istanbul ignore else */\n if (!this._provided) {\n const provideCache = {};\n Object.defineProperty(this, '_provided', {\n get: () => provideCache,\n set: (v) => Object.assign(provideCache, v),\n });\n }\n this._provided[piniaSymbol] = pinia;\n // propagate the pinia instance in an SSR friendly way\n // avoid adding it to nuxt twice\n /* istanbul ignore else */\n if (!this.$pinia) {\n this.$pinia = pinia;\n }\n pinia._a = this;\n if (IS_CLIENT) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n }\n if (USE_DEVTOOLS) {\n registerPiniaDevtools(pinia._a, pinia);\n }\n }\n else if (!this.$pinia && options.parent && options.parent.$pinia) {\n this.$pinia = options.parent.$pinia;\n }\n },\n destroyed() {\n delete this._pStores;\n },\n });\n};\n\nexport { MutationType, PiniaVuePlugin, acceptHMRUpdate, createPinia, defineStore, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, skipHydrate, storeToRefs };\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.currentView?.legacy),expression:\"!currentView?.legacy\"}],class:{'app-content--hidden': _vm.currentView?.legacy},attrs:{\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\"},[_c('BreadCrumbs',{attrs:{\"path\":_vm.dir},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e()],1),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"title\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?_c('NcEmptyContent',{attrs:{\"title\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [(_vm.dir !== '/')?_c('NcButton',{attrs:{\"aria-label\":\"t('files', 'Go to the previous folder')\",\"type\":\"primary\",\"to\":_vm.toPreviousDir}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView.icon}})]},proxy:true}])}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-view\":_vm.currentView,\"nodes\":_vm.dirContents}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * natural-orderby v3.0.2\n *\n * Copyright (c) Olaf Ennen\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar compareNumbers = function compareNumbers(numberA, numberB) {\n if (numberA < numberB) {\n return -1;\n }\n if (numberA > numberB) {\n return 1;\n }\n return 0;\n};\n\nvar compareUnicode = function compareUnicode(stringA, stringB) {\n var result = stringA.localeCompare(stringB);\n return result ? result / Math.abs(result) : 0;\n};\n\nvar RE_NUMBERS = /(^0x[\\da-fA-F]+$|^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?!\\.\\d+)(?=\\D|\\s|$))|\\d+)/g;\nvar RE_LEADING_OR_TRAILING_WHITESPACES = /^\\s+|\\s+$/g; // trim pre-post whitespace\nvar RE_WHITESPACES = /\\s+/g; // normalize all whitespace to single ' ' character\nvar RE_INT_OR_FLOAT = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/; // identify integers and floats\nvar RE_DATE = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[/-]\\d{1,4}[/-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/; // identify date strings\nvar RE_LEADING_ZERO = /^0+[1-9]{1}[0-9]*$/;\n// eslint-disable-next-line no-control-regex\nvar RE_UNICODE_CHARACTERS = /[^\\x00-\\x80]/;\n\nvar stringCompare = function stringCompare(stringA, stringB) {\n if (stringA < stringB) {\n return -1;\n }\n if (stringA > stringB) {\n return 1;\n }\n return 0;\n};\n\nvar compareChunks = function compareChunks(chunksA, chunksB) {\n var lengthA = chunksA.length;\n var lengthB = chunksB.length;\n var size = Math.min(lengthA, lengthB);\n for (var i = 0; i < size; i++) {\n var chunkA = chunksA[i];\n var chunkB = chunksB[i];\n if (chunkA.normalizedString !== chunkB.normalizedString) {\n if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) {\n // empty strings have lowest value\n return chunkA.normalizedString === '' ? -1 : 1;\n }\n if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) {\n // compare numbers\n var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber);\n if (result === 0) {\n // compare string value, if parsed numbers are equal\n // Example:\n // chunkA = { parsedNumber: 1, normalizedString: \"001\" }\n // chunkB = { parsedNumber: 1, normalizedString: \"01\" }\n // chunkA.parsedNumber === chunkB.parsedNumber\n // chunkA.normalizedString < chunkB.normalizedString\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n return result;\n } else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) {\n // number < string\n return chunkA.parsedNumber !== undefined ? -1 : 1;\n } else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString)) {\n // use locale comparison only if one of the chunks contains unicode characters\n return compareUnicode(chunkA.normalizedString, chunkB.normalizedString);\n } else {\n // use common string comparison for performance reason\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n }\n }\n // if the chunks are equal so far, the one which has more chunks is greater than the other one\n if (lengthA > size || lengthB > size) {\n return lengthA <= size ? -1 : 1;\n }\n return 0;\n};\n\nvar compareOtherTypes = function compareOtherTypes(valueA, valueB) {\n if (!valueA.chunks ? valueB.chunks : !valueB.chunks) {\n return !valueA.chunks ? 1 : -1;\n }\n if (valueA.isNaN ? !valueB.isNaN : valueB.isNaN) {\n return valueA.isNaN ? -1 : 1;\n }\n if (valueA.isSymbol ? !valueB.isSymbol : valueB.isSymbol) {\n return valueA.isSymbol ? -1 : 1;\n }\n if (valueA.isObject ? !valueB.isObject : valueB.isObject) {\n return valueA.isObject ? -1 : 1;\n }\n if (valueA.isArray ? !valueB.isArray : valueB.isArray) {\n return valueA.isArray ? -1 : 1;\n }\n if (valueA.isFunction ? !valueB.isFunction : valueB.isFunction) {\n return valueA.isFunction ? -1 : 1;\n }\n if (valueA.isNull ? !valueB.isNull : valueB.isNull) {\n return valueA.isNull ? -1 : 1;\n }\n return 0;\n};\n\nvar compareValues = function compareValues(valueA, valueB) {\n if (valueA.value === valueB.value) {\n return 0;\n }\n if (valueA.parsedNumber !== undefined && valueB.parsedNumber !== undefined) {\n return compareNumbers(valueA.parsedNumber, valueB.parsedNumber);\n }\n if (valueA.chunks && valueB.chunks) {\n return compareChunks(valueA.chunks, valueB.chunks);\n }\n return compareOtherTypes(valueA, valueB);\n};\n\nvar normalizeAlphaChunk = function normalizeAlphaChunk(chunk) {\n return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n};\n\nvar parseNumber = function parseNumber(value) {\n if (value.length !== 0) {\n var parsedNumber = Number(value);\n if (!Number.isNaN(parsedNumber)) {\n return parsedNumber;\n }\n }\n return undefined;\n};\n\nvar normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) {\n if (RE_INT_OR_FLOAT.test(chunk)) {\n // don´t parse a number, if there´s a preceding decimal point\n // to keep significance\n // e.g. 1.0020, 1.020\n if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') {\n return parseNumber(chunk) || 0;\n }\n }\n return undefined;\n};\n\nvar createChunkMap = function createChunkMap(chunk, index, chunks) {\n return {\n parsedNumber: normalizeNumericChunk(chunk, index, chunks),\n normalizedString: normalizeAlphaChunk(chunk)\n };\n};\n\nvar createChunks = function createChunks(value) {\n return value.replace(RE_NUMBERS, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');\n};\n\nvar createChunkMaps = function createChunkMaps(value) {\n var chunksMaps = createChunks(value).map(createChunkMap);\n return chunksMaps;\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n\nvar isNaN = function isNaN(value) {\n return Number.isNaN(value) || value instanceof Number && Number.isNaN(value.valueOf());\n};\n\nvar isNull = function isNull(value) {\n return value === null;\n};\n\nvar isObject = function isObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Number) && !(value instanceof String) && !(value instanceof Boolean) && !(value instanceof Date);\n};\n\nvar isSymbol = function isSymbol(value) {\n return typeof value === 'symbol';\n};\n\nvar isUndefined = function isUndefined(value) {\n return value === undefined;\n};\n\nvar parseDate = function parseDate(value) {\n try {\n var parsedDate = Date.parse(value);\n if (!Number.isNaN(parsedDate)) {\n if (RE_DATE.test(value)) {\n return parsedDate;\n }\n }\n return undefined;\n } catch (_unused) {\n return undefined;\n }\n};\n\nvar numberify = function numberify(value) {\n var parsedNumber = parseNumber(value);\n if (parsedNumber !== undefined) {\n return parsedNumber;\n }\n return parseDate(value);\n};\n\nvar stringify = function stringify(value) {\n if (typeof value === 'boolean' || value instanceof Boolean) {\n return Number(value).toString();\n }\n if (typeof value === 'number' || value instanceof Number) {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.getTime().toString();\n }\n if (typeof value === 'string' || value instanceof String) {\n return value.toLowerCase().replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n }\n return '';\n};\n\nvar getMappedValueRecord = function getMappedValueRecord(value) {\n if (typeof value === 'string' || value instanceof String || (typeof value === 'number' || value instanceof Number) && !isNaN(value) || typeof value === 'boolean' || value instanceof Boolean || value instanceof Date) {\n var stringValue = stringify(value);\n var parsedNumber = numberify(stringValue);\n var chunks = createChunkMaps(parsedNumber ? \"\" + parsedNumber : stringValue);\n return {\n parsedNumber: parsedNumber,\n chunks: chunks,\n value: value\n };\n }\n return {\n isArray: Array.isArray(value),\n isFunction: isFunction(value),\n isNaN: isNaN(value),\n isNull: isNull(value),\n isObject: isObject(value),\n isSymbol: isSymbol(value),\n isUndefined: isUndefined(value),\n value: value\n };\n};\n\nvar baseCompare = function baseCompare(options) {\n return function (valueA, valueB) {\n var a = getMappedValueRecord(valueA);\n var b = getMappedValueRecord(valueB);\n var result = compareValues(a, b);\n return result * (options.order === 'desc' ? -1 : 1);\n };\n};\n\nvar isValidOrder = function isValidOrder(value) {\n return typeof value === 'string' && (value === 'asc' || value === 'desc');\n};\nvar getOptions = function getOptions(customOptions) {\n var order = 'asc';\n if (typeof customOptions === 'string' && isValidOrder(customOptions)) {\n order = customOptions;\n } else if (customOptions && typeof customOptions === 'object' && customOptions.order && isValidOrder(customOptions.order)) {\n order = customOptions.order;\n }\n return {\n order: order\n };\n};\n\n/**\n * Creates a compare function that defines the natural sort order considering\n * the given `options` which may be passed to [`Array.prototype.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort).\n */\nfunction compare(options) {\n var validatedOptions = getOptions(options);\n return baseCompare(validatedOptions);\n}\n\nvar compareMultiple = function compareMultiple(recordA, recordB, orders) {\n var indexA = recordA.index,\n valuesA = recordA.values;\n var indexB = recordB.index,\n valuesB = recordB.values;\n var length = valuesA.length;\n var ordersLength = orders.length;\n for (var i = 0; i < length; i++) {\n var order = i < ordersLength ? orders[i] : null;\n if (order && typeof order === 'function') {\n var result = order(valuesA[i].value, valuesB[i].value);\n if (result) {\n return result;\n }\n } else {\n var _result = compareValues(valuesA[i], valuesB[i]);\n if (_result) {\n return _result * (order === 'desc' ? -1 : 1);\n }\n }\n }\n return indexA - indexB;\n};\n\nvar createIdentifierFn = function createIdentifierFn(identifier) {\n if (typeof identifier === 'function') {\n // identifier is already a lookup function\n return identifier;\n }\n return function (value) {\n if (Array.isArray(value)) {\n var index = Number(identifier);\n if (Number.isInteger(index)) {\n return value[index];\n }\n } else if (value && typeof value === 'object') {\n var result = Object.getOwnPropertyDescriptor(value, identifier);\n return result == null ? void 0 : result.value;\n }\n return value;\n };\n};\n\nvar getElementByIndex = function getElementByIndex(collection, index) {\n return collection[index];\n};\n\nvar getValueByIdentifier = function getValueByIdentifier(value, getValue) {\n return getValue(value);\n};\n\nvar baseOrderBy = function baseOrderBy(collection, identifiers, orders) {\n var identifierFns = identifiers.length ? identifiers.map(createIdentifierFn) : [function (value) {\n return value;\n }];\n\n // temporary array holds elements with position and sort-values\n var mappedCollection = collection.map(function (element, index) {\n var values = identifierFns.map(function (identifier) {\n return getValueByIdentifier(element, identifier);\n }).map(getMappedValueRecord);\n return {\n index: index,\n values: values\n };\n });\n\n // iterate over values and compare values until a != b or last value reached\n mappedCollection.sort(function (recordA, recordB) {\n return compareMultiple(recordA, recordB, orders);\n });\n return mappedCollection.map(function (element) {\n return getElementByIndex(collection, element.index);\n });\n};\n\nvar getIdentifiers = function getIdentifiers(identifiers) {\n if (!identifiers) {\n return [];\n }\n var identifierList = !Array.isArray(identifiers) ? [identifiers] : [].concat(identifiers);\n if (identifierList.some(function (identifier) {\n return typeof identifier !== 'string' && typeof identifier !== 'number' && typeof identifier !== 'function';\n })) {\n return [];\n }\n return identifierList;\n};\n\nvar getOrders = function getOrders(orders) {\n if (!orders) {\n return [];\n }\n var orderList = !Array.isArray(orders) ? [orders] : [].concat(orders);\n if (orderList.some(function (order) {\n return order !== 'asc' && order !== 'desc' && typeof order !== 'function';\n })) {\n return [];\n }\n return orderList;\n};\n\n/**\n * Creates an array of elements, natural sorted by specified identifiers and\n * the corresponding sort orders. This method implements a stable sort\n * algorithm, which means the original sort order of equal elements is\n * preserved.\n */\nfunction orderBy(collection, identifiers, orders) {\n if (!collection || !Array.isArray(collection)) {\n return [];\n }\n var validatedIdentifiers = getIdentifiers(identifiers);\n var validatedOrders = getOrders(orders);\n return baseOrderBy(collection, validatedIdentifiers, validatedOrders);\n}\n\nexport { compare, orderBy };\n","import { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nimport Vue from 'vue';\nexport const useFilesStore = function (...args) {\n const store = defineStore('files', {\n state: () => ({\n files: {},\n roots: {},\n }),\n getters: {\n /**\n * Get a file or folder by id\n */\n getNode: (state) => (id) => state.files[id],\n /**\n * Get a list of files or folders by their IDs\n * Does not return undefined values\n */\n getNodes: (state) => (ids) => ids\n .map(id => state.files[id])\n .filter(Boolean),\n /**\n * Get a file or folder by id\n */\n getRoot: (state) => (service) => state.roots[service],\n },\n actions: {\n updateNodes(nodes) {\n // Update the store all at once\n const files = nodes.reduce((acc, node) => {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', node);\n return acc;\n }\n acc[node.fileid] = node;\n return acc;\n }, {});\n Vue.set(this, 'files', { ...this.files, ...files });\n },\n deleteNodes(nodes) {\n nodes.forEach(node => {\n if (node.fileid) {\n Vue.delete(this.files, node.fileid);\n }\n });\n },\n setRoot({ service, root }) {\n Vue.set(this.roots, service, root);\n },\n onDeletedNode(node) {\n this.deleteNodes([node]);\n },\n },\n });\n const fileStore = store(...args);\n // Make sure we only register the listeners once\n if (!fileStore._initialized) {\n // subscribe('files:node:created', fileStore.onCreatedNode)\n subscribe('files:node:deleted', fileStore.onDeletedNode);\n // subscribe('files:node:moved', fileStore.onMovedNode)\n // subscribe('files:node:updated', fileStore.onUpdatedNode)\n fileStore._initialized = true;\n }\n return fileStore;\n};\n","import { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const usePathsStore = function (...args) {\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.fileid);\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n // TODO: watch folders to update paths?\n // subscribe('files:node:created', pathsStore.onCreatedNode)\n // subscribe('files:node:deleted', pathsStore.onDeletedNode)\n // subscribe('files:node:moved', pathsStore.onMovedNode)\n pathsStore._initialized = true;\n }\n return pathsStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport { FileId, SelectionStore } from '../types';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n */\n set(selection = []) {\n Vue.set(this, 'selected', selection);\n },\n /**\n * Set the last selected index\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","import { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst userConfig = loadState('files', 'config', {\n show_hidden: false,\n crop_image_previews: true,\n sort_favorites_first: true,\n});\nexport const useUserConfigStore = function (...args) {\n const store = defineStore('userconfig', {\n state: () => ({\n userConfig,\n }),\n actions: {\n /**\n * Update the user config local store\n */\n onUpdate(key, value) {\n Vue.set(this.userConfig, key, value);\n },\n /**\n * Update the user config local store AND on server side\n */\n async update(key, value) {\n await axios.put(generateUrl('/apps/files/api/v1/config/' + key), {\n value,\n });\n emit('files:config:updated', { key, value });\n },\n },\n });\n const userConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!userConfigStore._initialized) {\n subscribe('files:config:updated', function ({ key, value }) {\n userConfigStore.onUpdate(key, value);\n });\n userConfigStore._initialized = true;\n }\n return userConfigStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst viewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = function (...args) {\n const store = defineStore('viewconfig', {\n state: () => ({\n viewConfig,\n }),\n getters: {\n getConfig: (state) => (view) => state.viewConfig[view] || {},\n },\n actions: {\n /**\n * Update the view config local store\n */\n onUpdate(view, key, value) {\n if (!this.viewConfig[view]) {\n Vue.set(this.viewConfig, view, {});\n }\n Vue.set(this.viewConfig[view], key, value);\n },\n /**\n * Update the view config local store AND on server side\n */\n async update(view, key, value) {\n axios.put(generateUrl(`/apps/files/api/v1/views/${view}/${key}`), {\n value,\n });\n emit('files:viewconfig:updated', { view, key, value });\n },\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n */\n setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n this.update(view, 'sorting_mode', key);\n this.update(view, 'sorting_direction', 'asc');\n },\n /**\n * Toggle the sorting direction\n */\n toggleSortingDirection(view = 'files') {\n const config = this.getConfig(view) || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n this.update(view, 'sorting_direction', newDirection);\n },\n },\n });\n const viewConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!viewConfigStore._initialized) {\n subscribe('files:viewconfig:updated', function ({ view, key, value }) {\n viewConfigStore.onUpdate(view, key, value);\n });\n viewConfigStore._initialized = true;\n }\n return viewConfigStore;\n};\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=69a49b0f&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon home-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=68b3b20b&scoped=true&\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b3b20b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{attrs:{\"data-cy-files-content-breadcrumbs\":\"\"}},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"aria-label\":_vm.ariaLabel(section),\"title\":_vm.ariaLabel(section)},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('Home',{attrs:{\"size\":20}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function getInternetExplorerVersion() {\n\tvar ua = window.navigator.userAgent;\n\n\tvar msie = ua.indexOf('MSIE ');\n\tif (msie > 0) {\n\t\t// IE 10 or older => return version number\n\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t}\n\n\tvar trident = ua.indexOf('Trident/');\n\tif (trident > 0) {\n\t\t// IE 11 => return version number\n\t\tvar rv = ua.indexOf('rv:');\n\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t}\n\n\tvar edge = ua.indexOf('Edge/');\n\tif (edge > 0) {\n\t\t// Edge (IE 12+) => return version number\n\t\treturn parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n\t}\n\n\t// other browser\n\treturn -1;\n}\n\nvar isIE = void 0;\n\nfunction initCompat() {\n\tif (!initCompat.init) {\n\t\tinitCompat.init = true;\n\t\tisIE = getInternetExplorerVersion() !== -1;\n\t}\n}\n\nvar ResizeObserver = { render: function render() {\n\t\tvar _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: \"resize-observer\", attrs: { \"tabindex\": \"-1\" } });\n\t}, staticRenderFns: [], _scopeId: 'data-v-b329ee4c',\n\tname: 'resize-observer',\n\n\tmethods: {\n\t\tcompareAndNotify: function compareAndNotify() {\n\t\t\tif (this._w !== this.$el.offsetWidth || this._h !== this.$el.offsetHeight) {\n\t\t\t\tthis._w = this.$el.offsetWidth;\n\t\t\t\tthis._h = this.$el.offsetHeight;\n\t\t\t\tthis.$emit('notify');\n\t\t\t}\n\t\t},\n\t\taddResizeHandlers: function addResizeHandlers() {\n\t\t\tthis._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\t\t\tthis.compareAndNotify();\n\t\t},\n\t\tremoveResizeHandlers: function removeResizeHandlers() {\n\t\t\tif (this._resizeObject && this._resizeObject.onload) {\n\t\t\t\tif (!isIE && this._resizeObject.contentDocument) {\n\t\t\t\t\tthis._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n\t\t\t\t}\n\t\t\t\tdelete this._resizeObject.onload;\n\t\t\t}\n\t\t}\n\t},\n\n\tmounted: function mounted() {\n\t\tvar _this = this;\n\n\t\tinitCompat();\n\t\tthis.$nextTick(function () {\n\t\t\t_this._w = _this.$el.offsetWidth;\n\t\t\t_this._h = _this.$el.offsetHeight;\n\t\t});\n\t\tvar object = document.createElement('object');\n\t\tthis._resizeObject = object;\n\t\tobject.setAttribute('aria-hidden', 'true');\n\t\tobject.setAttribute('tabindex', -1);\n\t\tobject.onload = this.addResizeHandlers;\n\t\tobject.type = 'text/html';\n\t\tif (isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t\tobject.data = 'about:blank';\n\t\tif (!isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t},\n\tbeforeDestroy: function beforeDestroy() {\n\t\tthis.removeResizeHandlers();\n\t}\n};\n\n// Install the components\nfunction install(Vue) {\n\tVue.component('resize-observer', ResizeObserver);\n\tVue.component('ResizeObserver', ResizeObserver);\n}\n\n// Plugin\nvar plugin = {\n\t// eslint-disable-next-line no-undef\n\tversion: \"0.4.5\",\n\tinstall: install\n};\n\n// Auto-install\nvar GlobalVue = null;\nif (typeof window !== 'undefined') {\n\tGlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n\tGlobalVue = global.Vue;\n}\nif (GlobalVue) {\n\tGlobalVue.use(plugin);\n}\n\nexport { install, ResizeObserver };\nexport default plugin;\n","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction processOptions(value) {\n var options;\n\n if (typeof value === 'function') {\n // Simple options (callback-only)\n options = {\n callback: value\n };\n } else {\n // Options object\n options = value;\n }\n\n return options;\n}\nfunction throttle(callback, delay) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout;\n var lastState;\n var currentArgs;\n\n var throttled = function throttled(state) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n currentArgs = args;\n if (timeout && state === lastState) return;\n var leading = options.leading;\n\n if (typeof leading === 'function') {\n leading = leading(state, lastState);\n }\n\n if ((!timeout || state !== lastState) && leading) {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n }\n\n lastState = state;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n timeout = 0;\n }, delay);\n };\n\n throttled._clear = function () {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return throttled;\n}\nfunction deepEqual(val1, val2) {\n if (val1 === val2) return true;\n\n if (_typeof(val1) === 'object') {\n for (var key in val1) {\n if (!deepEqual(val1[key], val2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\nvar VisibilityState =\n/*#__PURE__*/\nfunction () {\n function VisibilityState(el, options, vnode) {\n _classCallCheck(this, VisibilityState);\n\n this.el = el;\n this.observer = null;\n this.frozen = false;\n this.createObserver(options, vnode);\n }\n\n _createClass(VisibilityState, [{\n key: \"createObserver\",\n value: function createObserver(options, vnode) {\n var _this = this;\n\n if (this.observer) {\n this.destroyObserver();\n }\n\n if (this.frozen) return;\n this.options = processOptions(options);\n\n this.callback = function (result, entry) {\n _this.options.callback(result, entry);\n\n if (result && _this.options.once) {\n _this.frozen = true;\n\n _this.destroyObserver();\n }\n }; // Throttle\n\n\n if (this.callback && this.options.throttle) {\n var _ref = this.options.throttleOptions || {},\n _leading = _ref.leading;\n\n this.callback = throttle(this.callback, this.options.throttle, {\n leading: function leading(state) {\n return _leading === 'both' || _leading === 'visible' && state || _leading === 'hidden' && !state;\n }\n });\n }\n\n this.oldResult = undefined;\n this.observer = new IntersectionObserver(function (entries) {\n var entry = entries[0];\n\n if (entries.length > 1) {\n var intersectingEntry = entries.find(function (e) {\n return e.isIntersecting;\n });\n\n if (intersectingEntry) {\n entry = intersectingEntry;\n }\n }\n\n if (_this.callback) {\n // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n var result = entry.isIntersecting && entry.intersectionRatio >= _this.threshold;\n if (result === _this.oldResult) return;\n _this.oldResult = result;\n\n _this.callback(result, entry);\n }\n }, this.options.intersection); // Wait for the element to be in document\n\n vnode.context.$nextTick(function () {\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n }\n }, {\n key: \"destroyObserver\",\n value: function destroyObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n } // Cancel throttled call\n\n\n if (this.callback && this.callback._clear) {\n this.callback._clear();\n\n this.callback = null;\n }\n }\n }, {\n key: \"threshold\",\n get: function get() {\n return this.options.intersection && this.options.intersection.threshold || 0;\n }\n }]);\n\n return VisibilityState;\n}();\n\nfunction bind(el, _ref2, vnode) {\n var value = _ref2.value;\n if (!value) return;\n\n if (typeof IntersectionObserver === 'undefined') {\n console.warn('[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill');\n } else {\n var state = new VisibilityState(el, value, vnode);\n el._vue_visibilityState = state;\n }\n}\n\nfunction update(el, _ref3, vnode) {\n var value = _ref3.value,\n oldValue = _ref3.oldValue;\n if (deepEqual(value, oldValue)) return;\n var state = el._vue_visibilityState;\n\n if (!value) {\n unbind(el);\n return;\n }\n\n if (state) {\n state.createObserver(value, vnode);\n } else {\n bind(el, {\n value: value\n }, vnode);\n }\n}\n\nfunction unbind(el) {\n var state = el._vue_visibilityState;\n\n if (state) {\n state.destroyObserver();\n delete el._vue_visibilityState;\n }\n}\n\nvar ObserveVisibility = {\n bind: bind,\n update: update,\n unbind: unbind\n};\n\nfunction install(Vue) {\n Vue.directive('observe-visibility', ObserveVisibility);\n /* -- Add more components here -- */\n}\n/* -- Plugin definition & Auto-install -- */\n\n/* You shouldn't have to modify the code below */\n// Plugin\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"0.4.6\",\n install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { ObserveVisibility, install };\n","import { ResizeObserver as ResizeObserver$1 } from 'vue-resize';\nimport { ObserveVisibility } from 'vue-observe-visibility';\nimport ScrollParent from 'scrollparent';\nimport Vue from 'vue';\n\nvar config = {\n itemsLimit: 1000\n};\n\nconst props = {\n items: {\n type: Array,\n required: true\n },\n keyField: {\n type: String,\n default: 'id'\n },\n direction: {\n type: String,\n default: 'vertical',\n validator: value => ['vertical', 'horizontal'].includes(value)\n },\n listTag: {\n type: String,\n default: 'div'\n },\n itemTag: {\n type: String,\n default: 'div'\n }\n};\nfunction simpleArray() {\n return this.items.length && typeof this.items[0] !== 'object';\n}\n\nlet supportsPassive = false;\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\n//\nlet uid = 0;\nvar script$2 = {\n name: 'RecycleScroller',\n components: {\n ResizeObserver: ResizeObserver$1\n },\n directives: {\n ObserveVisibility\n },\n props: {\n ...props,\n itemSize: {\n type: Number,\n default: null\n },\n gridItems: {\n type: Number,\n default: undefined\n },\n itemSecondarySize: {\n type: Number,\n default: undefined\n },\n minItemSize: {\n type: [Number, String],\n default: null\n },\n sizeField: {\n type: String,\n default: 'size'\n },\n typeField: {\n type: String,\n default: 'type'\n },\n buffer: {\n type: Number,\n default: 200\n },\n pageMode: {\n type: Boolean,\n default: false\n },\n prerender: {\n type: Number,\n default: 0\n },\n emitUpdate: {\n type: Boolean,\n default: false\n },\n skipHover: {\n type: Boolean,\n default: false\n },\n listTag: {\n type: String,\n default: 'div'\n },\n itemTag: {\n type: String,\n default: 'div'\n },\n listClass: {\n type: [String, Object, Array],\n default: ''\n },\n itemClass: {\n type: [String, Object, Array],\n default: ''\n }\n },\n data() {\n return {\n pool: [],\n totalSize: 0,\n ready: false,\n hoverKey: null\n };\n },\n computed: {\n sizes() {\n if (this.itemSize === null) {\n const sizes = {\n '-1': {\n accumulator: 0\n }\n };\n const items = this.items;\n const field = this.sizeField;\n const minItemSize = this.minItemSize;\n let computedMinSize = 10000;\n let accumulator = 0;\n let current;\n for (let i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n accumulator += current;\n sizes[i] = {\n accumulator,\n size: current\n };\n }\n // eslint-disable-next-line\n this.$_computedMinItemSize = computedMinSize;\n return sizes;\n }\n return [];\n },\n simpleArray\n },\n watch: {\n items() {\n this.updateVisibleItems(true);\n },\n pageMode() {\n this.applyPageMode();\n this.updateVisibleItems(false);\n },\n sizes: {\n handler() {\n this.updateVisibleItems(false);\n },\n deep: true\n },\n gridItems() {\n this.updateVisibleItems(true);\n },\n itemSecondarySize() {\n this.updateVisibleItems(true);\n }\n },\n created() {\n this.$_startIndex = 0;\n this.$_endIndex = 0;\n this.$_views = new Map();\n this.$_unusedViews = new Map();\n this.$_scrollDirty = false;\n this.$_lastUpdateScrollPosition = 0;\n\n // In SSR mode, we also prerender the same number of item for the first render\n // to avoir mismatch between server and client templates\n if (this.prerender) {\n this.$_prerender = true;\n this.updateVisibleItems(false);\n }\n if (this.gridItems && !this.itemSize) {\n console.error('[vue-recycle-scroller] You must provide an itemSize when using gridItems');\n }\n },\n mounted() {\n this.applyPageMode();\n this.$nextTick(() => {\n // In SSR mode, render the real number of visible items\n this.$_prerender = false;\n this.updateVisibleItems(true);\n this.ready = true;\n });\n },\n activated() {\n const lastPosition = this.$_lastUpdateScrollPosition;\n if (typeof lastPosition === 'number') {\n this.$nextTick(() => {\n this.scrollToPosition(lastPosition);\n });\n }\n },\n beforeDestroy() {\n this.removeListeners();\n },\n methods: {\n addView(pool, index, item, key, type) {\n const view = {\n item,\n position: 0\n };\n const nonReactive = {\n id: uid++,\n index,\n used: true,\n key,\n type\n };\n Object.defineProperty(view, 'nr', {\n configurable: false,\n value: nonReactive\n });\n pool.push(view);\n return view;\n },\n unuseView(view, fake = false) {\n const unusedViews = this.$_unusedViews;\n const type = view.nr.type;\n let unusedPool = unusedViews.get(type);\n if (!unusedPool) {\n unusedPool = [];\n unusedViews.set(type, unusedPool);\n }\n unusedPool.push(view);\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n this.$_views.delete(view.nr.key);\n }\n },\n handleResize() {\n this.$emit('resize');\n if (this.ready) this.updateVisibleItems(false);\n },\n handleScroll(event) {\n if (!this.$_scrollDirty) {\n this.$_scrollDirty = true;\n requestAnimationFrame(() => {\n this.$_scrollDirty = false;\n const {\n continuous\n } = this.updateVisibleItems(false, true);\n\n // It seems sometimes chrome doesn't fire scroll event :/\n // When non continous scrolling is ending, we force a refresh\n if (!continuous) {\n clearTimeout(this.$_refreshTimout);\n this.$_refreshTimout = setTimeout(this.handleScroll, 100);\n }\n });\n }\n },\n handleVisibilityChange(isVisible, entry) {\n if (this.ready) {\n if (isVisible || entry.boundingClientRect.width !== 0 || entry.boundingClientRect.height !== 0) {\n this.$emit('visible');\n requestAnimationFrame(() => {\n this.updateVisibleItems(false);\n });\n } else {\n this.$emit('hidden');\n }\n }\n },\n updateVisibleItems(checkItem, checkPositionDiff = false) {\n const itemSize = this.itemSize;\n const gridItems = this.gridItems || 1;\n const itemSecondarySize = this.itemSecondarySize || itemSize;\n const minItemSize = this.$_computedMinItemSize;\n const typeField = this.typeField;\n const keyField = this.simpleArray ? null : this.keyField;\n const items = this.items;\n const count = items.length;\n const sizes = this.sizes;\n const views = this.$_views;\n const unusedViews = this.$_unusedViews;\n const pool = this.pool;\n let startIndex, endIndex;\n let totalSize;\n let visibleStartIndex, visibleEndIndex;\n if (!count) {\n startIndex = endIndex = visibleStartIndex = visibleEndIndex = totalSize = 0;\n } else if (this.$_prerender) {\n startIndex = visibleStartIndex = 0;\n endIndex = visibleEndIndex = Math.min(this.prerender, items.length);\n totalSize = null;\n } else {\n const scroll = this.getScroll();\n\n // Skip update if use hasn't scrolled enough\n if (checkPositionDiff) {\n let positionDiff = scroll.start - this.$_lastUpdateScrollPosition;\n if (positionDiff < 0) positionDiff = -positionDiff;\n if (itemSize === null && positionDiff < minItemSize || positionDiff < itemSize) {\n return {\n continuous: true\n };\n }\n }\n this.$_lastUpdateScrollPosition = scroll.start;\n const buffer = this.buffer;\n scroll.start -= buffer;\n scroll.end += buffer;\n\n // account for leading slot\n let beforeSize = 0;\n if (this.$refs.before) {\n beforeSize = this.$refs.before.scrollHeight;\n scroll.start -= beforeSize;\n }\n\n // account for trailing slot\n if (this.$refs.after) {\n const afterSize = this.$refs.after.scrollHeight;\n scroll.end += afterSize;\n }\n\n // Variable size mode\n if (itemSize === null) {\n let h;\n let a = 0;\n let b = count - 1;\n let i = ~~(count / 2);\n let oldI;\n\n // Searching for startIndex\n do {\n oldI = i;\n h = sizes[i].accumulator;\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && sizes[i + 1].accumulator > scroll.start) {\n b = i;\n }\n i = ~~((a + b) / 2);\n } while (i !== oldI);\n i < 0 && (i = 0);\n startIndex = i;\n\n // For container style\n totalSize = sizes[count - 1].accumulator;\n\n // Searching for endIndex\n for (endIndex = i; endIndex < count && sizes[endIndex].accumulator < scroll.end; endIndex++);\n if (endIndex === -1) {\n endIndex = items.length - 1;\n } else {\n endIndex++;\n // Bounds\n endIndex > count && (endIndex = count);\n }\n\n // search visible startIndex\n for (visibleStartIndex = startIndex; visibleStartIndex < count && beforeSize + sizes[visibleStartIndex].accumulator < scroll.start; visibleStartIndex++);\n\n // search visible endIndex\n for (visibleEndIndex = visibleStartIndex; visibleEndIndex < count && beforeSize + sizes[visibleEndIndex].accumulator < scroll.end; visibleEndIndex++);\n } else {\n // Fixed size mode\n startIndex = ~~(scroll.start / itemSize * gridItems);\n const remainer = startIndex % gridItems;\n startIndex -= remainer;\n endIndex = Math.ceil(scroll.end / itemSize * gridItems);\n visibleStartIndex = Math.max(0, Math.floor((scroll.start - beforeSize) / itemSize * gridItems));\n visibleEndIndex = Math.floor((scroll.end - beforeSize) / itemSize * gridItems);\n\n // Bounds\n startIndex < 0 && (startIndex = 0);\n endIndex > count && (endIndex = count);\n visibleStartIndex < 0 && (visibleStartIndex = 0);\n visibleEndIndex > count && (visibleEndIndex = count);\n totalSize = Math.ceil(count / gridItems) * itemSize;\n }\n }\n if (endIndex - startIndex > config.itemsLimit) {\n this.itemsLimitError();\n }\n this.totalSize = totalSize;\n let view;\n const continuous = startIndex <= this.$_endIndex && endIndex >= this.$_startIndex;\n if (this.$_continuous !== continuous) {\n if (continuous) {\n views.clear();\n unusedViews.clear();\n for (let i = 0, l = pool.length; i < l; i++) {\n view = pool[i];\n this.unuseView(view);\n }\n }\n this.$_continuous = continuous;\n } else if (continuous) {\n for (let i = 0, l = pool.length; i < l; i++) {\n view = pool[i];\n if (view.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = items.indexOf(view.item);\n }\n\n // Check if index is still in visible range\n if (view.nr.index === -1 || view.nr.index < startIndex || view.nr.index >= endIndex) {\n this.unuseView(view);\n }\n }\n }\n }\n const unusedIndex = continuous ? null : new Map();\n let item, type, unusedPool;\n let v;\n for (let i = startIndex; i < endIndex; i++) {\n item = items[i];\n const key = keyField ? item[keyField] : item;\n if (key == null) {\n throw new Error(`Key is ${key} on item (keyField is '${keyField}')`);\n }\n view = views.get(key);\n if (!itemSize && !sizes[i].size) {\n if (view) this.unuseView(view);\n continue;\n }\n\n // No view assigned to item\n if (!view) {\n if (i === items.length - 1) this.$emit('scroll-end');\n if (i === 0) this.$emit('scroll-start');\n type = item[typeField];\n unusedPool = unusedViews.get(type);\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n view.item = item;\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n } else {\n view = this.addView(pool, i, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n if (!unusedPool || v >= unusedPool.length) {\n view = this.addView(pool, i, item, key, type);\n this.unuseView(view, true);\n unusedPool = unusedViews.get(type);\n }\n view = unusedPool[v];\n view.item = item;\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n unusedIndex.set(type, v + 1);\n v++;\n }\n views.set(key, view);\n } else {\n view.nr.used = true;\n view.item = item;\n }\n\n // Update position\n if (itemSize === null) {\n view.position = sizes[i - 1].accumulator;\n view.offset = 0;\n } else {\n view.position = Math.floor(i / gridItems) * itemSize;\n view.offset = i % gridItems * itemSecondarySize;\n }\n }\n this.$_startIndex = startIndex;\n this.$_endIndex = endIndex;\n if (this.emitUpdate) this.$emit('update', startIndex, endIndex, visibleStartIndex, visibleEndIndex);\n\n // After the user has finished scrolling\n // Sort views so text selection is correct\n clearTimeout(this.$_sortTimer);\n this.$_sortTimer = setTimeout(this.sortViews, 300);\n return {\n continuous\n };\n },\n getListenerTarget() {\n let target = ScrollParent(this.$el);\n // Fix global scroll target for Chrome and Safari\n if (window.document && (target === window.document.documentElement || target === window.document.body)) {\n target = window;\n }\n return target;\n },\n getScroll() {\n const {\n $el: el,\n direction\n } = this;\n const isVertical = direction === 'vertical';\n let scrollState;\n if (this.pageMode) {\n const bounds = el.getBoundingClientRect();\n const boundsSize = isVertical ? bounds.height : bounds.width;\n let start = -(isVertical ? bounds.top : bounds.left);\n let size = isVertical ? window.innerHeight : window.innerWidth;\n if (start < 0) {\n size += start;\n start = 0;\n }\n if (start + size > boundsSize) {\n size = boundsSize - start;\n }\n scrollState = {\n start,\n end: start + size\n };\n } else if (isVertical) {\n scrollState = {\n start: el.scrollTop,\n end: el.scrollTop + el.clientHeight\n };\n } else {\n scrollState = {\n start: el.scrollLeft,\n end: el.scrollLeft + el.clientWidth\n };\n }\n return scrollState;\n },\n applyPageMode() {\n if (this.pageMode) {\n this.addListeners();\n } else {\n this.removeListeners();\n }\n },\n addListeners() {\n this.listenerTarget = this.getListenerTarget();\n this.listenerTarget.addEventListener('scroll', this.handleScroll, supportsPassive ? {\n passive: true\n } : false);\n this.listenerTarget.addEventListener('resize', this.handleResize);\n },\n removeListeners() {\n if (!this.listenerTarget) {\n return;\n }\n this.listenerTarget.removeEventListener('scroll', this.handleScroll);\n this.listenerTarget.removeEventListener('resize', this.handleResize);\n this.listenerTarget = null;\n },\n scrollToItem(index) {\n let scroll;\n if (this.itemSize === null) {\n scroll = index > 0 ? this.sizes[index - 1].accumulator : 0;\n } else {\n scroll = Math.floor(index / this.gridItems) * this.itemSize;\n }\n this.scrollToPosition(scroll);\n },\n scrollToPosition(position) {\n const direction = this.direction === 'vertical' ? {\n scroll: 'scrollTop',\n start: 'top'\n } : {\n scroll: 'scrollLeft',\n start: 'left'\n };\n let viewport;\n let scrollDirection;\n let scrollDistance;\n if (this.pageMode) {\n const viewportEl = ScrollParent(this.$el);\n // HTML doesn't overflow like other elements\n const scrollTop = viewportEl.tagName === 'HTML' ? 0 : viewportEl[direction.scroll];\n const bounds = viewportEl.getBoundingClientRect();\n const scroller = this.$el.getBoundingClientRect();\n const scrollerPosition = scroller[direction.start] - bounds[direction.start];\n viewport = viewportEl;\n scrollDirection = direction.scroll;\n scrollDistance = position + scrollTop + scrollerPosition;\n } else {\n viewport = this.$el;\n scrollDirection = direction.scroll;\n scrollDistance = position;\n }\n viewport[scrollDirection] = scrollDistance;\n },\n itemsLimitError() {\n setTimeout(() => {\n console.log('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', this.$el);\n console.log('Make sure the scroller has a fixed height (or width) and \\'overflow-y\\' (or \\'overflow-x\\') set to \\'auto\\' so it can scroll correctly and only render the items visible in the scroll viewport.');\n });\n throw new Error('Rendered items limit reached');\n },\n sortViews() {\n this.pool.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n }\n // Vue.extend constructor export interop.\n const options = typeof script === 'function' ? script.options : script;\n // render functions\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true;\n // functional template\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n }\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId;\n }\n let hook;\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context = context ||\n // cached call\n this.$vnode && this.$vnode.ssrContext ||\n // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n }\n // inject component styles\n if (style) {\n style.call(this, createInjectorSSR(context));\n }\n // register component module identifier for async chunk inference\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n };\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n const originalRender = options.render;\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n const existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n return script;\n}\n\n/* script */\nconst __vue_script__$2 = script$2;\n/* template */\nvar __vue_render__$1 = function () {\n var _obj, _obj$1;\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"observe-visibility\",\n rawName: \"v-observe-visibility\",\n value: _vm.handleVisibilityChange,\n expression: \"handleVisibilityChange\",\n },\n ],\n staticClass: \"vue-recycle-scroller\",\n class:\n ((_obj = {\n ready: _vm.ready,\n \"page-mode\": _vm.pageMode,\n }),\n (_obj[\"direction-\" + _vm.direction] = true),\n _obj),\n on: {\n \"&scroll\": function ($event) {\n return _vm.handleScroll.apply(null, arguments)\n },\n },\n },\n [\n _vm.$slots.before\n ? _c(\n \"div\",\n { ref: \"before\", staticClass: \"vue-recycle-scroller__slot\" },\n [_vm._t(\"before\")],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n _vm.listTag,\n {\n ref: \"wrapper\",\n tag: \"component\",\n staticClass: \"vue-recycle-scroller__item-wrapper\",\n class: _vm.listClass,\n style:\n ((_obj$1 = {}),\n (_obj$1[_vm.direction === \"vertical\" ? \"minHeight\" : \"minWidth\"] =\n _vm.totalSize + \"px\"),\n _obj$1),\n },\n [\n _vm._l(_vm.pool, function (view) {\n return _c(\n _vm.itemTag,\n _vm._g(\n {\n key: view.nr.id,\n tag: \"component\",\n staticClass: \"vue-recycle-scroller__item-view\",\n class: [\n _vm.itemClass,\n {\n hover: !_vm.skipHover && _vm.hoverKey === view.nr.key,\n },\n ],\n style: _vm.ready\n ? {\n transform:\n \"translate\" +\n (_vm.direction === \"vertical\" ? \"Y\" : \"X\") +\n \"(\" +\n view.position +\n \"px) translate\" +\n (_vm.direction === \"vertical\" ? \"X\" : \"Y\") +\n \"(\" +\n view.offset +\n \"px)\",\n width: _vm.gridItems\n ? (_vm.direction === \"vertical\"\n ? _vm.itemSecondarySize || _vm.itemSize\n : _vm.itemSize) + \"px\"\n : undefined,\n height: _vm.gridItems\n ? (_vm.direction === \"horizontal\"\n ? _vm.itemSecondarySize || _vm.itemSize\n : _vm.itemSize) + \"px\"\n : undefined,\n }\n : null,\n },\n _vm.skipHover\n ? {}\n : {\n mouseenter: function () {\n _vm.hoverKey = view.nr.key;\n },\n mouseleave: function () {\n _vm.hoverKey = null;\n },\n }\n ),\n [\n _vm._t(\"default\", null, {\n item: view.item,\n index: view.nr.index,\n active: view.nr.used,\n }),\n ],\n 2\n )\n }),\n _vm._v(\" \"),\n _vm._t(\"empty\"),\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.$slots.after\n ? _c(\n \"div\",\n { ref: \"after\", staticClass: \"vue-recycle-scroller__slot\" },\n [_vm._t(\"after\")],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"ResizeObserver\", { on: { notify: _vm.handleResize } }),\n ],\n 1\n )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$2 = undefined;\n /* scoped */\n const __vue_scope_id__$2 = undefined;\n /* module identifier */\n const __vue_module_identifier__$2 = undefined;\n /* functional template */\n const __vue_is_functional_template__$2 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$2 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n __vue_inject_styles__$2,\n __vue_script__$2,\n __vue_scope_id__$2,\n __vue_is_functional_template__$2,\n __vue_module_identifier__$2,\n false,\n undefined,\n undefined,\n undefined\n );\n\n//\nvar script$1 = {\n name: 'DynamicScroller',\n components: {\n RecycleScroller: __vue_component__$2\n },\n provide() {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n if (!Array.isArray(entries)) {\n return;\n }\n for (const entry of entries) {\n if (entry.target) {\n const event = new CustomEvent('resize', {\n detail: {\n contentRect: entry.contentRect\n }\n });\n entry.target.dispatchEvent(event);\n }\n }\n });\n });\n }\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver\n };\n },\n inheritAttrs: false,\n props: {\n ...props,\n minItemSize: {\n type: [Number, String],\n required: true\n }\n },\n data() {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n validSizes: {},\n keyField: this.keyField,\n simpleArray: false\n }\n };\n },\n computed: {\n simpleArray,\n itemsWithSize() {\n const result = [];\n const {\n items,\n keyField,\n simpleArray\n } = this;\n const sizes = this.vscrollData.sizes;\n const l = items.length;\n for (let i = 0; i < l; i++) {\n const item = items[i];\n const id = simpleArray ? i : item[keyField];\n let size = sizes[id];\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n result.push({\n item,\n id,\n size\n });\n }\n return result;\n },\n listeners() {\n const listeners = {};\n for (const key in this.$listeners) {\n if (key !== 'resize' && key !== 'visible') {\n listeners[key] = this.$listeners[key];\n }\n }\n return listeners;\n }\n },\n watch: {\n items() {\n this.forceUpdate(false);\n },\n simpleArray: {\n handler(value) {\n this.vscrollData.simpleArray = value;\n },\n immediate: true\n },\n direction(value) {\n this.forceUpdate(true);\n },\n itemsWithSize(next, prev) {\n const scrollTop = this.$el.scrollTop;\n\n // Calculate total diff between prev and next sizes\n // over current scroll top. Then add it to scrollTop to\n // avoid jumping the contents that the user is seeing.\n let prevActiveTop = 0;\n let activeTop = 0;\n const length = Math.min(next.length, prev.length);\n for (let i = 0; i < length; i++) {\n if (prevActiveTop >= scrollTop) {\n break;\n }\n prevActiveTop += prev[i].size || this.minItemSize;\n activeTop += next[i].size || this.minItemSize;\n }\n const offset = activeTop - prevActiveTop;\n if (offset === 0) {\n return;\n }\n this.$el.scrollTop += offset;\n }\n },\n beforeCreate() {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n },\n activated() {\n this.vscrollData.active = true;\n },\n deactivated() {\n this.vscrollData.active = false;\n },\n methods: {\n onScrollerResize() {\n const scroller = this.$refs.scroller;\n if (scroller) {\n this.forceUpdate();\n }\n this.$emit('resize');\n },\n onScrollerVisible() {\n this.$emit('vscroll:update', {\n force: false\n });\n this.$emit('visible');\n },\n forceUpdate(clear = true) {\n if (clear || this.simpleArray) {\n this.vscrollData.validSizes = {};\n }\n this.$emit('vscroll:update', {\n force: true\n });\n },\n scrollToItem(index) {\n const scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n getItemSize(item, index = undefined) {\n const id = this.simpleArray ? index != null ? index : this.items.indexOf(item) : item[this.keyField];\n return this.vscrollData.sizes[id] || 0;\n },\n scrollToBottom() {\n if (this.$_scrollingToBottom) return;\n this.$_scrollingToBottom = true;\n const el = this.$el;\n // Item is inserted to the DOM\n this.$nextTick(() => {\n el.scrollTop = el.scrollHeight + 5000;\n // Item sizes are computed\n const cb = () => {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight + 5000;\n if (this.$_undefinedSizes === 0) {\n this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n requestAnimationFrame(cb);\n });\n }\n }\n};\n\n/* script */\nconst __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__ = function () {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"RecycleScroller\",\n _vm._g(\n _vm._b(\n {\n ref: \"scroller\",\n attrs: {\n items: _vm.itemsWithSize,\n \"min-item-size\": _vm.minItemSize,\n direction: _vm.direction,\n \"key-field\": \"id\",\n \"list-tag\": _vm.listTag,\n \"item-tag\": _vm.itemTag,\n },\n on: { resize: _vm.onScrollerResize, visible: _vm.onScrollerVisible },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function (ref) {\n var itemWithSize = ref.item;\n var index = ref.index;\n var active = ref.active;\n return [\n _vm._t(\"default\", null, null, {\n item: itemWithSize.item,\n index: index,\n active: active,\n itemWithSize: itemWithSize,\n }),\n ]\n },\n },\n ],\n null,\n true\n ),\n },\n \"RecycleScroller\",\n _vm.$attrs,\n false\n ),\n _vm.listeners\n ),\n [\n _vm._v(\" \"),\n _c(\"template\", { slot: \"before\" }, [_vm._t(\"before\")], 2),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"after\" }, [_vm._t(\"after\")], 2),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"empty\" }, [_vm._t(\"empty\")], 2),\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$1 = undefined;\n /* scoped */\n const __vue_scope_id__$1 = undefined;\n /* module identifier */\n const __vue_module_identifier__$1 = undefined;\n /* functional template */\n const __vue_is_functional_template__$1 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$1 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__$1,\n __vue_script__$1,\n __vue_scope_id__$1,\n __vue_is_functional_template__$1,\n __vue_module_identifier__$1,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script = {\n name: 'DynamicScrollerItem',\n inject: ['vscrollData', 'vscrollParent', 'vscrollResizeObserver'],\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true\n },\n watchData: {\n type: Boolean,\n default: false\n },\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true\n },\n index: {\n type: Number,\n default: undefined\n },\n sizeDependencies: {\n type: [Array, Object],\n default: null\n },\n emitResize: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n }\n },\n computed: {\n id() {\n if (this.vscrollData.simpleArray) return this.index;\n // eslint-disable-next-line no-prototype-builtins\n if (this.item.hasOwnProperty(this.vscrollData.keyField)) return this.item[this.vscrollData.keyField];\n throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`);\n },\n size() {\n return this.vscrollData.validSizes[this.id] && this.vscrollData.sizes[this.id] || 0;\n },\n finalActive() {\n return this.active && this.vscrollData.active;\n }\n },\n watch: {\n watchData: 'updateWatchData',\n id() {\n if (!this.size) {\n this.onDataUpdate();\n }\n },\n finalActive(value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n }\n },\n created() {\n if (this.$isServer) return;\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n if (!this.vscrollResizeObserver) {\n for (const k in this.sizeDependencies) {\n this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);\n }\n this.vscrollParent.$on('vscroll:update', this.onVscrollUpdate);\n this.vscrollParent.$on('vscroll:update-size', this.onVscrollUpdateSize);\n }\n },\n mounted() {\n if (this.vscrollData.active) {\n this.updateSize();\n this.observeSize();\n }\n },\n beforeDestroy() {\n this.vscrollParent.$off('vscroll:update', this.onVscrollUpdate);\n this.vscrollParent.$off('vscroll:update-size', this.onVscrollUpdateSize);\n this.unobserveSize();\n },\n methods: {\n updateSize() {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n updateWatchData() {\n if (this.watchData && !this.vscrollResizeObserver) {\n this.$_watchData = this.$watch('item', () => {\n this.onDataUpdate();\n }, {\n deep: true\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n onVscrollUpdate({\n force\n }) {\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n onDataUpdate() {\n this.updateSize();\n },\n computeSize(id) {\n this.$nextTick(() => {\n if (this.id === id) {\n const width = this.$el.offsetWidth;\n const height = this.$el.offsetHeight;\n this.applySize(width, height);\n }\n this.$_pendingSizeUpdate = null;\n });\n },\n applySize(width, height) {\n const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);\n if (size && this.size !== size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n this.$set(this.vscrollData.sizes, this.id, size);\n this.$set(this.vscrollData.validSizes, this.id, true);\n if (this.emitResize) this.$emit('resize', this.id);\n }\n },\n observeSize() {\n if (!this.vscrollResizeObserver || !this.$el.parentNode) return;\n this.vscrollResizeObserver.observe(this.$el.parentNode);\n this.$el.parentNode.addEventListener('resize', this.onResize);\n },\n unobserveSize() {\n if (!this.vscrollResizeObserver) return;\n this.vscrollResizeObserver.unobserve(this.$el.parentNode);\n this.$el.parentNode.removeEventListener('resize', this.onResize);\n },\n onResize(event) {\n const {\n width,\n height\n } = event.detail.contentRect;\n this.applySize(width, height);\n }\n },\n render(h) {\n return h(this.tag, this.$slots.default);\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = undefined;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = /*#__PURE__*/normalizeComponent(\n {},\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction IdState ({\n idProp = vm => vm.item.id\n} = {}) {\n const store = {};\n const vm = new Vue({\n data() {\n return {\n store\n };\n }\n });\n\n // @vue/component\n return {\n data() {\n return {\n idState: null\n };\n },\n created() {\n this.$_id = null;\n if (typeof idProp === 'function') {\n this.$_getId = () => idProp.call(this, this);\n } else {\n this.$_getId = () => this[idProp];\n }\n this.$watch(this.$_getId, {\n handler(value) {\n this.$nextTick(() => {\n this.$_id = value;\n });\n },\n immediate: true\n });\n this.$_updateIdState();\n },\n beforeUpdate() {\n this.$_updateIdState();\n },\n methods: {\n /**\n * Initialize an idState\n * @param {number|string} id Unique id for the data\n */\n $_idStateInit(id) {\n const factory = this.$options.idState;\n if (typeof factory === 'function') {\n const data = factory.call(this, this);\n vm.$set(store, id, data);\n this.$_id = id;\n return data;\n } else {\n throw new Error('[mixin IdState] Missing `idState` function on component definition.');\n }\n },\n /**\n * Ensure idState is created and up-to-date\n */\n $_updateIdState() {\n const id = this.$_getId();\n if (id == null) {\n console.warn(`No id found for IdState with idProp: '${idProp}'.`);\n }\n if (id !== this.$_id) {\n if (!store[id]) {\n this.$_idStateInit(id);\n }\n this.idState = store[id];\n }\n }\n }\n };\n}\n\nfunction registerComponents(Vue, prefix) {\n Vue.component(`${prefix}recycle-scroller`, __vue_component__$2);\n Vue.component(`${prefix}RecycleScroller`, __vue_component__$2);\n Vue.component(`${prefix}dynamic-scroller`, __vue_component__$1);\n Vue.component(`${prefix}DynamicScroller`, __vue_component__$1);\n Vue.component(`${prefix}dynamic-scroller-item`, __vue_component__);\n Vue.component(`${prefix}DynamicScrollerItem`, __vue_component__);\n}\nconst plugin = {\n // eslint-disable-next-line no-undef\n version: \"1.1.2\",\n install(Vue, options) {\n const finalOptions = Object.assign({}, {\n installComponents: true,\n componentsPrefix: ''\n }, options);\n for (const key in finalOptions) {\n if (typeof finalOptions[key] !== 'undefined') {\n config[key] = finalOptions[key];\n }\n }\n if (finalOptions.installComponents) {\n registerComponents(Vue, finalOptions.componentsPrefix);\n }\n }\n};\n\n// Auto-install\nlet GlobalVue = null;\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport { __vue_component__$1 as DynamicScroller, __vue_component__ as DynamicScrollerItem, IdState, __vue_component__$2 as RecycleScroller, plugin as default };\n//# sourceMappingURL=vue-virtual-scroller.esm.js.map\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('td',{staticClass:\"files-list__row-checkbox\"},[(_vm.active)?_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.t('files', 'Select the row for {displayName}', { displayName: _vm.displayName }),\"checked\":_vm.selectedFiles,\"value\":_vm.fileid,\"name\":\"selectedFiles\"},on:{\"update:checked\":_vm.onSelectionChange}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\",on:{\"click\":_vm.execDefaultAction}},[(_vm.source.type === 'folder')?_c('FolderIcon'):(_vm.previewUrl && !_vm.backgroundFailed)?_c('span',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",style:({ backgroundImage: _vm.backgroundImage })}):(_vm.mimeIconUrl)?_c('span',{staticClass:\"files-list__row-icon-preview files-list__row-icon-preview--mime\",style:({ backgroundImage: _vm.mimeIconUrl })}):_c('FileIcon'),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\",attrs:{\"aria-label\":_vm.t('files', 'Favorite')}},[_c('FavoriteIcon',{attrs:{\"aria-hidden\":true}})],1):_vm._e()],1),_vm._v(\" \"),_c('form',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isRenaming),expression:\"isRenaming\"},{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.stopRenaming),expression:\"stopRenaming\"}],staticClass:\"files-list__row-rename\",attrs:{\"aria-hidden\":!_vm.isRenaming,\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"aria-label\":_vm.t('files', 'File name'),\"autofocus\":true,\"minlength\":1,\"required\":true,\"value\":_vm.newName,\"enterkeyhint\":\"done\"},on:{\"update:value\":function($event){_vm.newName=$event},\"keyup\":[_vm.checkInputValidity,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}]}})],1),_vm._v(\" \"),_c('a',_vm._b({directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenaming),expression:\"!isRenaming\"}],ref:\"basename\",attrs:{\"aria-hidden\":_vm.isRenaming},on:{\"click\":_vm.execDefaultAction}},'a',_vm.linkTo,false),[_c('span',{staticClass:\"files-list__row-name-text\"},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.displayName)}}),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.source.extension)}})])])]),_vm._v(\" \"),_c('td',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],staticClass:\"files-list__row-actions\",class:`files-list__row-actions-${_vm.uniqueId}`},[(_vm.active)?_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.boundariesElement,\"container\":_vm.boundariesElement,\"disabled\":_vm.source._loading,\"force-title\":true,\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-action-' + action.id,attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName([_vm.source], _vm.currentView))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],1),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:({ opacity: _vm.sizeOpacity }),on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.mtime))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView?.id}-${column.id}`,on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.active)?_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}}):_vm._e()],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var $placeholder = Symbol();\n\nvar $fakeParent = Symbol();\n\nvar $nextSiblingPatched = Symbol();\n\nvar $childNodesPatched = Symbol();\n\nvar isFrag = function isFrag(node) {\n return \"frag\" in node;\n};\n\nvar parentNodeDescriptor = {\n get: function get() {\n return this[$fakeParent] || this.parentElement;\n },\n configurable: true\n};\n\nvar patchParentNode = function patchParentNode(node, fakeParent) {\n if ($fakeParent in node) {\n return;\n }\n node[$fakeParent] = fakeParent;\n Object.defineProperty(node, \"parentNode\", parentNodeDescriptor);\n};\n\nvar nextSiblingDescriptor = {\n get: function get() {\n var childNodes = this.parentNode.childNodes;\n var index = childNodes.indexOf(this);\n if (index > -1) {\n return childNodes[index + 1] || null;\n }\n return null;\n }\n};\n\nvar patchNextSibling = function patchNextSibling(node) {\n if ($nextSiblingPatched in node) {\n return;\n }\n node[$nextSiblingPatched] = true;\n Object.defineProperty(node, \"nextSibling\", nextSiblingDescriptor);\n};\n\nvar getTopFragment = function getTopFragment(node, fromParent) {\n while (node.parentNode !== fromParent) {\n var _node = node, parentNode = _node.parentNode;\n if (parentNode) {\n node = parentNode;\n }\n }\n return node;\n};\n\nvar getChildNodes;\n\nvar getChildNodesWithFragments = function getChildNodesWithFragments(node) {\n if (!getChildNodes) {\n var _childNodesDescriptor = Object.getOwnPropertyDescriptor(Node.prototype, \"childNodes\");\n getChildNodes = _childNodesDescriptor.get;\n }\n var realChildNodes = getChildNodes.apply(node);\n var childNodes = Array.from(realChildNodes).map((function(childNode) {\n return getTopFragment(childNode, node);\n }));\n return childNodes.filter((function(childNode, index) {\n return childNode !== childNodes[index - 1];\n }));\n};\n\nvar childNodesDescriptor = {\n get: function get() {\n return this.frag || getChildNodesWithFragments(this);\n }\n};\n\nvar firstChildDescriptor = {\n get: function get() {\n return this.childNodes[0] || null;\n }\n};\n\nfunction hasChildNodes() {\n return this.childNodes.length > 0;\n}\n\nvar patchChildNodes = function patchChildNodes(node) {\n if ($childNodesPatched in node) {\n return;\n }\n node[$childNodesPatched] = true;\n Object.defineProperties(node, {\n childNodes: childNodesDescriptor,\n firstChild: firstChildDescriptor\n });\n node.hasChildNodes = hasChildNodes;\n};\n\nfunction before() {\n var _this$frag$;\n (_this$frag$ = this.frag[0]).before.apply(_this$frag$, arguments);\n}\n\nfunction remove() {\n var frag = this.frag;\n var removed = frag.splice(0, frag.length);\n removed.forEach((function(node) {\n node.remove();\n }));\n}\n\nvar getFragmentLeafNodes = function getFragmentLeafNodes(children) {\n var _Array$prototype;\n return (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, children.map((function(childNode) {\n return isFrag(childNode) ? getFragmentLeafNodes(childNode.frag) : childNode;\n })));\n};\n\nvar addPlaceholder = function addPlaceholder(node, insertBeforeNode) {\n var placeholder = node[$placeholder];\n insertBeforeNode.before(placeholder);\n patchParentNode(placeholder, node);\n node.frag.unshift(placeholder);\n};\n\nfunction removeChild(node) {\n if (isFrag(this)) {\n var hasChildInFragment = this.frag.indexOf(node);\n if (hasChildInFragment > -1) {\n var _this$frag$splice = this.frag.splice(hasChildInFragment, 1), removedNode = _this$frag$splice[0];\n if (this.frag.length === 0) {\n addPlaceholder(this, removedNode);\n }\n node.remove();\n }\n } else {\n var children = getChildNodesWithFragments(this);\n var hasChild = children.indexOf(node);\n if (hasChild > -1) {\n node.remove();\n }\n }\n return node;\n}\n\nfunction insertBefore(insertNode, insertBeforeNode) {\n var _this = this;\n var insertNodes = insertNode.frag || [ insertNode ];\n if (isFrag(this)) {\n if (insertNode[$fakeParent] === this && insertNode.parentElement) {\n return insertNode;\n }\n var _frag = this.frag;\n if (insertBeforeNode) {\n var index = _frag.indexOf(insertBeforeNode);\n if (index > -1) {\n _frag.splice.apply(_frag, [ index, 0 ].concat(insertNodes));\n insertBeforeNode.before.apply(insertBeforeNode, insertNodes);\n }\n } else {\n var _lastNode = _frag[_frag.length - 1];\n _frag.push.apply(_frag, insertNodes);\n _lastNode.after.apply(_lastNode, insertNodes);\n }\n removePlaceholder(this);\n } else if (insertBeforeNode) {\n if (this.childNodes.includes(insertBeforeNode)) {\n insertBeforeNode.before.apply(insertBeforeNode, insertNodes);\n }\n } else {\n this.append.apply(this, insertNodes);\n }\n insertNodes.forEach((function(node) {\n patchParentNode(node, _this);\n }));\n var lastNode = insertNodes[insertNodes.length - 1];\n patchNextSibling(lastNode);\n return insertNode;\n}\n\nfunction appendChild(node) {\n if (node[$fakeParent] === this && node.parentElement) {\n return node;\n }\n var frag = this.frag;\n var lastChild = frag[frag.length - 1];\n lastChild.after(node);\n patchParentNode(node, this);\n removePlaceholder(this);\n frag.push(node);\n return node;\n}\n\nvar removePlaceholder = function removePlaceholder(node) {\n var placeholder = node[$placeholder];\n if (node.frag[0] === placeholder) {\n node.frag.shift();\n placeholder.remove();\n }\n};\n\nvar innerHTMLDescriptor = {\n set: function set(htmlString) {\n var _this2 = this;\n if (this.frag[0] !== this[$placeholder]) {\n this.frag.slice().forEach((function(child) {\n return _this2.removeChild(child);\n }));\n }\n if (htmlString) {\n var domify = document.createElement(\"div\");\n domify.innerHTML = htmlString;\n Array.from(domify.childNodes).forEach((function(node) {\n _this2.appendChild(node);\n }));\n }\n },\n get: function get() {\n return \"\";\n }\n};\n\nvar frag = {\n inserted: function inserted(element) {\n var parentNode = element.parentNode, nextSibling = element.nextSibling, previousSibling = element.previousSibling;\n var childNodes = Array.from(element.childNodes);\n var placeholder = document.createComment(\"\");\n if (childNodes.length === 0) {\n childNodes.push(placeholder);\n }\n element.frag = childNodes;\n element[$placeholder] = placeholder;\n var fragment = document.createDocumentFragment();\n fragment.append.apply(fragment, getFragmentLeafNodes(childNodes));\n element.replaceWith(fragment);\n childNodes.forEach((function(node) {\n patchParentNode(node, element);\n patchNextSibling(node);\n }));\n patchChildNodes(element);\n Object.assign(element, {\n remove: remove,\n appendChild: appendChild,\n insertBefore: insertBefore,\n removeChild: removeChild,\n before: before\n });\n Object.defineProperty(element, \"innerHTML\", innerHTMLDescriptor);\n if (parentNode) {\n Object.assign(parentNode, {\n removeChild: removeChild,\n insertBefore: insertBefore\n });\n patchParentNode(element, parentNode);\n patchChildNodes(parentNode);\n }\n if (nextSibling) {\n patchNextSibling(element);\n }\n if (previousSibling) {\n patchNextSibling(previousSibling);\n }\n },\n unbind: function unbind(element) {\n element.remove();\n }\n};\n\nvar fragment = {\n name: \"Fragment\",\n directives: {\n frag: frag\n },\n render: function render(h) {\n return h(\"div\", {\n directives: [ {\n name: \"frag\"\n } ]\n }, this.$slots[\"default\"]);\n }\n};\n\nexport { fragment as Fragment, frag as default };\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nvar __defProp$b = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, __spreadProps$8(__spreadValues$b({}, options), {\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n }));\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => fn(param)));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nfunction createInjectionState(composable) {\n const key = Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provide(key, state);\n return state;\n };\n const useInjectedState = () => inject(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n return;\n }\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$c.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(b)) {\n if (__propIsEnum$c.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = __spreadValues$a({}, obj);\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(\n () => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0])))\n );\n}\n\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = toValue(ms);\n const maxDuration = toValue(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = defaultValue;\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = defaultValue;\n trigger();\n }, toValue(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction syncRef(left, right, options = {}) {\n var _a, _b;\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options;\n let watchLeft;\n let watchRight;\n const transformLTR = (_a = transform.ltr) != null ? _a : (v) => v;\n const transformRTL = (_b = transform.rtl) != null ? _b : (v) => v;\n if (direction === \"both\" || direction === \"ltr\") {\n watchLeft = watch(\n left,\n (newValue) => right.value = transformLTR(newValue),\n { flush, deep, immediate }\n );\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchRight = watch(\n right,\n (newValue) => left.value = transformRTL(newValue),\n { flush, deep, immediate }\n );\n }\n return () => {\n watchLeft == null ? void 0 : watchLeft();\n watchRight == null ? void 0 : watchRight();\n };\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(\n source,\n (newValue) => targets.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction toRefs(objectRef) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = __spreadProps$7(__spreadValues$9({}, objectRef.value), { [key]: v });\n Object.setPrototypeOf(newObject, objectRef.value);\n objectRef.value = newObject;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n if (getCurrentInstance())\n onBeforeMount(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n if (getCurrentInstance())\n onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n if (getCurrentInstance())\n onMounted(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n if (getCurrentInstance())\n onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(\n () => toValue(\n toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n )\n );\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(\n () => toValue(\n !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n )\n );\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n return computed(\n () => toValue(list).slice(formIndex).some(\n (element, index, array) => comparator(toValue(element), toValue(value), index, toValue(array))\n )\n );\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n return computed(() => {\n const resolved = toValue(list);\n return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue(list).map((element) => toValue(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n const count = ref(initialValue);\n const {\n max = Infinity,\n min = -Infinity\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = initialValue) => {\n initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2;\n return $1 || ((_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) || match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return /* @__PURE__ */ new Date(NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return __spreadValues$8({\n counter,\n reset\n }, controls);\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return __spreadValues$7({\n ready\n }, controls);\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue(truthyValue);\n _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [\n ...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)\n ];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = new Array(oldList.length);\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$5(_a, [\n \"eventFilter\"\n ]);\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchAtMost(source, cb, options) {\n const _a = options, {\n count\n } = _a, watchOptions = __objRest$4(_a, [\n \"count\"\n ]);\n const current = ref(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n const _a = options, {\n debounce = 0,\n maxWait = void 0\n } = _a, watchOptions = __objRest$3(_a, [\n \"debounce\",\n \"maxWait\"\n ]);\n return watchWithFilter(\n source,\n cb,\n __spreadProps$6(__spreadValues$6({}, watchOptions), {\n eventFilter: debounceFilter(debounce, { maxWait })\n })\n );\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n __spreadProps$5(__spreadValues$5({}, options), {\n deep: true\n })\n );\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$2(_a, [\n \"eventFilter\"\n ]);\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n __spreadProps$4(__spreadValues$4({}, watchOptions), { flush: \"sync\" })\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n __spreadProps$3(__spreadValues$3({}, options), {\n immediate: true\n })\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n const _a = options, {\n eventFilter: filter\n } = _a, watchOptions = __objRest$1(_a, [\n \"eventFilter\"\n ]);\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(\n source,\n cb,\n __spreadProps$2(__spreadValues$2({}, watchOptions), {\n eventFilter\n })\n );\n return { stop, pause, resume, isActive };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n const _a = options, {\n throttle = 0,\n trailing = true,\n leading = true\n } = _a, watchOptions = __objRest(_a, [\n \"throttle\",\n \"trailing\",\n \"leading\"\n ]);\n return watchWithFilter(\n source,\n cb,\n __spreadProps$1(__spreadValues$1({}, watchOptions), {\n eventFilter: throttleFilter(throttle, trailing, leading)\n })\n );\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return __spreadProps(__spreadValues({}, res), {\n trigger\n });\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue(item));\n return toValue(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return watch(\n source,\n (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n },\n options\n );\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isClient, isDef, isDefined, isIOS, isObject, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { defineComponent, ref, h, watch, computed, reactive, shallowRef, nextTick, getCurrentInstance, onMounted, watchEffect, toRefs } from 'vue-demi';\nimport { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage as useStorage$1, isClient as isClient$1, useDraggable, useElementBounding, useElementSize as useElementSize$1, useElementVisibility as useElementVisibility$1, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePointerLock, usePreferredColorScheme, usePreferredContrast, usePreferredDark as usePreferredDark$1, usePreferredLanguages, usePreferredReducedMotion, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';\nimport { toValue, isClient, noop, tryOnScopeDispose, isIOS, directiveHooks, pausableWatch, toRef, tryOnMounted, useToggle, notNullish, promiseTimeout, until, useDebounceFn, useThrottleFn } from '@vueuse/shared';\n\nconst OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnClickOutside\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onClickOutside$1(target, (e) => {\n emit(\"trigger\", e);\n }, props.options);\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, options2));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n if (el)\n shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst vOnClickOutside = {\n [directiveHooks.mounted](el, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === \"function\") {\n el.__onClickOutside_stop = onClickOutside(el, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n el.__onClickOutside_stop = onClickOutside(el, handler, Object.assign({ capture }, options));\n }\n },\n [directiveHooks.unmounted](el) {\n el.__onClickOutside_stop();\n }\n};\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$g.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n if (__getOwnPropSymbols$g)\n for (var prop of __getOwnPropSymbols$g(b)) {\n if (__propIsEnum$g.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n }\n return a;\n};\nconst vOnKeyStroke = {\n [directiveHooks.mounted](el, binding) {\n var _a, _b;\n const keys = (_b = (_a = binding.arg) == null ? void 0 : _a.split(\",\")) != null ? _b : true;\n if (typeof binding.value === \"function\") {\n onKeyStroke(keys, binding.value, {\n target: el\n });\n } else {\n const [handler, options] = binding.value;\n onKeyStroke(keys, handler, __spreadValues$e({\n target: el\n }, options));\n }\n }\n};\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n timeout = setTimeout(\n () => handler(ev),\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions);\n useEventListener(elementRef, \"pointerup\", clear, listenerOptions);\n useEventListener(elementRef, \"pointerleave\", clear, listenerOptions);\n}\n\nconst OnLongPress = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnLongPress\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onLongPress(\n target,\n (e) => {\n emit(\"trigger\", e);\n },\n props.options\n );\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nconst vOnLongPress = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n onLongPress(el, binding.value, { modifiers: binding.modifiers });\n else\n onLongPress(el, ...binding.value);\n }\n};\n\nconst UseActiveElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseActiveElement\",\n setup(props, { slots }) {\n const data = reactive({\n element: useActiveElement()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBattery = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBattery\",\n setup(props, { slots }) {\n const data = reactive(useBattery(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBrowserLocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBrowserLocation\",\n setup(props, { slots }) {\n const data = reactive(useBrowserLocation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nvar __defProp$d = Object.defineProperty;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$f.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n if (__getOwnPropSymbols$f)\n for (var prop of __getOwnPropSymbols$f(b)) {\n if (__propIsEnum$f.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n }\n return a;\n};\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const data = (shallow ? shallowRef : ref)(defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n }\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit !== null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return __spreadValues$d(__spreadValues$d({}, rawInit), value);\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n if (getCurrentInstance()) {\n onMounted(() => {\n isMounted.value = true;\n });\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", update);\n else\n mediaQuery.removeListener(update);\n };\n const update = () => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toRef(query).value);\n matches.value = !!(mediaQuery == null ? void 0 : mediaQuery.matches);\n if (!mediaQuery)\n return;\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", update);\n else\n mediaQuery.addListener(update);\n };\n watchEffect(update);\n tryOnScopeDispose(() => cleanup());\n return matches;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$e.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n if (__getOwnPropSymbols$e)\n for (var prop of __getOwnPropSymbols$e(b)) {\n if (__propIsEnum$e.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n }\n return a;\n};\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = __spreadValues$c({\n auto: \"\",\n light: \"light\",\n dark: \"dark\"\n }, options.modes || {});\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(\n () => store.value === \"auto\" ? system.value : store.value\n );\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nconst UseColorMode = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseColorMode\",\n props: [\"selector\", \"attribute\", \"modes\", \"onChanged\", \"storageKey\", \"storage\", \"emitAuto\"],\n setup(props, { slots }) {\n const mode = useColorMode(props);\n const data = reactive({\n mode,\n system: mode.system,\n store: mode.store\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDark\",\n props: [\"selector\", \"attribute\", \"valueDark\", \"valueLight\", \"onChanged\", \"storageKey\", \"storage\"],\n setup(props, { slots }) {\n const isDark = useDark(props);\n const data = reactive({\n isDark,\n toggleDark: useToggle(isDark)\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceMotion\",\n setup(props, { slots }) {\n const data = reactive(useDeviceMotion());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceOrientation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceOrientation\",\n setup(props, { slots }) {\n const data = reactive(useDeviceOrientation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicePixelRatio = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicePixelRatio\",\n setup(props, { slots }) {\n const data = reactive({\n pixelRatio: useDevicePixelRatio()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicesList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicesList\",\n props: [\"onUpdated\", \"requestPermissions\", \"constraints\"],\n setup(props, { slots }) {\n const data = reactive(useDevicesList(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDocumentVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDocumentVisibility\",\n setup(props, { slots }) {\n const data = reactive({\n visibility: useDocumentVisibility()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$b = Object.defineProperty;\nvar __defProps$9 = Object.defineProperties;\nvar __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));\nconst UseDraggable = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDraggable\",\n props: [\n \"storageKey\",\n \"storageType\",\n \"initialValue\",\n \"exact\",\n \"preventDefault\",\n \"stopPropagation\",\n \"pointerTypes\",\n \"as\",\n \"handle\",\n \"axis\",\n \"onStart\",\n \"onMove\",\n \"onEnd\"\n ],\n setup(props, { slots }) {\n const target = ref();\n const handle = computed(() => {\n var _a;\n return (_a = props.handle) != null ? _a : target.value;\n });\n const storageValue = props.storageKey && useStorage$1(\n props.storageKey,\n toValue(props.initialValue) || { x: 0, y: 0 },\n isClient$1 ? props.storageType === \"session\" ? sessionStorage : localStorage : void 0\n );\n const initialValue = storageValue || props.initialValue || { x: 0, y: 0 };\n const onEnd = (position, event) => {\n var _a;\n (_a = props.onEnd) == null ? void 0 : _a.call(props, position, event);\n if (!storageValue)\n return;\n storageValue.value.x = position.x;\n storageValue.value.y = position.y;\n };\n const data = reactive(useDraggable(target, __spreadProps$9(__spreadValues$b({}, props), {\n handle,\n initialValue,\n onEnd\n })));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));\n };\n }\n});\n\nconst UseElementBounding = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementBounding\",\n props: [\"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementBounding(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nconst vElementHover = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const isHovered = useElementHover(el);\n watch(isHovered, (v) => binding.value(v));\n }\n }\n};\n\nconst UseElementSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementSize\",\n props: [\"width\", \"height\", \"box\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementSize$1(target, { width: props.width, height: props.height }, { box: props.box }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$c.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$c.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$1(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(\n () => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]\n );\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = Number.parseFloat(styles.width);\n height.value = Number.parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n return {\n width,\n height\n };\n}\n\nconst vElementSize = {\n [directiveHooks.mounted](el, binding) {\n var _a;\n const handler = typeof binding.value === \"function\" ? binding.value : (_a = binding.value) == null ? void 0 : _a[0];\n const options = typeof binding.value === \"function\" ? [] : binding.value.slice(1);\n const { width, height } = useElementSize(el, ...options);\n watch([width, height], ([width2, height2]) => handler({ width: width2, height: height2 }));\n }\n};\n\nconst UseElementVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementVisibility\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive({\n isVisible: useElementVisibility$1(target)\n });\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n ([{ isIntersecting }]) => {\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window\n }\n );\n return elementIsVisible;\n}\n\nconst vElementVisibility = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const isVisible = useElementVisibility(el);\n watch(isVisible, (v) => handler(v), { immediate: true });\n } else {\n const [handler, options] = binding.value;\n const isVisible = useElementVisibility(el, options);\n watch(isVisible, (v) => handler(v), { immediate: true });\n }\n }\n};\n\nconst UseEyeDropper = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseEyeDropper\",\n props: {\n sRGBHex: String\n },\n setup(props, { slots }) {\n const data = reactive(useEyeDropper());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseFullscreen = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseFullscreen\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useFullscreen(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseGeolocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseGeolocation\",\n props: [\"enableHighAccuracy\", \"maximumAge\", \"timeout\", \"navigator\"],\n setup(props, { slots }) {\n const data = reactive(useGeolocation(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseIdle = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseIdle\",\n props: [\"timeout\", \"events\", \"listenForVisibilityChange\", \"initialState\"],\n setup(props, { slots }) {\n const data = reactive(useIdle(props.timeout, props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$a = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return __spreadProps$8(__spreadValues$a({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n });\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n __spreadValues$9({\n resetOnExecute: true\n }, asyncStateOptions)\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst UseImage = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseImage\",\n props: [\n \"src\",\n \"srcset\",\n \"sizes\",\n \"as\",\n \"alt\",\n \"class\",\n \"loading\",\n \"crossorigin\",\n \"referrerPolicy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useImage(props));\n return () => {\n if (data.isLoading && slots.loading)\n return slots.loading(data);\n else if (data.error && slots.error)\n return slots.error(data.error);\n if (slots.default)\n return slots.default(data);\n return h(props.as || \"img\", props);\n };\n }\n});\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\"\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n const el = target === window ? target.document.documentElement : target === document ? target.documentElement : target;\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === document && !scrollTop)\n scrollTop = document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n const eventTarget = e.target === document ? e.target.documentElement : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (_element)\n setArrivedState(_element);\n }\n };\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100\n } = options;\n const state = reactive(useScroll(\n element,\n __spreadProps$7(__spreadValues$8({}, options), {\n offset: __spreadValues$8({\n [direction]: (_a = options.distance) != null ? _a : 0\n }, options.offset)\n })\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n function checkAndLoad() {\n state.measure();\n const el = toValue(element);\n if (!el)\n return;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? el.scrollHeight <= el.clientHeight : el.scrollWidth <= el.clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], toValue(element)],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst vInfiniteScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useInfiniteScroll(el, binding.value);\n else\n useInfiniteScroll(el, ...binding.value);\n }\n};\n\nconst vIntersectionObserver = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useIntersectionObserver(el, binding.value);\n else\n useIntersectionObserver(el, ...binding.value);\n }\n};\n\nconst UseMouse = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouse\",\n props: [\"touch\", \"resetOnTouchEnds\", \"initialValue\"],\n setup(props, { slots }) {\n const data = reactive(useMouse(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseMouseInElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouseElement\",\n props: [\"handleOutside\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMouseInElement(target, props));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nconst UseMousePressed = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMousePressed\",\n props: [\"touch\", \"initialValue\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMousePressed(__spreadProps$6(__spreadValues$7({}, props), { target })));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseNetwork = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNetwork\",\n setup(props, { slots }) {\n const data = reactive(useNetwork());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nconst UseNow = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNow\",\n props: [\"interval\"],\n setup(props, { slots }) {\n const data = reactive(useNow(__spreadProps$5(__spreadValues$6({}, props), { controls: true })));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseObjectUrl = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseObjectUrl\",\n props: [\n \"object\"\n ],\n setup(props, { slots }) {\n const object = toRef(props, \"object\");\n const url = useObjectUrl(object);\n return () => {\n if (slots.default && url.value)\n return slots.default(url);\n };\n }\n});\n\nvar __defProp$5 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nconst UseOffsetPagination = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOffsetPagination\",\n props: [\n \"total\",\n \"page\",\n \"pageSize\",\n \"onPageChange\",\n \"onPageSizeChange\",\n \"onPageCountChange\"\n ],\n emits: [\n \"page-change\",\n \"page-size-change\",\n \"page-count-change\"\n ],\n setup(props, { slots, emit }) {\n const data = reactive(useOffsetPagination(__spreadProps$4(__spreadValues$5({}, props), {\n onPageChange(...args) {\n var _a;\n (_a = props.onPageChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-change\", ...args);\n },\n onPageSizeChange(...args) {\n var _a;\n (_a = props.onPageSizeChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-size-change\", ...args);\n },\n onPageCountChange(...args) {\n var _a;\n (_a = props.onPageCountChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-count-change\", ...args);\n }\n })));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseOnline = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOnline\",\n setup(props, { slots }) {\n const data = reactive({\n isOnline: useOnline()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePageLeave = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePageLeave\",\n setup(props, { slots }) {\n const data = reactive({\n isLeft: usePageLeave()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nconst UsePointer = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePointer\",\n props: [\n \"pointerTypes\",\n \"initialValue\",\n \"target\"\n ],\n setup(props, { slots }) {\n const el = ref(null);\n const data = reactive(usePointer(__spreadProps$3(__spreadValues$4({}, props), {\n target: props.target === \"self\" ? el : defaultWindow\n })));\n return () => {\n if (slots.default)\n return slots.default(data, { ref: el });\n };\n }\n});\n\nconst UsePointerLock = /* #__PURE__ */ defineComponent({\n name: \"UsePointerLock\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(usePointerLock(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UsePreferredColorScheme = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredColorScheme\",\n setup(props, { slots }) {\n const data = reactive({\n colorScheme: usePreferredColorScheme()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredContrast = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredContrast\",\n setup(props, { slots }) {\n const data = reactive({\n contrast: usePreferredContrast()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredDark\",\n setup(props, { slots }) {\n const data = reactive({\n prefersDark: usePreferredDark$1()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredLanguages = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredLanguages\",\n setup(props, { slots }) {\n const data = reactive({\n languages: usePreferredLanguages()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredReducedMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredReducedMotion\",\n setup(props, { slots }) {\n const data = reactive({\n motion: usePreferredReducedMotion()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(\n () => unrefElement(target),\n (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n },\n { immediate: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nconst UseScreenSafeArea = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseScreenSafeArea\",\n props: {\n top: Boolean,\n right: Boolean,\n bottom: Boolean,\n left: Boolean\n },\n setup(props, { slots }) {\n const {\n top,\n right,\n bottom,\n left\n } = useScreenSafeArea();\n return () => {\n if (slots.default) {\n return h(\"div\", {\n style: {\n paddingTop: props.top ? top.value : \"\",\n paddingRight: props.right ? right.value : \"\",\n paddingBottom: props.bottom ? bottom.value : \"\",\n paddingLeft: props.left ? left.value : \"\",\n boxSizing: \"border-box\",\n maxHeight: \"100vh\",\n maxWidth: \"100vw\",\n overflow: \"auto\"\n }\n }, slots.default());\n }\n };\n }\n});\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nconst vScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const state = useScroll(el, {\n onScroll() {\n handler(state);\n },\n onStop() {\n handler(state);\n }\n });\n } else {\n const [handler, options] = binding.value;\n const state = useScroll(el, __spreadProps$2(__spreadValues$3({}, options), {\n onScroll(e) {\n var _a;\n (_a = options.onScroll) == null ? void 0 : _a.call(options, e);\n handler(state);\n },\n onStop(e) {\n var _a;\n (_a = options.onStop) == null ? void 0 : _a.call(options, e);\n handler(state);\n }\n }));\n }\n }\n};\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n watch(toRef(element), (el) => {\n if (el) {\n const ele = el;\n initialOverflow = ele.style.overflow;\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const ele = toValue(element);\n if (!ele || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n ele,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n ele.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const ele = toValue(element);\n if (!ele || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n ele.style.overflow = initialOverflow;\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction onScrollLock() {\n let isMounted = false;\n const state = ref(false);\n return (el, binding) => {\n state.value = binding.value;\n if (isMounted)\n return;\n isMounted = true;\n const isLocked = useScrollLock(el, binding.value);\n watch(state, (v) => isLocked.value = v);\n };\n}\nconst vScrollLock = onScrollLock();\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nconst UseTimeAgo = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimeAgo\",\n props: [\"time\", \"updateInterval\", \"max\", \"fullDateFormatter\", \"messages\", \"showSecond\"],\n setup(props, { slots }) {\n const data = reactive(useTimeAgo(() => props.time, __spreadProps$1(__spreadValues$2({}, props), { controls: true })));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst UseTimestamp = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimestamp\",\n props: [\"immediate\", \"interval\", \"offset\"],\n setup(props, { slots }) {\n const data = reactive(useTimestamp(__spreadProps(__spreadValues$1({}, props), { controls: true })));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nconst UseVirtualList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseVirtualList\",\n props: [\n \"list\",\n \"options\",\n \"height\"\n ],\n setup(props, { slots, expose }) {\n const { list: listRef } = toRefs(props);\n const { list, containerProps, wrapperProps, scrollTo } = useVirtualList(listRef, props.options);\n expose({ scrollTo });\n typeof containerProps.style === \"object\" && !Array.isArray(containerProps.style) && (containerProps.style.height = props.height || \"300px\");\n return () => h(\n \"div\",\n __spreadValues({}, containerProps),\n [\n h(\n \"div\",\n __spreadValues({}, wrapperProps.value),\n list.value.map((item) => h(\n \"div\",\n { style: { overFlow: \"hidden\", height: item.height } },\n slots.default ? slots.default(item) : \"Please set content!\"\n ))\n )\n ]\n );\n }\n});\n\nconst UseWindowFocus = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowFocus\",\n setup(props, { slots }) {\n const data = reactive({\n focused: useWindowFocus()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseWindowSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowSize\",\n props: [\"initialWidth\", \"initialHeight\"],\n setup(props, { slots }) {\n const data = reactive(useWindowSize(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nexport { OnClickOutside, OnLongPress, UseActiveElement, UseBattery, UseBrowserLocation, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePointerLock, UsePreferredColorScheme, UsePreferredContrast, UsePreferredDark, UsePreferredLanguages, UsePreferredReducedMotion, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, vOnClickOutside as VOnClickOutside, vOnLongPress as VOnLongPress, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vOnClickOutside, vOnKeyStroke, vOnLongPress, vScroll, vScrollLock };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { noop, makeDestructurable, toValue, isClient, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, isObject, objectOmit, promiseTimeout, until, toRef, increaseWithUnit, objectEntries, useTimeoutFn, pausableWatch, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, createSingletonPromise, toRefs, useIntervalFn, notNullish, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, nextTick, reactive, markRaw, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = ref(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nvar __defProp$q = Object.defineProperty;\nvar __defProps$d = Object.defineProperties;\nvar __getOwnPropDescs$d = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$t = Object.getOwnPropertySymbols;\nvar __hasOwnProp$t = Object.prototype.hasOwnProperty;\nvar __propIsEnum$t = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$q = (obj, key, value) => key in obj ? __defProp$q(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$q = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$t.call(b, prop))\n __defNormalProp$q(a, prop, b[prop]);\n if (__getOwnPropSymbols$t)\n for (var prop of __getOwnPropSymbols$t(b)) {\n if (__propIsEnum$t.call(b, prop))\n __defNormalProp$q(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$d = (a, b) => __defProps$d(a, __getOwnPropDescs$d(b));\nfunction createReusableTemplate() {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n return;\n }\n const render = shallowRef();\n const define = /* #__PURE__ */ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /* #__PURE__ */ defineComponent({\n inheritAttrs: false,\n setup(_, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n return (_a = render.value) == null ? void 0 : _a.call(render, __spreadProps$d(__spreadValues$q({}, attrs), { $slots: slots }));\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\n\nfunction createTemplatePromise(options = {}) {\n if (!isVue3) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n return;\n }\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, options2));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n if (el)\n shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nvar __defProp$p = Object.defineProperty;\nvar __defProps$c = Object.defineProperties;\nvar __getOwnPropDescs$c = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$s = Object.getOwnPropertySymbols;\nvar __hasOwnProp$s = Object.prototype.hasOwnProperty;\nvar __propIsEnum$s = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$p = (obj, key, value) => key in obj ? __defProp$p(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$p = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$s.call(b, prop))\n __defNormalProp$p(a, prop, b[prop]);\n if (__getOwnPropSymbols$s)\n for (var prop of __getOwnPropSymbols$s(b)) {\n if (__propIsEnum$s.call(b, prop))\n __defNormalProp$p(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$c = (a, b) => __defProps$c(a, __getOwnPropDescs$c(b));\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keydown\" }));\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keypress\" }));\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keyup\" }));\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n timeout = setTimeout(\n () => handler(ev),\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions);\n useEventListener(elementRef, \"pointerup\", clear, listenerOptions);\n useEventListener(elementRef, \"pointerleave\", clear, listenerOptions);\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n if (keyCode >= 97 && keyCode <= 122)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const { window = defaultWindow } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const activeElement = computedWithControl(\n () => null,\n () => document == null ? void 0 : document.activeElement\n );\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n activeElement.trigger();\n }, true);\n useEventListener(window, \"focus\", activeElement.trigger, true);\n }\n return activeElement;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n if (getCurrentInstance()) {\n onMounted(() => {\n isMounted.value = true;\n });\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n const delta = timestamp - previousFrameTimestamp;\n fn({ delta, timestamp });\n previousFrameTimestamp = timestamp;\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n !animate.value && update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n el && update();\n });\n watch(() => keyframes, (value) => {\n !animate.value && update();\n if (!unrefElement(target) && animate.value) {\n animate.value.effect = new KeyframeEffect(\n unrefElement(target),\n toValue(value),\n animateOptions\n );\n }\n }, { deep: true });\n tryOnMounted(() => {\n nextTick(() => update(true));\n });\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (commitStyles)\n animate.value.commitStyles();\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n useEventListener(animate, \"cancel\", syncPause);\n useEventListener(animate, \"finish\", syncPause);\n useEventListener(animate, \"remove\", syncPause);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options = {}) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options;\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(new Array(tasks.length), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nvar __defProp$o = Object.defineProperty;\nvar __defProps$b = Object.defineProperties;\nvar __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$r = Object.getOwnPropertySymbols;\nvar __hasOwnProp$r = Object.prototype.hasOwnProperty;\nvar __propIsEnum$r = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$o = (obj, key, value) => key in obj ? __defProp$o(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$o = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$r.call(b, prop))\n __defNormalProp$o(a, prop, b[prop]);\n if (__getOwnPropSymbols$r)\n for (var prop of __getOwnPropSymbols$r(b)) {\n if (__propIsEnum$r.call(b, prop))\n __defNormalProp$o(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$b = (a, b) => __defProps$b(a, __getOwnPropDescs$b(b));\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return __spreadProps$b(__spreadValues$o({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n });\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = ref(\"\");\n const promise = ref();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery({ navigator = defaultNavigator } = {}) {\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n const charging = ref(false);\n const chargingTime = ref(0);\n const dischargingTime = ref(0);\n const level = ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n for (const event of events)\n useEventListener(battery, event, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef(void 0);\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = ref();\n const isConnected = computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", update);\n else\n mediaQuery.removeListener(update);\n };\n const update = () => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toRef(query).value);\n matches.value = !!(mediaQuery == null ? void 0 : mediaQuery.matches);\n if (!mediaQuery)\n return;\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", update);\n else\n mediaQuery.addListener(update);\n };\n watchEffect(update);\n tryOnScopeDispose(() => cleanup());\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetify = {\n xs: 600,\n sm: 960,\n md: 1264,\n lg: 1904\n};\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 600,\n sm: 1024,\n md: 1440,\n lg: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = breakpoints[k];\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => greaterOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return Object.assign(shortcutMethods, {\n greater(k) {\n return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n },\n greaterOrEqual,\n smaller(k) {\n return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n },\n smallerOrEqual(k) {\n return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n },\n between(a, b) {\n return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n },\n current() {\n const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nvar __defProp$n = Object.defineProperty;\nvar __getOwnPropSymbols$q = Object.getOwnPropertySymbols;\nvar __hasOwnProp$q = Object.prototype.hasOwnProperty;\nvar __propIsEnum$q = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$n = (obj, key, value) => key in obj ? __defProp$n(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$n = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$q.call(b, prop))\n __defNormalProp$n(a, prop, b[prop]);\n if (__getOwnPropSymbols$q)\n for (var prop of __getOwnPropSymbols$q(b)) {\n if (__propIsEnum$q.call(b, prop))\n __defNormalProp$n(a, prop, b[prop]);\n }\n return a;\n};\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation({ window = defaultWindow } = {}) {\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref2] of objectEntries(refs)) {\n watch(ref2, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive(__spreadValues$n({\n trigger,\n state: state2,\n length,\n origin\n }, refs));\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = ref(refValue.value);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const events = [\"copy\", \"cut\"];\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value) {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read) {\n for (const event of events)\n useEventListener(event, updateText);\n }\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value)\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nvar __defProp$m = Object.defineProperty;\nvar __defProps$a = Object.defineProperties;\nvar __getOwnPropDescs$a = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$p = Object.getOwnPropertySymbols;\nvar __hasOwnProp$p = Object.prototype.hasOwnProperty;\nvar __propIsEnum$p = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$m = (obj, key, value) => key in obj ? __defProp$m(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$m = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$p.call(b, prop))\n __defNormalProp$m(a, prop, b[prop]);\n if (__getOwnPropSymbols$p)\n for (var prop of __getOwnPropSymbols$p(b)) {\n if (__propIsEnum$p.call(b, prop))\n __defNormalProp$m(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, __spreadProps$a(__spreadValues$m({}, options), {\n deep,\n immediate\n }));\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nvar __defProp$l = Object.defineProperty;\nvar __getOwnPropSymbols$o = Object.getOwnPropertySymbols;\nvar __hasOwnProp$o = Object.prototype.hasOwnProperty;\nvar __propIsEnum$o = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$l = (obj, key, value) => key in obj ? __defProp$l(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$l = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$o.call(b, prop))\n __defNormalProp$l(a, prop, b[prop]);\n if (__getOwnPropSymbols$o)\n for (var prop of __getOwnPropSymbols$o(b)) {\n if (__propIsEnum$o.call(b, prop))\n __defNormalProp$l(a, prop, b[prop]);\n }\n return a;\n};\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const data = (shallow ? shallowRef : ref)(defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n }\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit !== null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return __spreadValues$l(__spreadValues$l({}, rawInit), value);\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$k = Object.defineProperty;\nvar __getOwnPropSymbols$n = Object.getOwnPropertySymbols;\nvar __hasOwnProp$n = Object.prototype.hasOwnProperty;\nvar __propIsEnum$n = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$k = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$n.call(b, prop))\n __defNormalProp$k(a, prop, b[prop]);\n if (__getOwnPropSymbols$n)\n for (var prop of __getOwnPropSymbols$n(b)) {\n if (__propIsEnum$n.call(b, prop))\n __defNormalProp$k(a, prop, b[prop]);\n }\n return a;\n};\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = __spreadValues$k({\n auto: \"\",\n light: \"light\",\n dark: \"dark\"\n }, options.modes || {});\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(\n () => store.value === \"auto\" ? system.value : store.value\n );\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nvar __getOwnPropSymbols$m = Object.getOwnPropertySymbols;\nvar __hasOwnProp$m = Object.prototype.hasOwnProperty;\nvar __propIsEnum$m = Object.prototype.propertyIsEnumerable;\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$m.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$m)\n for (var prop of __getOwnPropSymbols$m(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$m.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$3(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(\n () => unrefElement(target),\n (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n },\n { immediate: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nfunction useCurrentElement() {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev\n };\n}\n\nvar __defProp$j = Object.defineProperty;\nvar __defProps$9 = Object.defineProperties;\nvar __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$l = Object.getOwnPropertySymbols;\nvar __hasOwnProp$l = Object.prototype.hasOwnProperty;\nvar __propIsEnum$l = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$j = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$l.call(b, prop))\n __defNormalProp$j(a, prop, b[prop]);\n if (__getOwnPropSymbols$l)\n for (var prop of __getOwnPropSymbols$l(b)) {\n if (__propIsEnum$l.call(b, prop))\n __defNormalProp$j(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode(__spreadProps$9(__spreadValues$j({}, options), {\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n }));\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (mode.system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Infinity);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nvar __defProp$i = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$k = Object.getOwnPropertySymbols;\nvar __hasOwnProp$k = Object.prototype.hasOwnProperty;\nvar __propIsEnum$k = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$i = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$k.call(b, prop))\n __defNormalProp$i(a, prop, b[prop]);\n if (__getOwnPropSymbols$k)\n for (var prop of __getOwnPropSymbols$k(b)) {\n if (__propIsEnum$k.call(b, prop))\n __defNormalProp$i(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, __spreadProps$8(__spreadValues$i({}, options), { clone: options.clone || deep, setSource }));\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return __spreadProps$8(__spreadValues$i({}, manualHistory), {\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n });\n}\n\nvar __defProp$h = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$j = Object.getOwnPropertySymbols;\nvar __hasOwnProp$j = Object.prototype.hasOwnProperty;\nvar __propIsEnum$j = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$h = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n if (__getOwnPropSymbols$j)\n for (var prop of __getOwnPropSymbols$j(b)) {\n if (__propIsEnum$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, __spreadProps$7(__spreadValues$h({}, options), { eventFilter: filter }));\n return __spreadValues$h({}, history);\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = bypassFilter\n } = options;\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = ref(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = ref(false);\n const alpha = ref(null);\n const beta = ref(null);\n const gamma = ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio({\n window = defaultWindow\n} = {}) {\n const pixelRatio = ref(1);\n if (window) {\n let observe = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe, { once: true });\n }, cleanup = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe);\n };\n let media;\n observe();\n tryOnScopeDispose(cleanup);\n }\n return { pixelRatio };\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n let permissionStatus;\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = ref();\n const onChange = () => {\n if (permissionStatus)\n state.value = permissionStatus.state;\n };\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus) {\n try {\n permissionStatus = await navigator.permissions.query(desc);\n useEventListener(permissionStatus, \"change\", onChange);\n onChange();\n } catch (e) {\n state.value = \"prompt\";\n }\n }\n return permissionStatus;\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = ref(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility({ document = defaultDocument } = {}) {\n if (!document)\n return ref(\"visible\");\n const visibility = ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nvar __defProp$g = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$i = Object.getOwnPropertySymbols;\nvar __hasOwnProp$i = Object.prototype.hasOwnProperty;\nvar __propIsEnum$i = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$g = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n if (__getOwnPropSymbols$i)\n for (var prop of __getOwnPropSymbols$i(b)) {\n if (__propIsEnum$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n handle: draggingHandle = target\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n if (!filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const rect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\")\n x = e.clientX - pressedDelta.value.x;\n if (axis === \"y\" || axis === \"both\")\n y = e.clientY - pressedDelta.value.y;\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = { capture: (_b = options.capture) != null ? _b : true };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return __spreadProps$6(__spreadValues$g({}, toRefs(position)), {\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n });\n}\n\nfunction useDropZone(target, onDrop) {\n const isOverDropZone = ref(false);\n let counter = 0;\n if (isClient) {\n useEventListener(target, \"dragenter\", (event) => {\n event.preventDefault();\n counter += 1;\n isOverDropZone.value = true;\n });\n useEventListener(target, \"dragover\", (event) => {\n event.preventDefault();\n });\n useEventListener(target, \"dragleave\", (event) => {\n event.preventDefault();\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n });\n useEventListener(target, \"drop\", (event) => {\n var _a, _b;\n event.preventDefault();\n counter = 0;\n isOverDropZone.value = false;\n const files = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n onDrop == null ? void 0 : onDrop(files.length === 0 ? null : files);\n });\n }\n return {\n isOverDropZone\n };\n}\n\nvar __getOwnPropSymbols$h = Object.getOwnPropertySymbols;\nvar __hasOwnProp$h = Object.prototype.hasOwnProperty;\nvar __propIsEnum$h = Object.prototype.propertyIsEnumerable;\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$h.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$h)\n for (var prop of __getOwnPropSymbols$h(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$h.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(\n () => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]\n );\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true\n } = options;\n const height = ref(0);\n const bottom = ref(0);\n const left = ref(0);\n const right = ref(0);\n const top = ref(0);\n const width = ref(0);\n const x = ref(0);\n const y = ref(0);\n function update() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nvar __defProp$f = Object.defineProperty;\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$f = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$g.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n if (__getOwnPropSymbols$g)\n for (var prop of __getOwnPropSymbols$g(b)) {\n if (__propIsEnum$g.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n }\n return a;\n};\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = ref(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return __spreadValues$f({\n isSupported,\n element\n }, controls);\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = Number.parseFloat(styles.width);\n height.value = Number.parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n return {\n width,\n height\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n ([{ isIntersecting }]) => {\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n const event = ref(null);\n const data = ref(null);\n const status = ref(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const {\n withCredentials = false\n } = options;\n const close = () => {\n if (eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n }\n };\n const es = new EventSource(url, { withCredentials });\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n eventSource,\n event,\n data,\n status,\n error,\n close\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`).forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$f.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n if (__getOwnPropSymbols$f)\n for (var prop of __getOwnPropSymbols$f(b)) {\n if (__propIsEnum$f.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\");\n}\nfunction isAbsoluteURL(url) {\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback)\n return __spreadValues$e(__spreadValues$e({}, ctx), await callback(ctx));\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = __spreadValues$e(__spreadValues$e({}, ctx), await callback(ctx));\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, options), args[0]), {\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n });\n } else {\n fetchOptions = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, fetchOptions), args[0]), {\n headers: __spreadValues$e(__spreadValues$e({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})\n });\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, options), args[1]), {\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n });\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = { immediate: true, refetch: false, timeout: 0 };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = __spreadValues$e(__spreadValues$e({}, options), args[0]);\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = __spreadValues$e(__spreadValues$e({}, options), args[1]);\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = ref(false);\n const isFetching = ref(false);\n const aborted = ref(false);\n const statusCode = ref(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = __spreadProps$5(__spreadValues$e({}, fetchOptions), {\n signal: controller.signal\n });\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n const execute = async (throwOnFailed = false) => {\n var _a2;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n const payload = toValue(config.payload);\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: __spreadValues$e(__spreadValues$e({}, defaultFetchOptions), fetchOptions),\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return new Promise((resolve, reject) => {\n var _a3;\n fetch(\n context.url,\n __spreadProps$5(__spreadValues$e(__spreadValues$e({}, defaultFetchOptions), context.options), {\n headers: __spreadValues$e(__spreadValues$e({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers))\n })\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch)\n ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse }));\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return resolve(fetchResponse);\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError)\n ({ error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value }));\n error.value = errorData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n return reject(fetchError);\n return resolve(null);\n }).finally(() => {\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished,\n statusCode,\n response,\n error,\n data,\n isFetching,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n const rawPayload = toValue(config.payload);\n if (!payloadType && rawPayload && Object.getPrototypeOf(rawPayload) === Object.prototype && !(rawPayload instanceof FormData))\n config.payloadType = \"json\";\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nvar __defProp$d = Object.defineProperty;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$e.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n if (__getOwnPropSymbols$e)\n for (var prop of __getOwnPropSymbols$e(b)) {\n if (__propIsEnum$e.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n }\n return a;\n};\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(null);\n const { on: onChange, trigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n trigger(files.value);\n };\n }\n const reset = () => {\n files.value = null;\n if (input)\n input.value = \"\";\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = __spreadValues$d(__spreadValues$d(__spreadValues$d({}, DEFAULT_OPTIONS), options), localOptions);\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onChange\n };\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n }\n return a;\n};\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = ref();\n const data = ref();\n const file = ref();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker(__spreadValues$c(__spreadValues$c({}, toValue(options)), _options));\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$c(__spreadValues$c({}, options), _options));\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$c(__spreadValues$c({}, options), _options));\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false } = options;\n const innerFocused = ref(false);\n const targetElement = computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", () => innerFocused.value = true);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n const activeElement = useActiveElement(options);\n const targetElement = computed(() => unrefElement(target));\n const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n });\n const isFullscreen = ref(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(\n () => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0\n );\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n useEventListener(document, eventHandlers, handlerCallback, false);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nvar __defProp$b = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$c.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(b)) {\n if (__propIsEnum$c.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return __spreadProps$4(__spreadValues$b({}, gamepad), {\n id: gamepad.id,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n });\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad) {\n const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n if (index > -1)\n gamepads.value[index] = stateFromGamepad(gamepad);\n }\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n if (_gamepads) {\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad)\n onGamepadConnected(gamepad);\n }\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = ref(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Infinity,\n longitude: Infinity,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = ref(initialState);\n const lastActive = ref(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n __spreadValues$a({\n resetOnExecute: true\n }, asyncStateOptions)\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\"\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n const el = target === window ? target.document.documentElement : target === document ? target.documentElement : target;\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === document && !scrollTop)\n scrollTop = document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n const eventTarget = e.target === document ? e.target.documentElement : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (_element)\n setArrivedState(_element);\n }\n };\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100\n } = options;\n const state = reactive(useScroll(\n element,\n __spreadProps$3(__spreadValues$9({}, options), {\n offset: __spreadValues$9({\n [direction]: (_a = options.distance) != null ? _a : 0\n }, options.offset)\n })\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n function checkAndLoad() {\n state.measure();\n const el = toValue(element);\n if (!el)\n return;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? el.scrollHeight <= el.clientHeight : el.scrollWidth <= el.clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], toValue(element)],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n options = __spreadValues$8(__spreadValues$8({}, defaultOptions), options);\n const {\n document = defaultDocument\n } = options;\n const currentTime = ref(0);\n const duration = ref(0);\n const seeking = ref(false);\n const volume = ref(1);\n const waiting = ref(false);\n const ended = ref(false);\n const playing = ref(false);\n const rate = ref(1);\n const stalled = ref(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = ref(-1);\n const isPictureInPicture = ref(false);\n const muted = ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n tryOnScopeDispose(() => {\n const el = toValue(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n });\n useEventListener(target, \"loadeddata\", () => waiting.value = false);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n });\n useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on\n };\n}\n\nfunction getMapVue2Compat() {\n const data = reactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => hasOwn(data, key),\n delete: (key) => del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n del(data, key);\n });\n }\n };\n}\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return reactive(options.cache);\n if (isVue2)\n return getMapVue2Compat();\n return reactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst BuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n eventFilter\n } = options;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const extractor = typeof type === \"function\" ? type : BuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n if (target) {\n useEventListener(target, \"mousemove\", mouseHandlerWrapper, { passive: true });\n useEventListener(target, \"dragover\", mouseHandlerWrapper, { passive: true });\n if (touch && type !== \"movement\") {\n useEventListener(target, \"touchstart\", touchHandlerWrapper, { passive: true });\n useEventListener(target, \"touchmove\", touchHandlerWrapper, { passive: true });\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, { passive: true });\n }\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const { x, y, sourceType } = useMouse(options);\n const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = ref(0);\n const elementY = ref(0);\n const elementPositionX = ref(0);\n const elementPositionY = ref(0);\n const elementHeight = ref(0);\n const elementWidth = ref(0);\n const isOutside = ref(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el)\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + window.pageXOffset;\n elementPositionY.value = top + window.pageYOffset;\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = ref(initialValue);\n const sourceType = ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true });\n useEventListener(window, \"mouseup\", onReleased, { passive: true });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"drop\", onReleased, { passive: true });\n useEventListener(window, \"dragend\", onReleased, { passive: true });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true });\n useEventListener(window, \"touchend\", onReleased, { passive: true });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = ref(void 0);\n const onlineAt = ref(void 0);\n const downlink = ref(void 0);\n const downlinkMax = ref(void 0);\n const rtt = ref(void 0);\n const effectiveType = ref(void 0);\n const type = ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n onlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return __spreadValues$7({\n now\n }, controls);\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Infinity,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Infinity);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page))\n syncRef(page, currentPage);\n if (isRef(pageSize))\n syncRef(pageSize, currentPageSize);\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n return \"deviceOrientation\";\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = -orientation.beta / 90;\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = orientation.gamma / 90;\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction usePerformanceObserver(options, callback) {\n const _a = options, {\n window = defaultWindow,\n immediate = true\n } = _a, performanceOptions = __objRest$1(_a, [\n \"window\",\n \"immediate\"\n ]);\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n useEventListener(target, \"pointerdown\", handler, { passive: true });\n useEventListener(target, \"pointermove\", handler, { passive: true });\n useEventListener(target, \"pointerleave\", () => isInside.value = false, { passive: true });\n }\n return __spreadProps$2(__spreadValues$6({}, toRefs(state)), {\n isInside\n });\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument, pointerLockOptions } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = ref();\n const triggerElement = ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e, options2) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = ref(false);\n const isPointerDown = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n })\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (!isSupported.value)\n return Promise.reject(new Error(\"Not supported\"));\n return screenOrientation.lock(type);\n };\n const unlockOrientation = () => {\n if (isSupported.value)\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n watch(toRef(element), (el) => {\n if (el) {\n const ele = el;\n initialOverflow = ele.style.overflow;\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const ele = toValue(element);\n if (!ele || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n ele,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n ele.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const ele = toValue(element);\n if (!ele || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n ele.style.overflow = initialOverflow;\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = __spreadValues$5(__spreadValues$5({}, toValue(shareOptions)), toValue(overrideOptions));\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = ref(false);\n const isFinal = ref(false);\n const result = ref(\"\");\n const error = shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.onstart = () => {\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const transcript = Array.from(event.results).map((result2) => {\n isFinal.value = result2.isFinal;\n return result2[0];\n }).map((result2) => result2.transcript).join(\"\");\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = pitch;\n utterance2.rate = rate;\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n utterance && synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = __spreadValues$4(__spreadValues$4({}, rawInit), value);\n else\n data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.type = \"text/css\";\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, \"touchend\", onTouchEnd, listenerOptions),\n useEventListener(target, \"touchcancel\", onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", noop, optionsBlock);\n document.removeEventListener(\"x\", noop);\n return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n const ranges = new Array(rangeCount);\n for (let i = 0; i < rangeCount; i++) {\n const range = selection.getRangeAt(i);\n ranges[i] = range;\n }\n return ranges;\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n const textarea = ref(options == null ? void 0 : options.element);\n const input = ref(options == null ? void 0 : options.input);\n const textareaScrollHeight = ref(1);\n function triggerResize() {\n var _a, _b;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style.height = \"1px\";\n textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n if (options == null ? void 0 : options.styleTarget)\n toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style.height = height;\n (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n useResizeObserver(textarea, () => triggerResize());\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, __spreadProps$1(__spreadValues$3({}, options), { eventFilter: filter }));\n return __spreadValues$3({}, history);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Infinity, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, [\"now\"]);\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return __spreadValues$2({\n timeAgo\n }, controls);\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval);\n const isActive = ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$1({\n timestamp: ts\n }, controls);\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b;\n const {\n document = defaultDocument\n } = options;\n const title = toRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n const isReadonly = newTitle && typeof newTitle === \"function\";\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (t, o) => {\n if (t !== o && document)\n document.title = format(typeof t === \"string\" ? t : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_b = document.head) == null ? void 0 : _b.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n return title;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, __spreadProps(__spreadValues({}, options), {\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n }));\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n watch(\n () => props[key],\n (v) => proxy.value = cloneFn(v)\n );\n watch(\n proxy,\n (v) => {\n if (v !== props[key] || deep)\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props)\n ret[key] = useVModel(props, key, emit, options);\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = ref(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n watch([size.width, size.height, list], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = ref(false);\n async function onVisibilityChange() {\n if (!isSupported.value || !wakeLock)\n return;\n if (document && document.visibilityState === \"visible\")\n wakeLock = await navigator.wakeLock.request(\"screen\");\n isActive.value = !wakeLock.released;\n }\n if (document)\n useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n async function request(type) {\n if (!isSupported.value)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported.value || !wakeLock)\n return;\n await wakeLock.release();\n isActive.value = !wakeLock.released;\n wakeLock = null;\n }\n return {\n isSupported,\n isActive,\n request,\n release\n };\n}\n\nfunction useWebNotification(defaultOptions = {}) {\n const {\n window = defaultWindow\n } = defaultOptions;\n const isSupported = useSupported(() => !!window && \"Notification\" in window);\n const notification = ref(null);\n const requestPermission = async () => {\n if (!isSupported.value)\n return;\n if (\"permission\" in Notification && Notification.permission !== \"denied\")\n await Notification.requestPermission();\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value)\n return;\n await requestPermission();\n const options = Object.assign({}, defaultOptions, overrides);\n notification.value = new Notification(options.title || \"\", options);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n tryOnMounted(async () => {\n if (isSupported.value)\n await requestPermission();\n });\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = ref(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const close = (code = 1e3, reason) => {\n if (!wsRef.value)\n return;\n explicitlyClosed = true;\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n wsRef.value = void 0;\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === message)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n useEventListener(window, \"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n watch(urlRef, open, { immediate: true });\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction depsParser(deps) {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = ref(\"PENDING\");\n const promise = ref({});\n const timeoutId = ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n promise.value = {\n resolve,\n reject\n };\n worker.value && worker.value.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus({ window = defaultWindow } = {}) {\n if (!window)\n return ref(false);\n const focused = ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll({ window = defaultWindow } = {}) {\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const x = ref(window.scrollX);\n const y = ref(window.scrollY);\n useEventListener(\n window,\n \"scroll\",\n () => {\n x.value = window.scrollX;\n y.value = window.scrollY;\n },\n {\n capture: false,\n passive: true\n }\n );\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Infinity,\n initialHeight = Infinity,\n listenOrientation = true,\n includeScrollbar = true\n } = options;\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=5c8d96c6&\"\nimport script from \"./File.vue?vue&type=script&lang=js&\"\nexport * from \"./File.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nexport const hashCode = function (str) {\n return str.split('').reduce(function (a, b) {\n a = ((a << 5) - a) + b.charCodeAt(0);\n return a & a;\n }, 0);\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=a261c93e&\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"custom-svg-icon\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomSvgIconRender.vue?vue&type=template&id=93e9b2f4&scoped=true&\"\nimport script from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93e9b2f4\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=324501a3&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=324501a3&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=324501a3&scoped=true&\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=324501a3&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"324501a3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('CustomSvgIconRender',{staticClass:\"favorite-marker-icon\",attrs:{\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n */\nexport const useKeyboardStore = function (...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nexport const useRenamingStore = function (...args) {\n const store = defineStore('renaming', {\n state: () => ({\n renamingNode: undefined,\n newName: '',\n }),\n });\n const renamingStore = store(...args);\n // Make sure we only register the listeners once\n if (!renamingStore._initialized) {\n subscribe('files:node:rename', function (node) {\n renamingStore.renamingNode = node;\n renamingStore.newName = node.basename;\n });\n renamingStore._initialized = true;\n }\n return renamingStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n// The preview service worker cache name (see webpack config)\nconst SWCacheName = 'previews';\n/**\n * Check if the preview is already cached by the service worker\n */\nexport const isCachedPreview = function (previewUrl) {\n return caches.open(SWCacheName)\n .then(function (cache) {\n return cache.match(previewUrl)\n .then(function (response) {\n return !!response;\n });\n });\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=0&id=fa7d88ca&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=0&id=fa7d88ca&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=fa7d88ca&prod&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=fa7d88ca&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=fa7d88ca&scoped=true&\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileEntry.vue?vue&type=style&index=0&id=fa7d88ca&prod&scoped=true&lang=scss&\"\nimport style1 from \"./FileEntry.vue?vue&type=style&index=1&id=fa7d88ca&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fa7d88ca\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=style&index=0&id=2201dce1&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=style&index=0&id=2201dce1&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListFooter.vue?vue&type=template&id=2201dce1&scoped=true&\"\nimport script from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListFooter.vue?vue&type=style&index=0&id=2201dce1&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2201dce1\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue';\nexport default Vue.extend({\n data() {\n return {\n filesListWidth: null,\n };\n },\n created() {\n const fileListEl = document.querySelector('#app-content-vue');\n this.$resizeObserver = new ResizeObserver((entries) => {\n if (entries.length > 0 && entries[0].target === fileListEl) {\n this.filesListWidth = entries[0].contentRect.width;\n }\n });\n this.$resizeObserver.observe(fileListEl);\n },\n beforeDestroy() {\n this.$resizeObserver.disconnect();\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('th',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"colspan\":\"2\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-title\":true,\"inline\":_vm.inlineActions,\"menu-title\":_vm.inlineActions <= 1 ? _vm.t('files', 'Actions') : null,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderActions.vue?vue&type=template&id=03e57b1e&scoped=true&\"\nimport script from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"03e57b1e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuDown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuDown.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./MenuDown.vue?vue&type=template&id=49c08fbe&\"\nimport script from \"./MenuDown.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuDown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon menu-down-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,10L12,15L17,10H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuUp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuUp.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./MenuUp.vue?vue&type=template&id=52b567ec&\"\nimport script from \"./MenuUp.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuUp.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon menu-up-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,15L12,10L17,15H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue';\nimport { mapState } from 'pinia';\nimport { useViewConfigStore } from '../store/viewConfig';\nexport default Vue.extend({\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n currentView() {\n return this.$navigation.active;\n },\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.currentView.id)?.sorting_mode\n || this.currentView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction;\n return sortingDirection === 'asc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.currentView.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.currentView.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:{'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode},attrs:{\"aria-label\":_vm.sortAriaLabel(_vm.name),\"type\":\"tertiary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy(_vm.mode)}}},[(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}):_c('MenuDown',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name)+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderButton.vue?vue&type=template&id=e85a09d2&\"\nimport script from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\"},[_c('NcCheckboxRadioSwitch',_vm._b({on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),(!_vm.isNoneSelected)?_c('FilesListHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}}):[_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy('basename')}}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{'files-list__column--sortable': _vm.isSizeAvailable}},[_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{'files-list__column--sortable': _vm.isMtimeAvailable}},[_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[(!!column.sort)?_c('FilesListHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\\t\")])],1)})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=style&index=0&id=3e864709&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=style&index=0&id=3e864709&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=3e864709&scoped=true&\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeader.vue?vue&type=style&index=0&id=3e864709&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3e864709\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RecycleScroller',{ref:\"recycleScroller\",staticClass:\"files-list\",attrs:{\"key-field\":\"source\",\"items\":_vm.nodes,\"item-size\":55,\"table-mode\":true,\"item-class\":\"files-list__row\",\"item-tag\":\"tr\",\"list-class\":\"files-list__body\",\"list-tag\":\"tbody\",\"role\":\"table\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, active, index }){return [_c('FileEntry',{attrs:{\"active\":active,\"index\":index,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"files-list-width\":_vm.filesListWidth,\"nodes\":_vm.nodes,\"source\":item}})]}},{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.currentView.caption || _vm.t('files', 'List of files and folders.'))+\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListHeader',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"after\",fn:function(){return [_c('FilesListFooter',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=e796f704&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=e796f704&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=e796f704&scoped=true&\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=e796f704&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e796f704\",\n null\n \n)\n\nexport default component.exports","import isSvg from 'is-svg';\nimport logger from '../logger.js';\nexport default class {\n _views = [];\n _currentView = null;\n constructor() {\n logger.debug('Navigation service initialized');\n }\n register(view) {\n try {\n isValidNavigation(view);\n isUniqueNavigation(view, this._views);\n }\n catch (e) {\n if (e instanceof Error) {\n logger.error(e.message, { view });\n }\n throw e;\n }\n if (view.legacy) {\n logger.warn('Legacy view detected, please migrate to Vue');\n }\n if (view.iconClass) {\n view.legacy = true;\n }\n this._views.push(view);\n }\n remove(id) {\n const index = this._views.findIndex(view => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n }\n }\n get views() {\n return this._views;\n }\n setActive(view) {\n this._currentView = view;\n }\n get active() {\n return this._currentView;\n }\n}\n/**\n * Make sure the given view is unique\n * and not already registered.\n */\nconst isUniqueNavigation = function (view, views) {\n if (views.find(search => search.id === view.id)) {\n throw new Error(`Navigation id ${view.id} is already registered`);\n }\n return true;\n};\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Navigation interface requirements.\n */\nconst isValidNavigation = function (view) {\n if (!view.id || typeof view.id !== 'string') {\n throw new Error('Navigation id is required and must be a string');\n }\n if (!view.name || typeof view.name !== 'string') {\n throw new Error('Navigation name is required and must be a string');\n }\n if (view.columns && view.columns.length > 0\n && (!view.caption || typeof view.caption !== 'string')) {\n throw new Error('Navigation caption is required for top-level views and must be a string');\n }\n /**\n * Legacy handle their content and icon differently\n * TODO: remove when support for legacy views is removed\n */\n if (!view.legacy) {\n if (!view.getContents || typeof view.getContents !== 'function') {\n throw new Error('Navigation getContents is required and must be a function');\n }\n if (!view.icon || typeof view.icon !== 'string' || !isSvg(view.icon)) {\n throw new Error('Navigation icon is required and must be a valid svg string');\n }\n }\n if (!('order' in view) || typeof view.order !== 'number') {\n throw new Error('Navigation order is required and must be a number');\n }\n // Optional properties\n if (view.columns) {\n view.columns.forEach(isValidColumn);\n }\n if (view.emptyView && typeof view.emptyView !== 'function') {\n throw new Error('Navigation emptyView must be a function');\n }\n if (view.parent && typeof view.parent !== 'string') {\n throw new Error('Navigation parent must be a string');\n }\n if ('sticky' in view && typeof view.sticky !== 'boolean') {\n throw new Error('Navigation sticky must be a boolean');\n }\n if ('expanded' in view && typeof view.expanded !== 'boolean') {\n throw new Error('Navigation expanded must be a boolean');\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== 'string') {\n throw new Error('Navigation defaultSortKey must be a string');\n }\n return true;\n};\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Column interface requirements.\n */\nconst isValidColumn = function (column) {\n if (!column.id || typeof column.id !== 'string') {\n throw new Error('A column id is required');\n }\n if (!column.title || typeof column.title !== 'string') {\n throw new Error('A column title is required');\n }\n if (!column.render || typeof column.render !== 'function') {\n throw new Error('A render function is required');\n }\n // Optional properties\n if (column.sort && typeof column.sort !== 'function') {\n throw new Error('Column sortFunction must be a function');\n }\n if (column.summary && typeof column.summary !== 'function') {\n throw new Error('Column summary must be a function');\n }\n return true;\n};\n","import {XMLParser, XMLValidator} from 'fast-xml-parser';\n\nexport default function isSvg(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\tstring = string.trim();\n\n\tif (string.length === 0) {\n\t\treturn false;\n\t}\n\n\t// Has to be `!==` as it can also return an object with error info.\n\tif (XMLValidator.validate(string) !== true) {\n\t\treturn false;\n\t}\n\n\tlet jsonObject;\n\tconst parser = new XMLParser();\n\n\ttry {\n\t\tjsonObject = parser.parse(string);\n\t} catch {\n\t\treturn false;\n\t}\n\n\tif (!jsonObject) {\n\t\treturn false;\n\t}\n\n\tif (!('svg' in jsonObject)) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=4f40f675&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=4f40f675&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=4f40f675&scoped=true&\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=4f40f675&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f40f675\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppNavigation',{attrs:{\"data-cy-files-navigation\":\"\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return _vm._l((_vm.parentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,attrs:{\"allow-collapse\":true,\"data-cy-files-navigation-item\":view.id,\"icon\":view.iconClass,\"open\":_vm.isExpanded(view),\"pinned\":view.sticky,\"title\":view.name,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":function($event){return _vm.onToggleExpand(view)}}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.childViews[view.id]),function(child){return _c('NcAppNavigationItem',{key:child.id,attrs:{\"data-cy-files-navigation-item\":child.id,\"exact\":true,\"icon\":child.iconClass,\"title\":child.name,\"to\":_vm.generateToNavigation(child)}},[(child.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":child.icon},slot:\"icon\"}):_vm._e()],1)})],2)})},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"aria-label\":_vm.t('files', 'Open the files app settings'),\"title\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('Cog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Cog.vue?vue&type=template&id=bcf30078&\"\nimport script from \"./Cog.vue?vue&type=script&lang=js&\"\nexport * from \"./Cog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChartPie.vue?vue&type=template&id=44de6464&\"\nimport script from \"./ChartPie.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartPie.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=918797b2&scoped=true&\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"918797b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-label\":_vm.t('files', 'Storage informations'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"title\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"title\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.sort_favorites_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_favorites_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort favorites first'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"title\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"title\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clipboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clipboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Clipboard.vue?vue&type=template&id=0e008e34&\"\nimport script from \"./Clipboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Clipboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon clipboard-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=61d69eae&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=0626eaac&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=0626eaac&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=0626eaac&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=0626eaac&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0626eaac\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling \n *\n * @author Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=657a978e&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"657a978e\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport logger from '../logger.js'\n\n/**\n * Fetch and register the legacy files views\n */\nexport default function() {\n\tconst legacyViews = Object.values(loadState('files', 'navigation', {}))\n\n\tif (legacyViews.length > 0) {\n\t\tlogger.debug('Legacy files views detected. Processing...', legacyViews)\n\t\tlegacyViews.forEach(view => {\n\t\t\tregisterLegacyView(view)\n\t\t\tif (view.sublist) {\n\t\t\t\tview.sublist.forEach(subview => registerLegacyView({ ...subview, parent: view.id }))\n\t\t\t}\n\t\t})\n\t}\n}\n\nconst registerLegacyView = function({ id, name, order, icon, parent, classes = '', expanded, params }) {\n\tOCP.Files.Navigation.register({\n\t\tid,\n\t\tname,\n\t\torder,\n\t\tparams,\n\t\tparent,\n\t\texpanded: expanded === true,\n\t\ticonClass: icon ? `icon-${icon}` : 'nav-icon-' + id,\n\t\tlegacy: true,\n\t\tsticky: classes.includes('pinned'),\n\t})\n}\n","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n ? self\n : typeof window !== \"undefined\"\n ? window\n : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n return {\n original: method,\n methods: [method],\n final: false\n };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n constructor() {\n this._configuration = {\n registry: {},\n getEmptyAction: \"null\"\n };\n this.__type__ = HOT_PATCHER_TYPE;\n }\n /**\n * Configuration object reference\n * @readonly\n */\n get configuration() {\n return this._configuration;\n }\n /**\n * The action to take when a non-set method is requested\n * Possible values: null/throw\n */\n get getEmptyAction() {\n return this.configuration.getEmptyAction;\n }\n set getEmptyAction(newAction) {\n this.configuration.getEmptyAction = newAction;\n }\n /**\n * Control another hot-patcher instance\n * Force the remote instance to use patched methods from calling instance\n * @param target The target instance to control\n * @param allowTargetOverrides Allow the target to override patched methods on\n * the controller (default is false)\n * @returns Returns self\n * @throws {Error} Throws if the target is invalid\n */\n control(target, allowTargetOverrides = false) {\n if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n }\n Object.keys(target.configuration.registry).forEach(foreignKey => {\n if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n if (allowTargetOverrides) {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n }\n else {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n });\n target._configuration = this.configuration;\n return this;\n }\n /**\n * Execute a patched method\n * @param key The method key\n * @param args Arguments to pass to the method (optional)\n * @see HotPatcher#get\n * @returns The output of the called method\n */\n execute(key, ...args) {\n const method = this.get(key) || NOOP;\n return method(...args);\n }\n /**\n * Get a method for a key\n * @param key The method key\n * @returns Returns the requested function or null if the function\n * does not exist and the host is configured to return null (and not throw)\n * @throws {Error} Throws if the configuration specifies to throw and the method\n * does not exist\n * @throws {Error} Throws if the `getEmptyAction` value is invalid\n */\n get(key) {\n const item = this.configuration.registry[key];\n if (!item) {\n switch (this.getEmptyAction) {\n case \"null\":\n return null;\n case \"throw\":\n throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n default:\n throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n }\n }\n return sequence(...item.methods);\n }\n /**\n * Check if a method has been patched\n * @param key The function key\n * @returns True if already patched\n */\n isPatched(key) {\n return !!this.configuration.registry[key];\n }\n /**\n * Patch a method name\n * @param key The method key to patch\n * @param method The function to set\n * @param opts Patch options\n * @returns Returns self\n */\n patch(key, method, opts = {}) {\n const { chain = false } = opts;\n if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n throw new Error(`Failed patching '${key}': Method marked as being final`);\n }\n if (typeof method !== \"function\") {\n throw new Error(`Failed patching '${key}': Provided method is not a function`);\n }\n if (chain) {\n // Add new method to the chain\n if (!this.configuration.registry[key]) {\n // New key, create item\n this.configuration.registry[key] = createNewItem(method);\n }\n else {\n // Existing, push the method\n this.configuration.registry[key].methods.push(method);\n }\n }\n else {\n // Replace the original\n if (this.isPatched(key)) {\n const { original } = this.configuration.registry[key];\n this.configuration.registry[key] = Object.assign(createNewItem(method), {\n original\n });\n }\n else {\n this.configuration.registry[key] = createNewItem(method);\n }\n }\n return this;\n }\n /**\n * Patch a method inline, execute it and return the value\n * Used for patching contents of functions. This method will not apply a patched\n * function if it has already been patched, allowing for external overrides to\n * function. It also means that the function is cached so that it is not\n * instantiated every time the outer function is invoked.\n * @param key The function key to use\n * @param method The function to patch (once, only if not patched)\n * @param args Arguments to pass to the function\n * @returns The output of the patched function\n * @example\n * function mySpecialFunction(a, b) {\n * return hotPatcher.patchInline(\"func\", (a, b) => {\n * return a + b;\n * }, a, b);\n * }\n */\n patchInline(key, method, ...args) {\n if (!this.isPatched(key)) {\n this.patch(key, method);\n }\n return this.execute(key, ...args);\n }\n /**\n * Patch a method (or methods) in sequential-mode\n * See `patch()` with the option `chain: true`\n * @see patch\n * @param key The key to patch\n * @param methods The methods to patch\n * @returns Returns self\n */\n plugin(key, ...methods) {\n methods.forEach(method => {\n this.patch(key, method, { chain: true });\n });\n return this;\n }\n /**\n * Restore a patched method if it has been overridden\n * @param key The method key\n * @returns Returns self\n */\n restore(key) {\n if (!this.isPatched(key)) {\n throw new Error(`Failed restoring method: No method present for key: ${key}`);\n }\n else if (typeof this.configuration.registry[key].original !== \"function\") {\n throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n }\n this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n return this;\n }\n /**\n * Set a method as being final\n * This sets a method as having been finally overridden. Attempts at overriding\n * again will fail with an error.\n * @param key The key to make final\n * @returns Returns self\n */\n setFinal(key) {\n if (!this.configuration.registry.hasOwnProperty(key)) {\n throw new Error(`Failed marking '${key}' as final: No method found for key`);\n }\n this.configuration.registry[key].final = true;\n return this;\n }\n}\n","export function sequence(...methods) {\n if (methods.length === 0) {\n throw new Error(\"Failed creating sequence: No functions provided\");\n }\n return function __executeSequence(...args) {\n let result = args;\n const _this = this;\n while (methods.length > 0) {\n const method = methods.shift();\n result = [method.apply(_this, result)];\n }\n return result[0];\n };\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n if (!__patcher) {\n __patcher = new HotPatcher();\n }\n return __patcher;\n}\n","export function isWeb() {\n if (typeof WEB === \"boolean\" && WEB === true) {\n return true;\n }\n return false;\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop\n ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n for (const k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n }\n else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n let uid = \"\";\n for (let i = 0; i < NONCE_SIZE; ++i) {\n uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n }\n return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n if (authHeader.split(/\\s/)[0].toLowerCase() !== \"digest\") {\n return false;\n }\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n for (;;) {\n const match = re.exec(authHeader);\n if (!match) {\n break;\n }\n _digest[match[1]] = match[2] || match[3];\n }\n _digest.nc += 1;\n _digest.cnonce = makeNonce();\n return true;\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n }\n return ha1Hash;\n}\n","export function cloneShallow(obj) {\n return isPlainObject(obj)\n ? Object.assign({}, obj)\n : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" ||\n obj === null ||\n Object.prototype.toString.call(obj) != \"[object Object]\") {\n // Not an object\n return false;\n }\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n let proto = obj;\n // Find the prototype\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n let output = null, items = [...args];\n while (items.length > 0) {\n const nextItem = items.shift();\n if (!output) {\n output = cloneShallow(nextItem);\n }\n else {\n output = mergeObjects(output, nextItem);\n }\n }\n return output;\n}\nfunction mergeObjects(obj1, obj2) {\n const output = cloneShallow(obj1);\n Object.keys(obj2).forEach(key => {\n if (!output.hasOwnProperty(key)) {\n output[key] = obj2[key];\n return;\n }\n if (Array.isArray(obj2[key])) {\n output[key] = Array.isArray(output[key])\n ? [...output[key], ...obj2[key]]\n : [...obj2[key]];\n }\n else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n output[key] =\n typeof output[key] === \"object\" && !!output[key]\n ? mergeObjects(output[key], obj2[key])\n : cloneShallow(obj2[key]);\n }\n else {\n output[key] = obj2[key];\n }\n });\n return output;\n}\n","export function convertResponseHeaders(headers) {\n const output = {};\n for (const key of headers.keys()) {\n output[key] = headers.get(key);\n }\n return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n if (headerPayloads.length === 0)\n return {};\n const headerKeys = {};\n return headerPayloads.reduce((output, headers) => {\n Object.keys(headers).forEach(header => {\n const lowerHeader = header.toLowerCase();\n if (headerKeys.hasOwnProperty(lowerHeader)) {\n output[headerKeys[lowerHeader]] = headers[header];\n }\n else {\n headerKeys[lowerHeader] = header;\n output[header] = headers[header];\n }\n });\n return output;\n }, {});\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n return (hasArrayBuffer &&\n (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nfunction _request(requestOptions) {\n const patcher = getPatcher();\n return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\nfunction getFetchOptions(requestOptions) {\n let headers = {};\n // Handle standard options\n const opts = {\n method: requestOptions.method\n };\n if (requestOptions.headers) {\n headers = mergeHeaders(headers, requestOptions.headers);\n }\n if (typeof requestOptions.data !== \"undefined\") {\n const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n opts.body = body;\n headers = mergeHeaders(headers, newHeaders);\n }\n if (requestOptions.signal) {\n opts.signal = requestOptions.signal;\n }\n if (requestOptions.withCredentials) {\n opts.credentials = \"include\";\n }\n // Check for node-specific options\n if (!isWeb()) {\n if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n opts.agent = (parsedURL) => {\n if (parsedURL.protocol === \"http:\") {\n return requestOptions.httpAgent || new HTTPAgent();\n }\n return requestOptions.httpsAgent || new HTTPSAgent();\n };\n }\n }\n // Attach headers\n opts.headers = headers;\n return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n const finalOptions = cloneShallow(requestOptions);\n finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n if (typeof userOptions.data !== \"undefined\") {\n finalOptions.data = userOptions.data;\n }\n if (userOptions.signal) {\n finalOptions.signal = userOptions.signal;\n }\n if (context.httpAgent) {\n finalOptions.httpAgent = context.httpAgent;\n }\n if (context.httpsAgent) {\n finalOptions.httpsAgent = context.httpsAgent;\n }\n if (context.digest) {\n finalOptions._digest = context.digest;\n }\n if (typeof context.withCredentials === \"boolean\") {\n finalOptions.withCredentials = context.withCredentials;\n }\n return finalOptions;\n}\nexport async function request(requestOptions) {\n // Client not configured for digest authentication\n if (!requestOptions._digest) {\n return _request(requestOptions);\n }\n // Remove client's digest authentication object from request options\n const _digest = requestOptions._digest;\n delete requestOptions._digest;\n // If client is already using digest authentication, include the digest authorization header\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n }\n // Perform digest request + check\n const response = await _request(requestOptions);\n if (response.status == 401) {\n _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n const response2 = await _request(requestOptions);\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n }\n else {\n _digest.nc++;\n }\n return response2;\n }\n }\n else {\n _digest.nc++;\n }\n return response;\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n if (!isWeb() && data instanceof Stream.Readable) {\n // @ts-ignore\n return [data, {}];\n }\n if (typeof data === \"string\") {\n return [data, {}];\n }\n else if (isBuffer(data)) {\n return [data, {}];\n }\n else if (isArrayBuffer(data)) {\n return [data, {}];\n }\n else if (data && typeof data === \"object\") {\n return [\n JSON.stringify(data),\n {\n \"content-type\": \"application/json\"\n }\n ];\n }\n throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","export function isBuffer(value) {\n return (value != null &&\n value.constructor != null &&\n typeof value.constructor.isBuffer === \"function\" &&\n value.constructor.isBuffer(value));\n}\n","import { createClient, getPatcher } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser, getRequestToken } from '@nextcloud/auth';\nimport { request } from 'webdav/dist/node/request.js';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nexport const defaultRootUrl = generateRemoteUrl('dav' + rootPath);\nexport const getClient = (rootUrl = defaultRootUrl) => {\n const client = createClient(rootUrl, {\n headers: {\n requesttoken: getRequestToken() || '',\n },\n });\n /**\n * Allow to override the METHOD to support dav REPORT\n *\n * @see https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/request.ts\n */\n const patcher = getPatcher();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // https://github.com/perry-mitchell/hot-patcher/issues/6\n patcher.patch('request', (options) => {\n if (options.headers?.method) {\n options.method = options.headers.method;\n delete options.headers.method;\n }\n return request(options);\n });\n return client;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport logger from '../logger';\nconst defaultDavProperties = [\n 'd:getcontentlength',\n 'd:getcontenttype',\n 'd:getetag',\n 'd:getlastmodified',\n 'd:quota-available-bytes',\n 'd:resourcetype',\n 'nc:has-preview',\n 'nc:is-encrypted',\n 'nc:mount-type',\n 'nc:share-attributes',\n 'oc:comments-unread',\n 'oc:favorite',\n 'oc:fileid',\n 'oc:owner-display-name',\n 'oc:owner-id',\n 'oc:permissions',\n 'oc:share-types',\n 'oc:size',\n 'ocs:share-permissions',\n];\nconst defaultDavNamespaces = {\n d: 'DAV:',\n nc: 'http://nextcloud.org/ns',\n oc: 'http://owncloud.org/ns',\n ocs: 'http://open-collaboration-services.org/ns',\n};\n/**\n * TODO: remove and move to @nextcloud/files\n * @param prop\n * @param namespace\n */\nexport const registerDavProperty = function (prop, namespace = { nc: 'http://nextcloud.org/ns' }) {\n if (typeof window._nc_dav_properties === 'undefined') {\n window._nc_dav_properties = defaultDavProperties;\n window._nc_dav_namespaces = defaultDavNamespaces;\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n // Check duplicates\n if (window._nc_dav_properties.find(search => search === prop)) {\n logger.error(`${prop} already registered`, { prop });\n return;\n }\n if (prop.startsWith('<') || prop.split(':').length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return;\n }\n const ns = prop.split(':')[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n};\n/**\n * Get the registered dav properties\n */\nexport const getDavProperties = function () {\n if (typeof window._nc_dav_properties === 'undefined') {\n window._nc_dav_properties = defaultDavProperties;\n }\n return window._nc_dav_properties.map(prop => `<${prop} />`).join(' ');\n};\n/**\n * Get the registered dav namespaces\n */\nexport const getDavNameSpaces = function () {\n if (typeof window._nc_dav_namespaces === 'undefined') {\n window._nc_dav_namespaces = defaultDavNamespaces;\n }\n return Object.keys(window._nc_dav_namespaces).map(ns => `xmlns:${ns}=\"${window._nc_dav_namespaces[ns]}\"`).join(' ');\n};\n/**\n * Get the default PROPFIND request payload\n */\nexport const getDefaultPropfind = function () {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { File, Folder, parseWebdavPermissions } from '@nextcloud/files';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getClient, rootPath } from './WebdavClient';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getDavNameSpaces, getDavProperties, getDefaultPropfind } from './DavProperties';\nconst client = getClient();\nconst reportPayload = `\n\n\t\n\t\t${getDavProperties()}\n\t\n\t\n\t\t1\n\t\n`;\nconst resultToNode = function (node) {\n const props = node.props;\n const permissions = parseWebdavPermissions(props?.permissions);\n const owner = getCurrentUser()?.uid;\n const nodeData = {\n id: props?.fileid || 0,\n source: generateRemoteUrl('dav' + rootPath + node.filename),\n mtime: new Date(node.lastmod),\n mime: node.mime,\n size: props?.size || 0,\n permissions,\n owner,\n root: rootPath,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.['has-preview'],\n },\n };\n delete nodeData.attributes.props;\n return node.type === 'file'\n ? new File(nodeData)\n : new Folder(nodeData);\n};\nexport const getContents = async (path = '/') => {\n const propfindPayload = getDefaultPropfind();\n // Get root folder\n let rootResponse;\n if (path === '/') {\n rootResponse = await client.stat(path, {\n details: true,\n data: getDefaultPropfind(),\n });\n }\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n // Only filter favorites if we're at the root\n data: path === '/' ? reportPayload : propfindPayload,\n headers: {\n // Patched in WebdavClient.ts\n method: path === '/' ? 'REPORT' : 'PROPFIND',\n },\n includeSelf: true,\n });\n const root = rootResponse?.data || contentsResponse.data[0];\n const contents = contentsResponse.data.filter(node => node.filename !== path);\n return {\n folder: resultToNode(root),\n contents: contents.map(resultToNode),\n };\n};\n","import { getLanguage, translate as t } from '@nextcloud/l10n';\nimport FolderSvg from '@mdi/svg/svg/folder.svg?raw';\nimport StarSvg from '@mdi/svg/svg/star.svg?raw';\nimport { basename } from 'path';\nimport { getContents } from '../services/Favorites';\nimport { hashCode } from '../utils/hashUtils';\nimport { loadState } from '@nextcloud/initial-state';\nimport { Node, FileType } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nexport const generateFolderView = function (folder, index = 0) {\n return {\n id: generateIdFromPath(folder),\n name: basename(folder),\n icon: FolderSvg,\n order: index,\n params: {\n dir: folder,\n view: 'favorites',\n },\n parent: 'favorites',\n columns: [],\n getContents,\n };\n};\nexport const generateIdFromPath = function (path) {\n return `favorite-${hashCode(path)}`;\n};\nexport default () => {\n // Load state in function for mock testing purposes\n const favoriteFolders = loadState('files', 'favoriteFolders', []);\n const favoriteFoldersViews = favoriteFolders.map((folder, index) => generateFolderView(folder, index));\n const Navigation = window.OCP.Files.Navigation;\n Navigation.register({\n id: 'favorites',\n name: t('files', 'Favorites'),\n caption: t('files', 'List of favorites files and folders.'),\n emptyTitle: t('files', 'No favorites yet'),\n emptyCaption: t('files', 'Files and folders you mark as favorite will show up here'),\n icon: StarSvg,\n order: 5,\n columns: [],\n getContents,\n });\n favoriteFoldersViews.forEach(view => Navigation.register(view));\n /**\n * Update favourites navigation when a new folder is added\n */\n subscribe('files:favorites:added', (node) => {\n if (node.type !== FileType.Folder) {\n return;\n }\n // Sanity check\n if (node.path === null || !node.root?.startsWith('/files')) {\n logger.error('Favorite folder is not within user files root', { node });\n return;\n }\n addPathToFavorites(node.path);\n });\n /**\n * Remove favourites navigation when a folder is removed\n */\n subscribe('files:favorites:removed', (node) => {\n if (node.type !== FileType.Folder) {\n return;\n }\n // Sanity check\n if (node.path === null || !node.root?.startsWith('/files')) {\n logger.error('Favorite folder is not within user files root', { node });\n return;\n }\n removePathFromFavorites(node.path);\n });\n /**\n * Sort the favorites paths array and\n * update the order property of the existing views\n */\n const updateAndSortViews = function () {\n favoriteFolders.sort((a, b) => a.localeCompare(b, getLanguage(), { ignorePunctuation: true }));\n favoriteFolders.forEach((folder, index) => {\n const view = favoriteFoldersViews.find(view => view.id === generateIdFromPath(folder));\n if (view) {\n view.order = index;\n }\n });\n };\n // Add a folder to the favorites paths array and update the views\n const addPathToFavorites = function (path) {\n const view = generateFolderView(path);\n // Skip if already exists\n if (favoriteFolders.find(folder => folder === path)) {\n return;\n }\n // Update arrays\n favoriteFolders.push(path);\n favoriteFoldersViews.push(view);\n // Update and sort views\n updateAndSortViews();\n Navigation.register(view);\n };\n // Remove a folder from the favorites paths array and update the views\n const removePathFromFavorites = function (path) {\n const id = generateIdFromPath(path);\n const index = favoriteFolders.findIndex(folder => folder === path);\n // Skip if not exists\n if (index === -1) {\n return;\n }\n // Update arrays\n favoriteFolders.splice(index, 1);\n favoriteFoldersViews.splice(index, 1);\n // Update and sort views\n Navigation.remove(id);\n updateAndSortViews();\n };\n};\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replace(/\\+/g, ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {encode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',', ...options};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport queryString from 'query-string'\n\nVue.use(Router)\n\nconst router = new Router({\n\tmode: 'history',\n\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl('/apps/files', ''),\n\tlinkActiveClass: 'active',\n\n\troutes: [\n\t\t{\n\t\t\tpath: '/',\n\t\t\t// Pretending we're using the default view\n\t\t\talias: '/files',\n\t\t},\n\t\t{\n\t\t\tpath: '/:view/:fileid?',\n\t\t\tname: 'filelist',\n\t\t\tprops: true,\n\t\t},\n\t],\n\n\t// Custom stringifyQuery to prevent encoding of slashes in the url\n\tstringifyQuery(query) {\n\t\tconst result = queryString.stringify(query).replace(/%2F/gmi, '/')\n\t\treturn result ? ('?' + result) : ''\n\t},\n})\n\nexport default router\n","import './templates.js';\nimport './legacy/filelistSearch.js';\nimport './actions/deleteAction';\nimport './actions/downloadAction';\nimport './actions/editLocallyAction';\nimport './actions/favoriteAction';\nimport './actions/openFolderAction';\nimport './actions/renameAction';\nimport './actions/sidebarAction';\nimport './actions/viewInFolderAction';\nimport Vue from 'vue';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport FilesListView from './views/FilesList.vue';\nimport NavigationService from './services/Navigation';\nimport NavigationView from './views/Navigation.vue';\nimport processLegacyFilesViews from './legacy/navigationMapper.js';\nimport registerFavoritesView from './views/favorites';\nimport registerPreviewServiceWorker from './services/ServiceWorker.js';\nimport router from './router/router.js';\nimport RouterService from './services/RouterService';\nimport SettingsModel from './models/Setting.js';\nimport SettingsService from './services/Settings.js';\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nconst Router = new RouterService(router);\nObject.assign(window.OCP.Files, { Router });\n// Init Pinia store\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\n// Init Navigation Service\nconst Navigation = new NavigationService();\nObject.assign(window.OCP.Files, { Navigation });\nVue.prototype.$navigation = Navigation;\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\n// Init Navigation View\nconst View = Vue.extend(NavigationView);\nconst FilesNavigationRoot = new View({\n name: 'FilesNavigationRoot',\n propsData: {\n Navigation,\n },\n router,\n pinia,\n});\nFilesNavigationRoot.$mount('#app-navigation-files');\n// Init content list view\nconst ListView = Vue.extend(FilesListView);\nconst FilesList = new ListView({\n name: 'FilesListRoot',\n router,\n pinia,\n});\nFilesList.$mount('#app-content-vue');\n// Init legacy and new files views\nprocessLegacyFilesViews();\nregisterFavoritesView();\n// Register preview service worker\nregisterPreviewServiceWorker();\n","export default class RouterService {\n _router;\n constructor(router) {\n this._router = router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this._router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this._router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { generateUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\nexport default () => {\n\tif ('serviceWorker' in navigator) {\n\t\t// Use the window load event to keep the page load performant\n\t\twindow.addEventListener('load', async () => {\n\t\t\ttry {\n\t\t\t\tconst url = generateUrl('/apps/files/preview-service-worker.js', {}, { noRewrite: true })\n\t\t\t\tconst registration = await navigator.serviceWorker.register(url, { scope: '/' })\n\t\t\t\tlogger.debug('SW registered: ', { registration })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('SW registration failed: ', { error })\n\t\t\t}\n\t\t})\n\t} else {\n\t\tlogger.debug('Service Worker is not enabled on this browser.')\n\t}\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([\"exports\"], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.CancelablePromise = mod.exports;\n }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.CancelablePromise = void 0;\n _exports.cancelable = cancelable;\n _exports.default = void 0;\n _exports.isCancelablePromise = isCancelablePromise;\n\n function _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\n function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\n function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\n function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\n function _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\n function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\n function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var 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\n function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\n function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\n function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\n function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\n function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\n function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\n function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\n var toStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : '@@toStringTag';\n\n var _internals = /*#__PURE__*/new WeakMap();\n\n var _promise = /*#__PURE__*/new WeakMap();\n\n var CancelablePromiseInternal = /*#__PURE__*/function () {\n function CancelablePromiseInternal(_ref) {\n var _ref$executor = _ref.executor,\n executor = _ref$executor === void 0 ? function () {} : _ref$executor,\n _ref$internals = _ref.internals,\n internals = _ref$internals === void 0 ? defaultInternals() : _ref$internals,\n _ref$promise = _ref.promise,\n promise = _ref$promise === void 0 ? new Promise(function (resolve, reject) {\n return executor(resolve, reject, function (onCancel) {\n internals.onCancelList.push(onCancel);\n });\n }) : _ref$promise;\n\n _classCallCheck(this, CancelablePromiseInternal);\n\n _classPrivateFieldInitSpec(this, _internals, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _promise, {\n writable: true,\n value: void 0\n });\n\n _defineProperty(this, toStringTag, 'CancelablePromise');\n\n this.cancel = this.cancel.bind(this);\n\n _classPrivateFieldSet(this, _internals, internals);\n\n _classPrivateFieldSet(this, _promise, promise || new Promise(function (resolve, reject) {\n return executor(resolve, reject, function (onCancel) {\n internals.onCancelList.push(onCancel);\n });\n }));\n }\n\n _createClass(CancelablePromiseInternal, [{\n key: \"then\",\n value: function then(onfulfilled, onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).then(createCallback(onfulfilled, _classPrivateFieldGet(this, _internals)), createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n }, {\n key: \"catch\",\n value: function _catch(onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).catch(createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n }, {\n key: \"finally\",\n value: function _finally(onfinally, runWhenCanceled) {\n var _this = this;\n\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList.push(onfinally);\n }\n\n return makeCancelable(_classPrivateFieldGet(this, _promise).finally(createCallback(function () {\n if (onfinally) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(_this, _internals).onCancelList = _classPrivateFieldGet(_this, _internals).onCancelList.filter(function (callback) {\n return callback !== onfinally;\n });\n }\n\n return onfinally();\n }\n }, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n _classPrivateFieldGet(this, _internals).isCanceled = true;\n\n var callbacks = _classPrivateFieldGet(this, _internals).onCancelList;\n\n _classPrivateFieldGet(this, _internals).onCancelList = [];\n\n var _iterator = _createForOfIteratorHelper(callbacks),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var callback = _step.value;\n\n if (typeof callback === 'function') {\n try {\n callback();\n } catch (err) {\n console.error(err);\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"isCanceled\",\n value: function isCanceled() {\n return _classPrivateFieldGet(this, _internals).isCanceled === true;\n }\n }]);\n\n return CancelablePromiseInternal;\n }();\n\n var CancelablePromise = /*#__PURE__*/function (_CancelablePromiseInt) {\n _inherits(CancelablePromise, _CancelablePromiseInt);\n\n var _super = _createSuper(CancelablePromise);\n\n function CancelablePromise(executor) {\n _classCallCheck(this, CancelablePromise);\n\n return _super.call(this, {\n executor: executor\n });\n }\n\n return _createClass(CancelablePromise);\n }(CancelablePromiseInternal);\n\n _exports.CancelablePromise = CancelablePromise;\n\n _defineProperty(CancelablePromise, \"all\", function all(iterable) {\n return makeAllCancelable(iterable, Promise.all(iterable));\n });\n\n _defineProperty(CancelablePromise, \"allSettled\", function allSettled(iterable) {\n return makeAllCancelable(iterable, Promise.allSettled(iterable));\n });\n\n _defineProperty(CancelablePromise, \"any\", function any(iterable) {\n return makeAllCancelable(iterable, Promise.any(iterable));\n });\n\n _defineProperty(CancelablePromise, \"race\", function race(iterable) {\n return makeAllCancelable(iterable, Promise.race(iterable));\n });\n\n _defineProperty(CancelablePromise, \"resolve\", function resolve(value) {\n return cancelable(Promise.resolve(value));\n });\n\n _defineProperty(CancelablePromise, \"reject\", function reject(reason) {\n return cancelable(Promise.reject(reason));\n });\n\n _defineProperty(CancelablePromise, \"isCancelable\", isCancelablePromise);\n\n var _default = CancelablePromise;\n _exports.default = _default;\n\n function cancelable(promise) {\n return makeCancelable(promise, defaultInternals());\n }\n\n function isCancelablePromise(promise) {\n return promise instanceof CancelablePromise || promise instanceof CancelablePromiseInternal;\n }\n\n function createCallback(onResult, internals) {\n if (onResult) {\n return function (arg) {\n if (!internals.isCanceled) {\n var result = onResult(arg);\n\n if (isCancelablePromise(result)) {\n internals.onCancelList.push(result.cancel);\n }\n\n return result;\n }\n\n return arg;\n };\n }\n }\n\n function makeCancelable(promise, internals) {\n return new CancelablePromiseInternal({\n internals: internals,\n promise: promise\n });\n }\n\n function makeAllCancelable(iterable, promise) {\n var internals = defaultInternals();\n internals.onCancelList.push(function () {\n var _iterator2 = _createForOfIteratorHelper(iterable),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var resolvable = _step2.value;\n\n if (isCancelablePromise(resolvable)) {\n resolvable.cancel();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n return new CancelablePromiseInternal({\n internals: internals,\n promise: promise\n });\n }\n\n function defaultInternals() {\n return {\n isCanceled: false,\n onCancelList: []\n };\n }\n});\n//# sourceMappingURL=CancelablePromise.js.map","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA\",\"sourcesContent\":[\"\\n.breadcrumb {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\n\\t::v-deep a {\\n\\t\\tcursor: pointer !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.custom-svg-icon[data-v-93e9b2f4]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-93e9b2f4] svg{height:22px;width:22px;fill:currentColor}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/CustomSvgIconRender.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.custom-svg-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\talign-self: center;\\n\\tjustify-content: center;\\n\\tjustify-self: center;\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\topacity: 1;\\n\\n\\t::v-deep svg {\\n\\t\\t// mdi icons have a size of 24px\\n\\t\\t// 22px results in roughly 16px inner size\\n\\t\\theight: 22px;\\n\\t\\twidth: 22px;\\n\\t\\tfill: currentColor;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-324501a3]{color:#a08b00;width:fit-content;height:fit-content}.favorite-marker-icon[data-v-324501a3] svg{width:26px;height:26px}.favorite-marker-icon[data-v-324501a3] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,aAAA,CACA,iBAAA,CACA,kBAAA,CAGC,4CAEC,UAAA,CACA,WAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: #a08b00;\\n\\twidth: fit-content;\\n\\theight: fit-content;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 26px;\\n\\t\\t\\theight: 26px;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-fa7d88ca]:hover,tr[data-v-fa7d88ca]:focus,tr[data-v-fa7d88ca]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-fa7d88ca]:not([style*=background]){background:var(--color-loading-dark)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\"AAGC,+EAGC,6CAAA,CAKF,wEACI,oCAAA\",\"sourcesContent\":[\"\\n/* Hover effect on tbody lines only */\\ntr {\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n}\\n\\n/* Preview not loaded animation effect */\\n.files-list__row-icon-preview:not([style*='background']) {\\n background: var(--color-loading-dark);\\n\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-2201dce1]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-2201dce1]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tpadding-bottom: 300px;\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n}\\n\\ntd {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-3e864709]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-3e864709]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-03e57b1e]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t::v-deep .button-vue__wrapper {\\n\\t\\twidth: 100%;\\n\\t\\tspan.button-vue__text {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--cell-margin) * -1);\\n\\t// Reverse padding\\n\\tpadding: 0 4px 0 16px !important;\\n\\n\\t// Icon after text\\n\\t.button-vue__wrapper {\\n\\t\\tflex-direction: row-reverse;\\n\\t\\t// Take max inner width for text overflow ellipsis\\n\\t\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.button-vue__icon {\\n\\t\\ttransition-timing-function: linear;\\n\\t\\ttransition-duration: .1s;\\n\\t\\ttransition-property: opacity;\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t.button-vue__text {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&--active,\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\t.button-vue__icon {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-e796f704]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-e796f704] tbody,.files-list[data-v-e796f704] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-e796f704] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-e796f704] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}.files-list[data-v-e796f704] td,.files-list[data-v-e796f704] th{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-e796f704] td span,.files-list[data-v-e796f704] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-e796f704] .files-list__row-checkbox{justify-content:center}.files-list[data-v-e796f704] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-e796f704] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-e796f704] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-e796f704] .files-list__row:hover .favorite-marker-icon svg path{stroke:var(--color-background-dark)}.files-list[data-v-e796f704] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-e796f704] .files-list__row-icon *{cursor:pointer}.files-list[data-v-e796f704] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-e796f704] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-e796f704] .files-list__row-icon-preview{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list[data-v-e796f704] .files-list__row-icon-favorite{position:absolute;top:0px;right:-10px}.files-list[data-v-e796f704] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-e796f704] .files-list__row-name a{display:flex;align-items:center;width:100%;height:100%;min-width:0}.files-list[data-v-e796f704] .files-list__row-name a:focus .files-list__row-name-text,.files-list[data-v-e796f704] .files-list__row-name a:focus-visible .files-list__row-name-text{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list[data-v-e796f704] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:5px 10px;margin-left:-10px;display:inline-flex}.files-list[data-v-e796f704] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast)}.files-list[data-v-e796f704] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-e796f704] .files-list__row-rename input{width:100%;margin-left:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-e796f704] .files-list__row-rename input:invalid{border-color:var(--color-error);color:red}.files-list[data-v-e796f704] .files-list__row-actions{width:auto}.files-list[data-v-e796f704] .files-list__row-actions~td,.files-list[data-v-e796f704] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-e796f704] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-e796f704] .files-list__row-actions button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list[data-v-e796f704] .files-list__row-mtime,.files-list[data-v-e796f704] .files-list__row-size{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list[data-v-e796f704] .files-list__row-mtime .files-list__column-sort-button,.files-list[data-v-e796f704] .files-list__row-size .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list[data-v-e796f704] .files-list__row-mtime .files-list__column-sort-button .button-vue__wrapper,.files-list[data-v-e796f704] .files-list__row-size .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list[data-v-e796f704] .files-list__row-mtime{width:calc(var(--row-height)*2)}.files-list[data-v-e796f704] .files-list__row-column-custom{width:calc(var(--row-height)*2)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAGD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA,CAGD,gEACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,0EACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,uDACC,sBAAA,CACA,8EACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,iHACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,2GACC,mBAAA,CAMH,mFACC,mCAAA,CAID,mDACC,iBAAA,CACA,YAAA,CACA,gBAAA,CACA,kBAAA,CAEA,iCAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAGA,qDACC,cAAA,CAGD,wDACC,0BAAA,CAEA,gGACC,8BAAA,CACA,+BAAA,CAIF,2DACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAGD,4DACC,iBAAA,CACA,OAAA,CACA,WAAA,CAKF,mDAEC,eAAA,CAEA,aAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAEA,WAAA,CAGA,oLAEC,mDAAA,CACA,kBAAA,CAIF,8EACC,4BAAA,CAEA,gBAAA,CACA,iBAAA,CAEA,mBAAA,CAGD,6EACC,mCAAA,CAKF,qDACC,UAAA,CACA,eAAA,CACA,2DACC,UAAA,CAEA,gBAAA,CACA,eAAA,CACA,gBAAA,CAEA,mEAEC,+BAAA,CACA,SAAA,CAKH,sDACC,UAAA,CAGA,kHAEC,2BAAA,CAIA,+EAEC,kBAAA,CAED,6GAEC,mCAAA,CAKH,uGAGC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uKACC,+BAAA,CACA,iNACC,kBAAA,CAKH,oDACC,+BAAA,CAGD,4DACC,+BAAA\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 55px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: 44px;\\n\\t--icon-preview-size: 32px;\\n\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&::v-deep {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody, .vue-recycle-scroller__slot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.vue-recycle-scroller__slot[role='thead'] {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: left;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t.files-list__row:hover .favorite-marker-icon svg path {\\n\\t\\t\\tstroke: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-right: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tright: -10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\ta {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: 20px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-left: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-error);\\n\\t\\t\\t\\t\\tcolor: red;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\t// Right align text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t\\twidth: calc(var(--row-height) * 1.5);\\n\\t\\t\\t// opacity varies with the size\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\t\\t// Icon is before text since size is right aligned\\n\\t\\t\\t.files-list__column-sort-button {\\n\\t\\t\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t\\t\\t.button-vue__wrapper {\\n\\t\\t\\t\\t\\tflex-direction: row;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota--not-unlimited[data-v-918797b2] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-918797b2]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t&--not-unlimited::v-deep .app-navigation-entry__title {\\n\\t\\tmargin-top: -4px;\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: 10px;\\n\\t\\tmargin-left: 44px;\\n\\t\\twidth: calc(100% - 44px - 22px);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.template-picker__item[data-v-5b09ec60]{display:flex}.template-picker__label[data-v-5b09ec60]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-5b09ec60],.template-picker__label *[data-v-5b09ec60]{cursor:pointer;user-select:none}.template-picker__label[data-v-5b09ec60]::before{display:none !important}.template-picker__preview[data-v-5b09ec60]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-5b09ec60]{border-color:var(--color-primary-element)}.template-picker__preview--failed[data-v-5b09ec60]{display:flex}.template-picker__image[data-v-5b09ec60]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-5b09ec60]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-5b09ec60]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TemplatePreview.vue\"],\"names\":[],\"mappings\":\"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,yCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n\\n.template-picker {\\n\\t&__item {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: flex;\\n\\t\\t// Align in the middle of the grid\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: block;\\n\\t\\toverflow: hidden;\\n\\t\\t// Stretch so all entries are the same width\\n\\t\\tflex: 1 1;\\n\\t\\twidth: var(--width);\\n\\t\\tmin-height: var(--height);\\n\\t\\tmax-height: var(--height);\\n\\t\\tpadding: 0;\\n\\t\\tborder: var(--border) solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\tinput:checked + label > & {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\n\\t\\t&--failed {\\n\\t\\t\\t// Make sure to properly center fallback icon\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\tmax-width: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t// Failed preview, fallback to mime icon\\n\\t&__preview--failed &__image {\\n\\t\\twidth: calc(var(--margin) * 8);\\n\\t\\t// Center mime icon\\n\\t\\tmargin: auto;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\tobject-fit: initial;\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\t// also count preview border\\n\\t\\tmax-width: calc(var(--width) + 2*2px);\\n\\t\\tpadding: var(--margin);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-4f40f675]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-4f40f675]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-4f40f675]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-4f40f675]{flex:0 0}.files-list__refresh-icon[data-v-4f40f675]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-4f40f675]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\n\\t// TODO: remove after all legacy views are migrated\\n\\t// Hides the legacy app-content if shown view is not legacy\\n\\t&:not(&--hidden)::v-deep + #app-content {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n$margin: 4px;\\n$navigationToggleSize: 50px;\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-content: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin: $margin $margin $margin $navigationToggleSize;\\n\\t\\t> * {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\t}\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 44px;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-657a978e] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-657a978e]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-657a978e]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\\n.app-navigation::v-deep .app-navigation-entry-icon {\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: center;\\n}\\n\\n.app-navigation > ul.app-navigation__list {\\n\\t// Use flex gap value for more elegant spacing\\n\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.setting-link[data-v-0626eaac]:hover{text-decoration:underline}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourcesContent\":[\"\\n.setting-link:hover {\\n\\ttext-decoration: underline;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.templates-picker__form[data-v-d46f1dc6]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-d46f1dc6]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-d46f1dc6]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-d46f1dc6]{display:flex;justify-content:end;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-d46f1dc6],.templates-picker__buttons input[type=submit][data-v-d46f1dc6]{height:44px}.templates-picker[data-v-d46f1dc6] .modal-container{position:relative}.templates-picker__loading[data-v-d46f1dc6]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/TemplatePicker.vue\"],\"names\":[],\"mappings\":\"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,mBAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA\",\"sourcesContent\":[\"\\n.templates-picker {\\n\\t&__form {\\n\\t\\tpadding: calc(var(--margin) * 2);\\n\\t\\t// Will be handled by the buttons\\n\\t\\tpadding-bottom: 0;\\n\\n\\t\\th2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: var(--margin) 0 calc(var(--margin) * 2);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-gap: calc(var(--margin) * 2);\\n\\t\\tgrid-auto-columns: 1fr;\\n\\t\\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\\n\\t\\tmax-width: calc(var(--fullwidth) * 6);\\n\\t\\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\\n\\t\\t// Make sure all rows are the same height\\n\\t\\tgrid-auto-rows: 1fr;\\n\\t\\t// Center the columns set\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: end;\\n\\t\\tpadding: calc(var(--margin) * 2) var(--margin);\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tbackground-image: linear-gradient(0, var(--gradient-main-background));\\n\\n\\t\\tbutton, input[type='submit'] {\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make sure we're relative for the loading emptycontent on top\\n\\t::v-deep .modal-container {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__loading {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n/* @keyframes preview-gradient-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n} */\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\";AAyzBA;;;;;;;;;;GAUA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar objectCreate = Object.create || objectCreatePolyfill\nvar objectKeys = Object.keys || objectKeysPolyfill\nvar bind = Function.prototype.bind || functionBindPolyfill\n\nfunction EventEmitter() {\n if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nvar hasDefineProperty;\ntry {\n var o = {};\n if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });\n hasDefineProperty = o.x === 0;\n} catch (err) { hasDefineProperty = false }\nif (hasDefineProperty) {\n Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n // check whether the input is a positive number (whose value is zero or\n // greater and not a NaN).\n if (typeof arg !== 'number' || arg < 0 || arg !== arg)\n throw new TypeError('\"defaultMaxListeners\" must be a positive number');\n defaultMaxListeners = arg;\n }\n });\n} else {\n EventEmitter.defaultMaxListeners = defaultMaxListeners;\n}\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n if (arguments.length > 1)\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Unhandled \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = objectCreate(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' \"' + String(type) + '\" listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit.');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n if (typeof console === 'object' && console.warn) {\n console.warn('%s: %s', w.name, w.message);\n }\n }\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n switch (arguments.length) {\n case 0:\n return this.listener.call(this.target);\n case 1:\n return this.listener.call(this.target, arguments[0]);\n case 2:\n return this.listener.call(this.target, arguments[0], arguments[1]);\n case 3:\n return this.listener.call(this.target, arguments[0], arguments[1],\n arguments[2]);\n default:\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i)\n args[i] = arguments[i];\n this.listener.apply(this.target, args);\n }\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = bind.call(onceWrapper, state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else\n spliceOne(list, position);\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = objectKeys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = objectCreate(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (!events)\n return [];\n\n var evlistener = events[type];\n if (!evlistener)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction objectCreatePolyfill(proto) {\n var F = function() {};\n F.prototype = proto;\n return new F;\n}\nfunction objectKeysPolyfill(obj) {\n var keys = [];\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n return k;\n}\nfunction functionBindPolyfill(context) {\n var fn = this;\n return function () {\n return fn.apply(context, arguments);\n };\n}\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Scrollparent = factory();\n }\n}(this, function () {\n function isScrolling(node) {\n var overflow = getComputedStyle(node, null).getPropertyValue(\"overflow\");\n\n return overflow.indexOf(\"scroll\") > -1 || overflow.indexOf(\"auto\") > - 1;\n }\n\n function scrollParent(node) {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return undefined;\n }\n\n var current = node.parentNode;\n while (current.parentNode) {\n if (isScrolling(current)) {\n return current;\n }\n\n current = current.parentNode;\n }\n\n return document.scrollingElement || document.documentElement;\n }\n\n return scrollParent;\n}));","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n body = new Blob(self._body, {\n type: (headersObj['content-type'] || {}).value || ''\n });\n }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","import { render, staticRenderFns } from \"./Folder.vue?vue&type=template&id=5c04f969&\"\nimport script from \"./Folder.vue?vue&type=script&lang=js&\"\nexport * from \"./Folder.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2181;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2181: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(17147)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","exports","path","split","map","encodeURIComponent","join","e","t","module","self","a","d","default","T","o","i","n","r","s","l","c","u","p","name","components","NcButton","DotsHorizontal","NcPopover","props","open","type","Boolean","forceMenu","forceTitle","menuTitle","String","primary","validator","indexOf","defaultIcon","ariaLabel","ariaHidden","placement","boundariesElement","Element","document","querySelector","container","Object","disabled","inline","Number","emits","data","opened","this","focusIndex","randomId","concat","Z","computed","triggerBtnType","watch","methods","isValidSingleAction","componentOptions","Ctor","extendOptions","tag","includes","openMenu","$emit","closeMenu","arguments","length","$refs","popover","clearFocusTrap","returnFocus","menuButton","$el","focus","onOpen","$nextTick","focusFirstAction","onMouseFocusAction","activeElement","target","closest","menu","querySelectorAll","focusAction","onKeydown","keyCode","shiftKey","focusPreviousAction","focusNextAction","focusLastAction","preventDefault","removeCurrentActive","classList","remove","add","preventIfEvent","stopPropagation","onFocus","onBlur","render","$slots","filter","every","propsData","href","startsWith","window","location","origin","util","warn","A","m","h","g","v","b","C","f","y","k","w","S","scopedSlots","icon","class","x","listeners","click","z","children","text","trim","call","N","j","P","title","staticClass","attrs","ref","on","blur","slot","size","delay","handleResize","shown","boundary","popoverBaseClass","setReturnFocus","show","hide","toString","tabindex","keydown","mousemove","id","role","slice","styleTagTransform","setAttributes","insert","bind","domAPI","insertStyleElement","locals","E","B","_","undefined","nativeType","wide","download","to","exact","console","navigate","isActive","isExactActive","active","rel","$attrs","$listeners","custom","W","start","Date","setTimeout","pause","clearTimeout","clear","getTimeLeft","getStateRunning","NcActions","ChevronLeft","ChevronRight","Close","Pause","Play","directives","tooltip","mixins","hasPrevious","hasNext","outTransition","enableSlideshow","slideshowDelay","slideshowPaused","enableSwipe","spreadNavigation","canClose","dark","closeButtonContained","additionalTrapElements","Array","inlineActions","mc","playing","slideshowTimeout","iconSize","focusTrap","randId","internalShow","showModal","modalTransitionName","playPauseTitle","cssVariables","closeButtonAriaLabel","prevButtonAriaLabel","nextButtonAriaLabel","mask","updateContainerElements","beforeMount","addEventListener","handleKeydown","beforeDestroy","removeEventListener","off","destroy","mounted","useFocusTrap","handleSwipe","body","insertBefore","lastChild","appendChild","destroyed","previous","resetSlideshow","next","close","togglePlayPause","handleSlideshow","clearSlideshowTimeout","async","allowOutsideClick","fallbackFocus","trapStack","L","createFocusTrap","activate","deactivate","D","F","O","G","$","M","I","U","R","q","_self","_c","appear","rawName","value","expression","style","_v","_s","_e","modifiers","auto","height","width","stroke","fill","cx","cy","_t","_u","key","fn","proxy","mousedown","currentTarget","apply","invisible","Dropdown","inheritAttrs","HTMLElement","SVGElement","popperContent","$focusTrap","escapeDeactivates","afterShow","afterHide","_g","_b","distance","options","themes","html","VTooltip","getGettextBuilder","detectLocale","locale","translations","Actions","Activities","Choose","Custom","Favorite","Flags","Global","Next","Objects","Open","Previous","Search","Settings","Submit","Symbols","items","forEach","pluralId","msgid","msgid_plural","msgstr","addTranslation","build","ngettext","gettext","isMobile","created","handleWindowResize","documentElement","clientWidth","$on","onIsMobileChanged","$off","Math","random","replace","isArray","push","setAttribute","assign","_nc_focus_trap","version","sources","names","mappings","sourcesContent","sourceRoot","btoa","unescape","JSON","stringify","identifier","base","css","media","sourceMap","supports","layer","references","updater","byIndex","splice","update","HTMLIFrameElement","contentDocument","head","Error","createElement","attributes","nc","parentNode","removeChild","styleSheet","cssText","firstChild","createTextNode","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","__esModule","defineProperty","enumerable","get","prototype","hasOwnProperty","Symbol","toStringTag","NcModal","required","showNavigation","selectedSection","linkClicked","addedScrollListener","scroller","hasNavigation","settingsNavigationAriaLabel","updated","settingsScroller","handleScroll","getSettingsNavigation","handleSettingsNavigationClick","getElementById","scrollIntoView","behavior","handleCloseModal","scrollTop","unfocusNavigationItem","className","handleLinkKeydown","code","event","test","htmlId","disableDrop","hovering","crumbId","nameTitleFallback","linkAttributes","onOpenChange","dropped","$parent","dragEnter","dragLeave","contains","relatedTarget","crumb","draggable","dragstart","drop","dragover","dragenter","dragleave","_d","URL","onClick","isIconUrl","backgroundImage","domProps","textContent","isLongText","nativeOn","before","$destroy","beforeUpdate","getText","closeAfterClick","NcActionRouter","NcActionLink","NcBreadcrumb","IconFolder","rootIcon","hiddenCrumbs","hiddenIndices","menuBreadcrumbProps","subscribe","delayedResize","delayedHideCrumbs","unsubscribe","hideCrumbs","closeActions","actionsBreadcrumb","offsetWidth","getTotalWidth","breadcrumb__actions","floor","pow","getWidth","elm","arraysEqual","sort","reduce","minWidth","dragStart","dragOver","set","round","actions","svg","cleanSvg","sanitizeSVG","innerHTML","AlertCircle","Check","label","labelOutside","labelVisible","placeholder","showTrailingButton","trailingButtonLabel","success","error","helperText","inputClass","computedId","inputName","hasLeadingIcon","hasTrailingIcon","hasPlaceholder","computedPlaceholder","isValidLabel","input","select","handleInput","handleTrailingButtonClick","for","getCurrentDirectory","_OCA","_OCA$Files","_OCA$Files$App","_OCA$Files$App$curren","currentDirInfo","OCA","Files","App","currentFileList","dirInfo","previewWidth","basename","checked","fileid","filename","previewUrl","hasPreview","mime","ratio","failedPreview","nameWithoutExt","realPreviewUrl","mimeIcon","getCurrentUser","generateUrl","pathSections","relativePath","section","encodeFilePath","OC","MimeType","getIconUrl","onCheck","onFailure","_vm","NcEmptyContent","TemplatePreview","logger","loading","provider","emptyTemplate","_this$provider","_this$provider2","mimetypes","selectedTemplate","templates","find","template","margin","border","fetchedProvider","axios","generateOcsUrl","ocs","getTemplates","app","onSubmit","currentDirectory","fileList","_this$provider3","_this$provider4","debug","extension","_this$selectedTemplat","_this$selectedTemplat2","fileInfo","filePath","templatePath","templateType","post","createFromTemplate","normalize","addAndFetchFileInfo","then","status","model","FileInfoModel","filesClient","fileAction","fileActions","getDefaultFileAction","PERMISSION_ALL","action","$file","findFileEl","dir","fileInfoModel","showError","$event","_l","getLoggerBuilder","setApp","detectUser","Vue","mixin","TemplatePickerRoot","loadState","templatesPath","TemplatePicker","extend","TemplatePickerView","$mount","initTemplatesPlugin","attach","addMenuEntry","displayName","templateName","iconClass","fileType","actionLabel","actionHandler","initTemplatesFolder","removeMenuEntry","Plugins","register","index","newTemplatePlugin","response","copySystemTemplates","changeDirectory","template_path","FilesPlugin","_ref","query","setFilter","humanList","humanListBinary","formatFileSize","skipSmallSizes","binaryPrefixes","order","log","min","readableFormat","relativeSize","toFixed","parseFloat","toLocaleString","user","FileType","Permission","setUid","uid","isDavRessource","source","davService","match","validateData","mtime","crtime","permissions","NONE","ALL","owner","root","service","_data","_attributes","_knownDavService","constructor","handler","prop","Reflect","deleteProperty","Proxy","extname","dirname","firstMatch","url","pathname","READ","pop","move","destination","rename","File","Folder","super","DefaultType","FileAction","validateAction","_action","iconSvgInline","enabled","exec","execBatch","renderInline","values","registerFileAction","_nc_fileactions","search","getFileActions","nodes","view","node","permission","DELETE","delete","emit","Promise","all","triggerDownload","hiddenElement","downloadNodes","secret","substring","files","UPDATE","link","_getCurrentUser","result","host","encodePath","token","openLocalClient","navigator","userAgent","shouldFavorite","some","favorite","favoriteNode","willFavorite","tags","TAG_FAVORITE","StarSvg","_node$root","_node$root$startsWith","FolderSvg","OCP","Router","goToRoute","HIDDEN","ACTION_DETAILS","_window","_window$OCA","_window$OCA$Files","_nodes$0$root","Sidebar","_window2","_window2$OCA","_window2$OCA$Files","_window2$OCA$Files$Si","_window2$OCA$Files$Si2","getTarget","isProxyAvailable","HOOK_SETUP","supported","perf","ApiProxy","plugin","hook","targetQueue","onQueue","defaultSettings","settings","item","defaultValue","localSettingsSaveId","currentSettings","raw","localStorage","getItem","parse","fallbacks","getSettings","setSettings","setItem","now","performance","_a","perf_hooks","pluginId","proxiedOn","_target","args","method","proxiedTarget","keys","resolve","setupDevtoolsPlugin","pluginDescriptor","setupFn","descriptor","__VUE_DEVTOOLS_GLOBAL_HOOK__","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","__VUE_DEVTOOLS_PLUGINS__","activePinia","setActivePinia","pinia","piniaSymbol","isPlainObject","toJSON","MutationType","IS_CLIENT","USE_DEVTOOLS","__VUE_PROD_DEVTOOLS__","_global","global","globalThis","opts","xhr","XMLHttpRequest","responseType","onload","saveAs","onerror","send","corsEnabled","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","_navigator","isMacOSWebView","HTMLAnchorElement","blob","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","autoBom","Blob","fromCharCode","bom","popup","innerText","force","isSafari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","toastMessage","message","piniaMessage","__VUE_DEVTOOLS_TOAST__","isPinia","checkClipboardAccess","checkNotFocusedError","toLowerCase","fileInput","formatDisplay","display","_custom","PINIA_ROOT_LABEL","PINIA_ROOT_ID","formatStoreForInspectorTree","store","$id","formatEventData","events","operations","oldValue","newValue","operation","formatMutationType","direct","patchFunction","patchObject","isTimelineActive","componentStateTypes","MUTATIONS_LAYER_ID","INSPECTOR_ID","assign$1","getStoreType","registerPiniaDevtools","logo","packageName","homepage","api","addTimelineLayer","color","addInspector","treeFilterPlaceholder","clipboard","writeText","state","actionGlobalCopyState","readText","actionGlobalPasteState","sendInspectorTree","sendInspectorState","actionGlobalSaveState","accept","reject","onchange","file","oncancel","actionGlobalOpenStateFile","nodeActions","nodeId","$reset","inspectComponent","payload","ctx","componentInstance","_pStores","piniaStores","instanceData","editable","_isOptionsAPI","toRaw","$state","_getters","getters","getInspectorTree","inspectorId","stores","from","rootNodes","getInspectorState","inspectedStore","storeNames","storeMap","storeId","getterName","_customProperties","customProperties","formatStoreForInspectorState","editInspectorState","unshift","has","editComponentState","activeAction","runningActionId","patchActionForGrouping","actionNames","wrapWithProxy","storeActions","actionName","_actionId","trackedStore","retValue","devtoolsPlugin","originalHotUpdate","_hotUpdate","newStore","_hmrPayload","logStoreChanges","$onAction","after","onError","groupId","addTimelineEvent","layerId","time","subtitle","logType","unref","notifyComponentUpdate","deep","$subscribe","eventData","detached","flush","hotUpdate","markRaw","info","$dispose","addStoreToDevtools","addSubscription","subscriptions","callback","onCleanup","removeSubscription","idx","getCurrentScope","onScopeDispose","triggerSubscriptions","fallbackRunWithContext","mergeReactiveObjects","patchToApply","Map","Set","subPatch","targetValue","isRef","isReactive","skipHydrateSymbol","skipHydrateMap","WeakMap","createSetupStore","setup","hot","isOptionsStore","scope","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","debuggerEvents","actionSubscriptions","initialState","hotState","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","nextTick","newState","wrapAction","afterCallbackList","onErrorCallbackList","ret","catch","partialStore","_p","stopWatcher","run","stop","_r","reactive","runWithContext","setupStore","effectScope","effect","obj","actionValue","nonEnumerable","writable","configurable","extender","extensions","hydrate","defineStore","idOrOptions","setupOptions","isSetupStore","useStore","hasContext","getCurrentInstance","inject","localState","toRefs","computedGetters","createOptionsStore","compareNumbers","numberA","numberB","compareUnicode","stringA","stringB","localeCompare","abs","RE_NUMBERS","RE_LEADING_OR_TRAILING_WHITESPACES","RE_WHITESPACES","RE_INT_OR_FLOAT","RE_DATE","RE_LEADING_ZERO","RE_UNICODE_CHARACTERS","stringCompare","normalizeAlphaChunk","chunk","parseNumber","parsedNumber","isNaN","normalizeNumericChunk","chunks","createChunkMap","normalizedString","createChunkMaps","chunksMaps","createChunks","isFunction","valueOf","isNull","isSymbol","isUndefined","getMappedValueRecord","stringValue","getTime","parsedDate","_unused","parseDate","numberify","isObject","createIdentifierFn","isInteger","getOwnPropertyDescriptor","orderBy","collection","identifiers","orders","validatedIdentifiers","identifierList","getIdentifiers","validatedOrders","orderList","getOrders","identifierFns","mappedCollection","element","recordA","recordB","indexA","valuesA","indexB","valuesB","ordersLength","_result","valueA","valueB","chunksA","chunksB","lengthA","lengthB","chunkA","chunkB","compareChunks","compareOtherTypes","compareMultiple","getElementByIndex","baseOrderBy","useFilesStore","roots","getNode","getNodes","ids","getRoot","updateNodes","acc","deleteNodes","setRoot","onDeletedNode","fileStore","_initialized","usePathsStore","pathsStore","paths","getPath","addPath","useSelectionStore","selected","lastSelection","lastSelectedIndex","selection","setLastIndex","reset","userConfig","show_hidden","crop_image_previews","sort_favorites_first","useUserConfigStore","userConfigStore","onUpdate","put","viewConfig","useViewConfigStore","getConfig","setSortingBy","toggleSortingDirection","newDirection","sorting_direction","viewConfigStore","fillColor","Home","NcBreadcrumbs","filesStore","currentView","$navigation","dirs","sections","$route","getDirDisplayName","getNodeFromId","getFileIdFromPath","_this$currentView","_node$attributes","fileId","_to$query","_section$to","_section$to$query","_setupProxy","isIE","initCompat","init","ua","msie","parseInt","rv","edge","getInternetExplorerVersion","_h","$createElement","compareAndNotify","_w","offsetHeight","addResizeHandlers","_resizeObject","defaultView","removeResizeHandlers","_this","object","install","component","GlobalVue","use","_typeof","iterator","_defineProperties","_toConsumableArray","arr","arr2","_arrayWithoutHoles","iter","_iterableToArray","TypeError","_nonIterableSpread","deepEqual","val1","val2","VisibilityState","el","vnode","instance","Constructor","_classCallCheck","observer","frozen","createObserver","protoProps","destroyObserver","entry","once","throttle","_leading","throttleOptions","leading","timeout","lastState","currentArgs","throttled","_len","_key","_clear","oldResult","IntersectionObserver","entries","intersectingEntry","isIntersecting","intersectionRatio","threshold","intersection","context","observe","disconnect","_ref2","_vue_visibilityState","unbind","ObserveVisibility","_ref3","directive","config","itemsLimit","keyField","direction","listTag","itemTag","simpleArray","supportsPassive","normalizeComponent","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","originalRender","existing","__vue_script__$2","ResizeObserver","itemSize","gridItems","itemSecondarySize","minItemSize","sizeField","typeField","buffer","pageMode","prerender","emitUpdate","skipHover","listClass","itemClass","pool","totalSize","ready","hoverKey","sizes","accumulator","field","current","computedMinSize","$_computedMinItemSize","updateVisibleItems","applyPageMode","$_startIndex","$_endIndex","$_views","$_unusedViews","$_scrollDirty","$_lastUpdateScrollPosition","$_prerender","activated","lastPosition","scrollToPosition","removeListeners","addView","position","nonReactive","used","unuseView","fake","unusedViews","nr","unusedPool","requestAnimationFrame","continuous","$_refreshTimout","handleVisibilityChange","isVisible","boundingClientRect","checkItem","checkPositionDiff","count","views","startIndex","endIndex","visibleStartIndex","visibleEndIndex","scroll","getScroll","positionDiff","end","beforeSize","scrollHeight","afterSize","oldI","ceil","max","itemsLimitError","$_continuous","unusedIndex","offset","$_sortTimer","sortViews","getListenerTarget","isVertical","scrollState","bounds","getBoundingClientRect","boundsSize","top","left","innerHeight","innerWidth","clientHeight","scrollLeft","addListeners","listenerTarget","passive","scrollToItem","viewport","scrollDirection","scrollDistance","viewportEl","tagName","scrollerPosition","viewA","viewB","__vue_render__$1","_obj","_obj$1","hover","transform","mouseenter","mouseleave","notify","_withStripped","__vue_component__$2","script$1","RecycleScroller","provide","$_resizeObserver","CustomEvent","detail","contentRect","vscrollData","vscrollParent","vscrollResizeObserver","validSizes","itemsWithSize","$_undefinedMap","forceUpdate","immediate","prev","prevActiveTop","activeTop","$_updates","$_undefinedSizes","deactivated","onScrollerResize","onScrollerVisible","getItemSize","scrollToBottom","$_scrollingToBottom","cb","__vue_script__$1","__vue_render__","resize","visible","itemWithSize","__vue_component__$1","__vue_component__","watchData","sizeDependencies","emitResize","finalActive","onDataUpdate","observeSize","unobserveSize","$_pendingVScrollUpdate","updateSize","$isServer","$_forceNextVScrollUpdate","updateWatchData","$watch","onVscrollUpdate","onVscrollUpdateSize","$_pendingSizeUpdate","computeSize","$_watchData","applySize","$set","onResize","unobserve","finalOptions","installComponents","componentsPrefix","prefix","registerComponents","getChildNodes","$placeholder","$fakeParent","$nextSiblingPatched","$childNodesPatched","isFrag","parentNodeDescriptor","parentElement","patchParentNode","fakeParent","nextSiblingDescriptor","childNodes","patchNextSibling","getChildNodesWithFragments","_childNodesDescriptor","Node","realChildNodes","childNode","fromParent","getTopFragment","childNodesDescriptor","frag","firstChildDescriptor","hasChildNodes","patchChildNodes","defineProperties","_this$frag$","getFragmentLeafNodes","_Array$prototype","hasChildInFragment","removedNode","insertBeforeNode","addPlaceholder","insertNode","insertNodes","_frag","_lastNode","removePlaceholder","append","lastNode","shift","innerHTMLDescriptor","htmlString","_this2","child","domify","inserted","nextSibling","previousSibling","createComment","fragment","createDocumentFragment","replaceWith","getOwnPropertyDescriptors","getOwnPropertySymbols","propertyIsEnumerable","getIsIOS","elRef","plain","cleanups","cleanup","stopWatch","options2","flatMap","listener","ignore","capture","detectIframe","shouldListen","shouldIgnore","target2","composedPath","vOnClickOutside","binding","bubble","__onClickOutside_stop","hashCode","str","charCodeAt","useActionsMenuStore","Function","sanitize","CustomSvgIconRender","CustomElementRender","FavoriteIcon","FileIcon","FolderIcon","Fragment","NcActionButton","NcCheckboxRadioSwitch","NcLoadingIcon","NcTextField","isMtimeAvailable","isSizeAvailable","filesListWidth","actionsMenuStore","keyboardStore","altKey","ctrlKey","metaKey","onEvent","useKeyboardStore","renamingStore","renamingNode","newName","useRenamingStore","selectionStore","backgroundFailed","columns","_this$$route","_this$$route$query","_this$source","_this$source$fileid","_this$source$fileid$t","ext","sizeOpacity","moment","fromNow","mtimeTitle","format","linkTo","_this$source2","enabledDefaultActions","is","selectedFiles","isSelected","_this$source3","_this$source3$fileid","_this$source3$fileid$","cropPreviews","searchParams","mimeIconUrl","_window$OC","_window$OC$MimeType","_window$OC$MimeType$g","mimeType","enabledActions","enabledInlineActions","_action$inline","enabledMenuActions","findIndex","openedMenu","uniqueId","isFavorite","isRenaming","isRenamingSmallScreen","resetState","debounceIfNotCached","startRenaming","_this$$el$parentNode","_this$$el$parentNode$","debounceGetPreview","debounce","fetchAndApplyPreview","onRightClick","caches","cache","previewPromise","clearImg","CancelablePromise","onCancel","img","Image","fetchpriority","src","cancel","showSuccess","execDefaultAction","openDetailsIfAvailable","detailsAction","onSelectionChange","_this$keyboardStore","newSelectedIndex","isAlreadySelected","filesToSelect","_file$fileid","_file$fileid$toString","isMoreThanOneSelected","checkInputValidity","_this$newName$trim","_this$newName","isFileNameValid","setCustomValidity","reportValidity","trimmedName","blacklist_files_regex","checkIfNodeExists","_this$$refs$renameInp","_this$$refs$renameInp2","_this$$refs$renameInp3","_this$$refs$renameInp4","extLength","renameInput","inputField","setSelectionRange","stopRenaming","_this$newName$trim2","_this$newName2","oldName","oldSource","headers","Destination","encodeURI","_error$response","_error$response2","translate","onRename","_k","_loading","onActionClick","opacity","column","_vm$currentView","summary","currentFolder","_this$currentView2","_this$currentFolder","total","classForColumn","_column$summary","fileListEl","$resizeObserver","filesListWidthMixin","selectedNodes","areSomeNodesLoading","selectionIds","results","failedIds","keysOrMapper","reduced","$pinia","storeKey","sortingMode","_this$getConfig","sorting_mode","defaultSortKey","isAscSorting","_this$getConfig2","toggleSortBy","MenuDown","MenuUp","filesSortingMixin","mode","sortAriaLabel","FilesListHeaderButton","FilesListHeaderActions","selectAllBind","isNoneSelected","isSomeSelected","isAllSelected","indeterminate","onToggleAll","FileEntry","FilesListHeader","FilesListFooter","summaryFile","translatePlural","summaryFolder","slots","getFileId","caption","_defineProperty","isValidNavigation","isUniqueNavigation","_views","legacy","setActive","_currentView","getContents","string","XMLValidator","validate","jsonObject","parser","XMLParser","isSvg","isValidColumn","emptyView","sticky","expanded","BreadCrumbs","FilesListVirtual","NcAppContent","NcIconSvgWrapper","promise","dirContents","_this$currentFolder2","customColumn","_children","reverse","_v$attributes","isEmptyDir","isRefreshing","toPreviousDir","newView","oldView","fetchContent","newDir","oldDir","_this$$refs","_this$$refs$filesList","filesListVirtual","_this$currentView3","_this$promise","folder","contents","_vm$currentView2","_vm$currentView3","_vm$currentView4","emptyTitle","emptyCaption","timeoutID","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","wrapper","arguments_","elapsed","_ref2$upcomingOnly","upcomingOnly","ChartPie","NcAppNavigationItem","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","_this$storageStats","_this$storageStats2","_this$storageStats3","usedQuotaByte","quotaByte","quota","storageStatsTooltip","relative","setInterval","throttleUpdateStorageStats","debounceUpdateStorageStats","_ref$atBegin","atBegin","updateStorageStats","_response$data","Clipboard","NcAppSettingsDialog","NcAppSettingsSection","NcInputField","Setting","_window$OCA$Files$Set","webdavUrl","generateRemoteUrl","webdavDocs","appPasswordUrl","webdavUrlCopied","setting","onClose","setConfig","copyCloudId","Cog","NavigationQuota","NcAppNavigation","SettingsModal","Navigation","settingsOpened","currentViewId","_this$$route$params","params","parentViews","childViews","list","showView","onLegacyNavigationChanged","_window$OCA$Files$Sid","_window$OCA$Files$Sid2","newAppContent","Util","History","parseUrlQuery","itemId","jQuery","trigger","Event","heading","headingEl","setPageHeading","$router","onToggleExpand","isExpanded","_this$viewConfigStore","generateToNavigation","openSettings","onSettingsClose","registerLegacyView","classes","WorkerGlobalScope","fetch","Headers","Request","Response","HOT_PATCHER_TYPE","NOOP","createNewItem","original","final","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","sequence","isPatched","patch","chain","patchInline","restore","setFinal","__patcher","isWeb","WEB","NONCE_CHARS","generateDigestAuthHeader","digest","uri","toUpperCase","qop","ncString","ha1","algorithm","realm","pass","nonce","cnonce","ha1Hash","md5","ha1Compute","username","password","ha2","digestResponse","authValues","opaque","authHeader","getPrototypeOf","proto","setPrototypeOf","merge","output","nextItem","mergeObjects","obj1","obj2","headerPayloads","headerKeys","header","lowerHeader","hasArrayBuffer","ArrayBuffer","objToString","_request","requestOptions","patcher","newHeaders","isBuffer","isArrayBuffer","requestDataToFetchBody","signal","withCredentials","credentials","httpAgent","httpsAgent","agent","parsedURL","protocol","getFetchOptions","rootPath","defaultRootUrl","defaultDavProperties","defaultDavNamespaces","oc","getDavProperties","_nc_dav_properties","getDavNameSpaces","_nc_dav_namespaces","ns","getDefaultPropfind","client","rootUrl","createClient","requesttoken","getRequestToken","getPatcher","_options$headers","_digest","hasDigestAuth","Authorization","re","makeNonce","parseDigestAuth","response2","request","getClient","reportPayload","resultToNode","permString","CREATE","SHARE","parseWebdavPermissions","nodeData","lastmod","_rootResponse","propfindPayload","rootResponse","stat","details","contentsResponse","getDirectoryContents","includeSelf","generateFolderView","generateIdFromPath","encodeReserveRE","encodeReserveReplacer","commaRE","encode","decode","decodeURIComponent","err","castQueryParamValue","parseQuery","res","param","parts","val","stringifyQuery","trailingSlashRE","createRoute","record","redirectedFrom","router","clone","route","meta","hash","fullPath","getFullPath","matched","formatMatch","freeze","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","instances","cbs","enteredCbs","i$1","_isBeingDestroyed","routerView","_routerViewCache","depth","inactive","_routerRoot","vnodeData","keepAlive","_directInactive","_inactive","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","vm","prepatch","propsToPass","resolveProps","resolvePath","firstChar","charAt","stack","segments","segment","cleanPath","isarray","pathToRegexp_1","pathToRegexp","RegExp","groups","delimiter","optional","repeat","partial","asterisk","pattern","attachKeys","regexpToRegexp","flags","arrayToRegexp","tokensToRegExp","stringToRegexp","parse_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","PATH_REGEXP","tokens","defaultDelimiter","escaped","group","modifier","escapeGroup","escapeString","substr","encodeURIComponentPretty","matches","pretty","sensitive","strict","endsWithDelimiter","compile","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","_normalized","params$1","rawPath","parsedPath","hashIndex","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","Link","exactPath","activeClass","exactActiveClass","ariaCurrentValue","this$1$1","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","scopedSlot","$scopedSlots","$hasNormal","findAnchor","isStatic","aData","handler$1","event$1","aAttrs","defaultPrevented","button","getAttribute","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","absolutePath","stateCopy","replaceState","handlePopState","isPop","scrollBehavior","getScrollPosition","shouldScroll","saveScrollPosition","pageXOffset","pageYOffset","isValidPosition","isNumber","normalizePosition","hashStartsWithNumberRE","selector","docRect","elRect","getElementPosition","scrollTo","supportsPushState","pushState","NavigationFailureType","redirected","aborted","duplicated","createNavigationCancelledError","createRouterError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","step","flatMapComponents","flatten","hasSymbol","called","baseEl","normalizeBase","pending","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","guards","def","guard","extractGuard","bindGuard","listen","onReady","errorCb","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","abort","lastRouteIndex","lastCurrentIndex","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","hasAsync","cid","resolvedDef","resolved","reason","msg","comp","createNavigationAbortedError","createNavigationRedirectedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathLowerCase","baseLowerCase","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","prototypeAccessors","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","VueRouter$1","installed","isDef","registerInstance","callVal","_parentVnode","_router","defineReactive","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","START_LOCATION","singleMatcher","multiMatcher","decodeComponents","right","splitOnFirst","separator","separatorIndex","includeKeys","predicate","ownKeys","isNullOrUndefined","strictUriEncode","encodeFragmentIdentifier","validateArrayFormatSeparator","encodedURI","replaceMap","customDecodeURIComponent","keysSorter","removeHash","hashStart","parseValue","parseNumbers","parseBooleans","extract","queryStart","arrayFormat","arrayFormatSeparator","formatter","isEncodedArray","arrayValue","flat","parserForArrayFormat","returnValue","parameter","parameter_","key2","value2","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","parseUrl","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryString","urlObjectForFragmentEncode","pick","exclude","_window$OCP$Files","goTo","_provided","provideCache","toBeInstalled","globalProperties","createPinia","NavigationService","_settings","_name","_el","_open","_close","NavigationView","FilesListView","legacyViews","sublist","subview","processLegacyFilesViews","favoriteFolders","favoriteFoldersViews","addPathToFavorites","_node$root2","removePathFromFavorites","updateAndSortViews","getLanguage","ignorePunctuation","registerFavoritesView","noRewrite","registration","serviceWorker","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","func","applyBind","_exports","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","done","normalCompletion","didErr","_e2","return","_createClass","staticProps","_classPrivateFieldInitSpec","privateMap","privateCollection","_checkPrivateRedeclaration","_classPrivateFieldGet","receiver","_classApplyDescriptorGet","_classExtractFieldDescriptor","_classPrivateFieldSet","_classApplyDescriptorSet","cancelable","isCancelablePromise","_internals","_promise","CancelablePromiseInternal","_ref$executor","executor","_ref$internals","internals","isCanceled","onCancelList","_ref$promise","onfulfilled","onrejected","makeCancelable","createCallback","onfinally","runWhenCanceled","finally","callbacks","_step","_iterator","_CancelablePromiseInt","subClass","superClass","_inherits","_super","iterable","makeAllCancelable","allSettled","any","race","_default","onResult","arg","_step2","_iterator2","resolvable","___CSS_LOADER_EXPORT___","objectCreate","objectKeys","EventEmitter","_events","_eventsCount","_maxListeners","hasDefineProperty","defaultMaxListeners","$getMaxListeners","that","_addListener","prepend","newListener","warned","emitter","onceWrapper","fired","removeListener","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","copy","setMaxListeners","getMaxListeners","er","doError","isFn","emitNone","arg1","emitOne","arg2","emitTwo","arg3","emitThree","emitMany","addListener","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","toStr","bound","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","hasProto","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","RangeError","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","intrinsicName","first","last","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","foo","$Object","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","syms","http","https","validateParams","ctor","superCtor","super_","TempCtor","ReflectOwnKeys","ReflectApply","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","checkListener","_getMaxListeners","warning","wrapListener","Stream","EE","inherits","Readable","Writable","Duplex","Transform","PassThrough","finished","pipeline","pipe","dest","ondata","write","ondrain","readable","resume","_isStdio","onend","onclose","didOnEnd","codes","createErrorType","Base","NodeError","_Base","getMessage","oneOf","expected","thing","actual","determiner","this_len","endsWith","allowHalfOpen","_writableState","ended","process","onEndNT","highWaterMark","getBuffer","_readableState","_transform","encoding","ReadableState","EElistenerCount","Buffer","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","stream","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","read","_read","_destroy","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","enc","content","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onfinish","cleanedUp","needDrain","pipeOnDrain","dests","ev","wrap","asyncIterator","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","_flush","prefinish","_write","err2","CorkedRequest","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","rState","out","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","hint","prim","toPrimitive","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","enumerableOnly","symbols","_objectSpread","inspect","tail","alloc","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","customInspect","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","setHeader","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","isRegExp","inspect_","seen","maxStringLength","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","nodeName","singleLineValues","indentedJoin","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","isBoolean","isString","isDate","ys","protoTag","stringTag","remaining","trailer","lowbyte","lineJoiner","isArr","symMap","nodeType","freeGlobal","punycode","maxInt","tMax","skew","damp","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","stringFromCharCode","array","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","basic","oldi","baseMinusT","codePoint","inputLength","bias","lastIndexOf","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","copyProps","dst","SafeBuffer","encodingOrOffset","allocUnsafeSlow","SlowBuffer","isScrolling","overflow","getComputedStyle","getPropertyValue","scrollingElement","callBound","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","$wm","$m","$o","channel","assert","objects","listGet","listHas","listSet","ClientRequest","statusCodes","defaultProtocol","hostname","port","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","getXHR","XDomainRequest","checkTypeSupport","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","rStates","readyStates","preferBinary","_opts","_body","_headers","auth","useFetch","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","headersList","keyName","controller","_fetchAbortController","requestTimeout","_fetchResponse","_resetTimers","_connect","_xhr","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","_resumeFetch","pipeTo","getReader","_pos","responseURL","getAllResponseHeaders","_charset","charsetMatch","responseText","newData","MSStreamReader","byteLength","readAsArrayBuffer","isEncoding","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","utils","defaults","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","leaf","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","bracketEqualsPos","pos","maybeMap","encodedVal","combine","parseValues","newObj","compact","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","encoder","encodeValuesOnly","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","findFlag","objKeys","adjustedPrefix","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","hexTable","arrayToObject","refs","compacted","compactQueue","strWithoutPlus","defaultEncoder","kind","escape","mapped","mergeTarget","targetItem","Url","slashes","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","querystring","urlParse","parseQueryString","slashesDenoteHost","splitter","uSplit","rest","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","qm","resolveObject","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","isAbsolute","trace","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","getter","definition","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files-main.js?v=1f1090d868d16a5464f3","mappings":";UAAIA,kCCKJC,EAAQ,GAuBR,SAAoBC,GAClB,OAAKA,EAIEA,EAAKC,MAAM,KAAKC,IAAIC,oBAAoBC,KAAK,KAH3CJ,CAIX,EAvBA,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,wCCtBP,SAASK,EAAEC,GAAqDC,EAAOR,QAAQO,GAAgN,CAA/R,CAAiSE,MAAK,IAAK,MAAM,IAAIH,EAAE,CAAC,IAAI,CAACA,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIC,IAAI,IAAIC,EAAEJ,EAAE,MAAMK,EAAEL,EAAE,MAAMM,EAAEN,EAAE,MAAMO,EAAEP,EAAE,KAAKQ,EAAER,EAAE,MAAMS,EAAET,EAAEM,EAAEE,GAAGE,EAAEV,EAAE,MAAMC,EAAED,EAAEM,EAAEI,GAAG,MAAMC,EAAE,aAAaC,EAAE,CAACC,KAAK,YAAYC,WAAW,CAACC,SAASX,EAAEF,QAAQc,eAAef,IAAIgB,UAAUZ,EAAEH,SAASgB,MAAM,CAACC,KAAK,CAACC,KAAKC,QAAQnB,SAAQ,GAAIoB,UAAU,CAACF,KAAKC,QAAQnB,SAAQ,GAAIqB,WAAW,CAACH,KAAKC,QAAQnB,SAAQ,GAAIsB,UAAU,CAACJ,KAAKK,OAAOvB,QAAQ,MAAMwB,QAAQ,CAACN,KAAKC,QAAQnB,SAAQ,GAAIkB,KAAK,CAACA,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,yBAAyB,sBAAsB,QAAQ,UAAU,WAAWgC,QAAQhC,GAAGM,QAAQ,MAAM2B,YAAY,CAACT,KAAKK,OAAOvB,QAAQ,IAAI4B,UAAU,CAACV,KAAKK,OAAOvB,SAAQ,EAAGK,EAAEV,GAAG,YAAYkC,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,MAAM8B,UAAU,CAACZ,KAAKK,OAAOvB,QAAQ,UAAU+B,kBAAkB,CAACb,KAAKc,QAAQhC,QAAQ,IAAIiC,SAASC,cAAc,SAASC,UAAU,CAACjB,KAAK,CAACK,OAAOa,OAAOJ,QAAQb,SAASnB,QAAQ,QAAQqC,SAAS,CAACnB,KAAKC,QAAQnB,SAAQ,GAAIsC,OAAO,CAACpB,KAAKqB,OAAOvC,QAAQ,IAAIwC,MAAM,CAAC,cAAc,OAAO,cAAc,QAAQ,QAAQ,QAAQC,OAAO,MAAM,CAACC,OAAOC,KAAK1B,KAAK2B,WAAW,EAAEC,SAAS,QAAQC,QAAO,EAAG1C,EAAE2C,MAAM,EAAEC,SAAS,CAACC,iBAAiB,OAAON,KAAKzB,OAAOyB,KAAKnB,QAAQ,UAAUmB,KAAKrB,UAAU,YAAY,WAAW,GAAG4B,MAAM,CAACjC,KAAKvB,GAAGA,IAAIiD,KAAKD,SAASC,KAAKD,OAAOhD,EAAE,GAAGyD,QAAQ,CAACC,oBAAoB1D,GAAG,IAAIC,EAAEG,EAAEI,EAAEC,EAAEC,EAAE,MAAMC,EAAE,QAAQV,EAAE,MAAMD,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQC,EAAED,EAAEqD,qBAAgB,IAASpD,OAAE,EAAOA,EAAEQ,YAAO,IAAShB,EAAEA,EAAE,MAAMD,GAAG,QAAQU,EAAEV,EAAE2D,wBAAmB,IAASjD,OAAE,EAAOA,EAAEoD,IAAI,MAAM,CAAC,iBAAiB,eAAe,kBAAkBC,SAASpD,EAAE,EAAEqD,SAAShE,GAAGiD,KAAKD,SAASC,KAAKD,QAAO,EAAGC,KAAKgB,MAAM,eAAc,GAAIhB,KAAKgB,MAAM,QAAQ,EAAEC,YAAY,IAAIlE,IAAImE,UAAUC,OAAO,QAAG,IAASD,UAAU,KAAKA,UAAU,GAAGlB,KAAKD,SAASC,KAAKD,QAAO,EAAGC,KAAKoB,MAAMC,QAAQC,eAAe,CAACC,YAAYxE,IAAIiD,KAAKgB,MAAM,eAAc,GAAIhB,KAAKgB,MAAM,SAAShB,KAAKD,QAAO,EAAGC,KAAKC,WAAW,EAAED,KAAKoB,MAAMI,WAAWC,IAAIC,QAAQ,EAAEC,OAAO5E,GAAGiD,KAAK4B,WAAU,KAAM5B,KAAK6B,iBAAiB9E,EAAG,GAAE,EAAE+E,mBAAmB/E,GAAG,GAAGuC,SAASyC,gBAAgBhF,EAAEiF,OAAO,OAAO,MAAMhF,EAAED,EAAEiF,OAAOC,QAAQ,MAAM,GAAGjF,EAAE,CAAC,MAAMD,EAAEC,EAAEuC,cAAczB,GAAG,GAAGf,EAAE,CAAC,MAAMC,EAAE,IAAIgD,KAAKoB,MAAMc,KAAKC,iBAAiBrE,IAAIiB,QAAQhC,GAAGC,GAAG,IAAIgD,KAAKC,WAAWjD,EAAEgD,KAAKoC,cAAc,CAAC,CAAC,EAAEC,UAAUtF,IAAI,KAAKA,EAAEuF,SAAS,IAAIvF,EAAEuF,SAASvF,EAAEwF,WAAWvC,KAAKwC,oBAAoBzF,IAAI,KAAKA,EAAEuF,SAAS,IAAIvF,EAAEuF,UAAUvF,EAAEwF,WAAWvC,KAAKyC,gBAAgB1F,GAAG,KAAKA,EAAEuF,SAAStC,KAAK6B,iBAAiB9E,GAAG,KAAKA,EAAEuF,SAAStC,KAAK0C,gBAAgB3F,GAAG,KAAKA,EAAEuF,UAAUtC,KAAKiB,YAAYlE,EAAE4F,iBAAiB,EAAEC,sBAAsB,MAAM7F,EAAEiD,KAAKoB,MAAMc,KAAK3C,cAAc,aAAaxC,GAAGA,EAAE8F,UAAUC,OAAO,SAAS,EAAEV,cAAc,MAAMrF,EAAEiD,KAAKoB,MAAMc,KAAKC,iBAAiBrE,GAAGkC,KAAKC,YAAY,GAAGlD,EAAE,CAACiD,KAAK4C,sBAAsB,MAAM5F,EAAED,EAAEkF,QAAQ,aAAalF,EAAE2E,QAAQ1E,GAAGA,EAAE6F,UAAUE,IAAI,SAAS,CAAC,EAAEP,oBAAoBzF,GAAGiD,KAAKD,SAAS,IAAIC,KAAKC,WAAWD,KAAKiB,aAAajB,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKC,WAAW,GAAGD,KAAKoC,cAAc,EAAEK,gBAAgB1F,GAAG,GAAGiD,KAAKD,OAAO,CAAC,MAAM/C,EAAEgD,KAAKoB,MAAMc,KAAKC,iBAAiBrE,GAAGqD,OAAO,EAAEnB,KAAKC,aAAajD,EAAEgD,KAAKiB,aAAajB,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKC,WAAW,GAAGD,KAAKoC,aAAa,CAAC,EAAEP,iBAAiB9E,GAAGiD,KAAKD,SAASC,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAW,EAAED,KAAKoC,cAAc,EAAEM,gBAAgB3F,GAAGiD,KAAKD,SAASC,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKoB,MAAMc,KAAKC,iBAAiBrE,GAAGqD,OAAO,EAAEnB,KAAKoC,cAAc,EAAEY,eAAejG,GAAGA,IAAIA,EAAE4F,iBAAiB5F,EAAEkG,kBAAkB,EAAEC,QAAQnG,GAAGiD,KAAKgB,MAAM,QAAQjE,EAAE,EAAEoG,OAAOpG,GAAGiD,KAAKgB,MAAM,OAAOjE,EAAE,GAAGqG,OAAOrG,GAAG,MAAMC,GAAGgD,KAAKqD,OAAOhG,SAAS,IAAIiG,QAAQvG,IAAI,IAAIC,EAAEG,EAAEI,EAAEC,EAAE,OAAO,MAAMT,GAAG,QAAQC,EAAED,EAAE2D,wBAAmB,IAAS1D,OAAE,EAAOA,EAAE6D,OAAO,MAAM9D,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQC,EAAED,EAAEqD,qBAAgB,IAASpD,OAAE,EAAOA,EAAEQ,KAAM,IAAGb,EAAEH,EAAEuG,OAAOxG,IAAI,IAAIC,EAAEG,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,MAAM,kBAAkB,QAAQZ,EAAE,MAAMD,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQC,EAAED,EAAEqD,qBAAgB,IAASpD,OAAE,EAAOA,EAAEQ,YAAO,IAAShB,EAAEA,EAAE,MAAMD,GAAG,QAAQU,EAAEV,EAAE2D,wBAAmB,IAASjD,OAAE,EAAOA,EAAEoD,OAAO,MAAM9D,GAAG,QAAQW,EAAEX,EAAE2D,wBAAmB,IAAShD,GAAG,QAAQC,EAAED,EAAE8F,iBAAY,IAAS7F,GAAG,QAAQC,EAAED,EAAE8F,YAAO,IAAS7F,OAAE,EAAOA,EAAE8F,WAAWC,OAAOC,SAASC,QAAS,IAAG,IAAItG,EAAEP,EAAEsG,OAAOtD,KAAKS,qBAAqB,GAAGT,KAAKvB,WAAWlB,EAAE4D,OAAO,GAAGnB,KAAKL,OAAO,IAAI/B,IAAIkG,KAAKC,KAAK,kEAAkExG,EAAE,IAAI,IAAIP,EAAEmE,OAAO,OAAO,MAAM3D,EAAER,IAAI,IAAIG,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAET,EAAEU,EAAEC,EAAEiG,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,MAAMC,GAAG,MAAM3H,GAAG,QAAQG,EAAEH,EAAE8C,YAAO,IAAS3C,GAAG,QAAQI,EAAEJ,EAAEyH,mBAAc,IAASrH,GAAG,QAAQC,EAAED,EAAEsH,cAAS,IAASrH,OAAE,EAAOA,EAAE,KAAKT,EAAE,OAAO,CAAC+H,MAAM,CAAC,OAAO,MAAM9H,GAAG,QAAQS,EAAET,EAAE0D,wBAAmB,IAASjD,GAAG,QAAQC,EAAED,EAAE+F,iBAAY,IAAS9F,OAAE,EAAOA,EAAEmH,QAAQE,EAAE,MAAM/H,GAAG,QAAQW,EAAEX,EAAE0D,wBAAmB,IAAS/C,GAAG,QAAQC,EAAED,EAAEqH,iBAAY,IAASpH,OAAE,EAAOA,EAAEqH,MAAMC,EAAE,MAAMlI,GAAG,QAAQa,EAAEb,EAAE0D,wBAAmB,IAAS7C,GAAG,QAAQT,EAAES,EAAEsH,gBAAW,IAAS/H,GAAG,QAAQU,EAAEV,EAAE,UAAK,IAASU,GAAG,QAAQC,EAAED,EAAEsH,YAAO,IAASrH,GAAG,QAAQiG,EAAEjG,EAAEsH,YAAO,IAASrB,OAAE,EAAOA,EAAEsB,KAAKvH,GAAGwH,GAAG,MAAMvI,GAAG,QAAQiH,EAAEjH,EAAE0D,wBAAmB,IAASuD,GAAG,QAAQC,EAAED,EAAET,iBAAY,IAASU,OAAE,EAAOA,EAAEjF,YAAYiG,EAAEM,EAAExF,KAAKtB,WAAWwG,EAAE,GAAG,IAAIO,EAAE,MAAMzI,GAAG,QAAQmH,EAAEnH,EAAE0D,wBAAmB,IAASyD,GAAG,QAAQC,EAAED,EAAEX,iBAAY,IAASY,OAAE,EAAOA,EAAEsB,MAAM,OAAO1F,KAAKtB,YAAY+G,IAAIA,EAAEP,GAAGnI,EAAE,WAAW,CAAC+H,MAAM,CAAC,kCAAkC,MAAM9H,GAAG,QAAQqH,EAAErH,EAAE8C,YAAO,IAASuE,OAAE,EAAOA,EAAEsB,YAAY,MAAM3I,GAAG,QAAQsH,EAAEtH,EAAE8C,YAAO,IAASwE,OAAE,EAAOA,EAAEQ,OAAOc,MAAM,CAAC,aAAaL,EAAEG,MAAMD,GAAGI,IAAI,MAAM7I,GAAG,QAAQuH,EAAEvH,EAAE8C,YAAO,IAASyE,OAAE,EAAOA,EAAEsB,IAAIxH,MAAM,CAACE,KAAKyB,KAAKzB,OAAOiH,EAAE,YAAY,YAAY9F,SAASM,KAAKN,WAAW,MAAM1C,GAAG,QAAQwH,EAAExH,EAAE0D,wBAAmB,IAAS8D,GAAG,QAAQC,EAAED,EAAEhB,iBAAY,IAASiB,OAAE,EAAOA,EAAE/E,UAAUR,WAAWc,KAAKd,cAAc,MAAMlC,GAAG,QAAQ0H,EAAE1H,EAAE0D,wBAAmB,IAASgE,OAAE,EAAOA,EAAElB,WAAWsC,GAAG,CAACpE,MAAM1B,KAAKkD,QAAQ6C,KAAK/F,KAAKmD,YAAY4B,GAAG,CAACE,MAAMlI,IAAIgI,GAAGA,EAAEhI,EAAC,KAAM,CAACA,EAAE,WAAW,CAACiJ,KAAK,QAAQ,CAACrB,IAAIa,GAAE,EAAG/H,EAAET,IAAI,IAAIO,EAAEC,EAAE,MAAMC,GAAG,QAAQF,EAAEyC,KAAKqD,OAAOwB,YAAO,IAAStH,OAAE,EAAOA,EAAE,MAAMyC,KAAKhB,YAAYjC,EAAE,OAAO,CAAC+H,MAAM,CAAC,OAAO9E,KAAKhB,eAAejC,EAAE,iBAAiB,CAACsB,MAAM,CAAC4H,KAAK,OAAO,OAAOlJ,EAAE,YAAY,CAAC8I,IAAI,UAAUxH,MAAM,CAAC6H,MAAM,EAAEC,cAAa,EAAGC,MAAMpG,KAAKD,OAAOZ,UAAUa,KAAKb,UAAUkH,SAASrG,KAAKZ,kBAAkBI,UAAUQ,KAAKR,UAAU8G,iBAAiB,sBAAsBC,eAAe,QAAQ/I,EAAEwC,KAAKoB,MAAMI,kBAAa,IAAShE,OAAE,EAAOA,EAAEiE,KAAKmE,MAAM,CAACM,MAAM,EAAEC,cAAa,EAAGC,MAAMpG,KAAKD,OAAOZ,UAAUa,KAAKb,UAAUkH,SAASrG,KAAKZ,kBAAkBI,UAAUQ,KAAKR,UAAU8G,iBAAiB,uBAAuBR,GAAG,CAACU,KAAKxG,KAAKe,SAAS,aAAaf,KAAK2B,OAAO8E,KAAKzG,KAAKiB,YAAY,CAAClE,EAAE,WAAW,CAAC+H,MAAM,0BAA0BzG,MAAM,CAACE,KAAKyB,KAAKM,eAAeZ,SAASM,KAAKN,SAASR,WAAWc,KAAKd,YAAY8G,KAAK,UAAUH,IAAI,aAAaD,MAAM,CAAC,gBAAgBzI,EAAE,KAAK,OAAO,aAAa6C,KAAKf,UAAU,gBAAgBe,KAAKD,OAAOC,KAAKE,SAAS,KAAK,gBAAgBF,KAAKD,OAAO2G,YAAYZ,GAAG,CAACpE,MAAM1B,KAAKkD,QAAQ6C,KAAK/F,KAAKmD,SAAS,CAACpG,EAAE,WAAW,CAACiJ,KAAK,QAAQ,CAACvI,IAAIuC,KAAKrB,YAAY5B,EAAE,MAAM,CAAC+H,MAAM,CAACxG,KAAK0B,KAAKD,QAAQ6F,MAAM,CAACe,SAAS,MAAMb,GAAG,CAACc,QAAQ5G,KAAKqC,UAAUwE,UAAU7G,KAAK8B,oBAAoB+D,IAAI,QAAQ,CAAC9I,EAAE,KAAK,CAAC6I,MAAM,CAACkB,GAAG9G,KAAKE,SAASyG,SAAS,KAAKI,KAAK5J,EAAE,KAAK,SAAS,CAACH,OAAM,EAAG,GAAG,IAAIA,EAAEmE,QAAQ,IAAI5D,EAAE4D,SAASnB,KAAKvB,UAAU,OAAOjB,EAAED,EAAE,IAAI,GAAGA,EAAE4D,OAAO,GAAGnB,KAAKL,OAAO,EAAE,CAAC,MAAMxC,EAAEI,EAAEyJ,MAAM,EAAEhH,KAAKL,QAAQjC,EAAEV,EAAEsG,QAAQvG,IAAII,EAAE2D,SAAS/D,KAAK,OAAOA,EAAE,MAAM,CAAC+H,MAAM,CAAC,eAAe,gBAAgB3E,OAAOH,KAAKM,kBAAkB,IAAInD,EAAEP,IAAIY,GAAGE,EAAEyD,OAAO,EAAEpE,EAAE,MAAM,CAAC+H,MAAM,CAAC,cAAc,CAAC,oBAAoB9E,KAAKD,UAAU,CAACtC,EAAEC,KAAK,MAAM,CAAC,OAAOX,EAAE,MAAM,CAAC+H,MAAM,CAAC,2CAA2C,gBAAgB3E,OAAOH,KAAKM,gBAAgB,CAAC,oBAAoBN,KAAKD,UAAU,CAACtC,EAAET,IAAI,GAAG,IAAIgH,EAAE7G,EAAE,MAAM8G,EAAE9G,EAAEM,EAAEuG,GAAGE,EAAE/G,EAAE,MAAMgH,EAAEhH,EAAEM,EAAEyG,GAAGE,EAAEjH,EAAE,KAAKkH,EAAElH,EAAEM,EAAE2G,GAAGE,EAAEnH,EAAE,MAAMoH,EAAEpH,EAAEM,EAAE6G,GAAGE,EAAErH,EAAE,MAAMsH,EAAEtH,EAAEM,EAAE+G,GAAGE,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAGK,EAAE5H,EAAE,MAAM+H,EAAE,CAAC,EAAEA,EAAE+B,kBAAkBtC,IAAIO,EAAEgC,cAAc3C,IAAIW,EAAEiC,OAAO9C,IAAI+C,KAAK,KAAK,QAAQlC,EAAEmC,OAAOlD,IAAIe,EAAEoC,mBAAmB7C,IAAIR,IAAIc,EAAE3E,EAAE8E,GAAGH,EAAE3E,GAAG2E,EAAE3E,EAAEmH,QAAQxC,EAAE3E,EAAEmH,OAAO,IAAIhC,EAAEpI,EAAE,MAAMqI,EAAE,CAAC,EAAEA,EAAEyB,kBAAkBtC,IAAIa,EAAE0B,cAAc3C,IAAIiB,EAAE2B,OAAO9C,IAAI+C,KAAK,KAAK,QAAQ5B,EAAE6B,OAAOlD,IAAIqB,EAAE8B,mBAAmB7C,IAAIR,IAAIsB,EAAEnF,EAAEoF,GAAGD,EAAEnF,GAAGmF,EAAEnF,EAAEmH,QAAQhC,EAAEnF,EAAEmH,OAAO,IAAI9B,EAAEtI,EAAE,MAAMqK,EAAErK,EAAE,MAAMsK,EAAEtK,EAAEM,EAAE+J,GAAGE,GAAE,EAAGjC,EAAErF,GAAGrC,OAAE4J,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmBF,KAAKA,IAAIC,GAAG,MAAMpK,EAAEoK,EAAEjL,SAAS,KAAK,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIoH,IAAI,MAAMlH,EAAE,CAACS,KAAK,WAAWK,MAAM,CAACqB,SAAS,CAACnB,KAAKC,QAAQnB,SAAQ,GAAIkB,KAAK,CAACA,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,yBAAyB,sBAAsB,QAAQ,UAAU,WAAWgC,QAAQhC,GAAGM,QAAQ,aAAauK,WAAW,CAACrJ,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,SAAS,QAAQ,UAAUgC,QAAQhC,GAAGM,QAAQ,UAAUwK,KAAK,CAACtJ,KAAKC,QAAQnB,SAAQ,GAAI4B,UAAU,CAACV,KAAKK,OAAOvB,QAAQ,MAAMoG,KAAK,CAAClF,KAAKK,OAAOvB,QAAQ,MAAMyK,SAAS,CAACvJ,KAAKK,OAAOvB,QAAQ,MAAM0K,GAAG,CAACxJ,KAAK,CAACK,OAAOa,QAAQpC,QAAQ,MAAM2K,MAAM,CAACzJ,KAAKC,QAAQnB,SAAQ,GAAI6B,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,OAAO+F,OAAOrG,GAAG,IAAIC,EAAEG,EAAEI,EAAEC,EAAEC,EAAEC,EAAEsC,KAAK,MAAMrC,EAAE,QAAQX,EAAEgD,KAAKqD,OAAOhG,eAAU,IAASL,GAAG,QAAQG,EAAEH,EAAE,UAAK,IAASG,GAAG,QAAQI,EAAEJ,EAAEiI,YAAO,IAAS7H,GAAG,QAAQC,EAAED,EAAE8H,YAAO,IAAS7H,OAAE,EAAOA,EAAE8H,KAAK/H,GAAGK,IAAID,EAAEE,EAAE,QAAQJ,EAAEuC,KAAKqD,cAAS,IAAS5F,OAAE,EAAOA,EAAEoH,KAAKlH,GAAGqC,KAAKf,WAAWgJ,EAAQlE,KAAK,mFAAmF,CAACqB,KAAKzH,EAAEsB,UAAUe,KAAKf,WAAWe,MAAM,MAAM5C,EAAE,WAAW,IAAI8K,SAASlL,EAAEmL,SAAShL,EAAEiL,cAAc7K,GAAG2D,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE,OAAOnE,EAAEW,EAAEqK,KAAKrK,EAAE+F,KAAK,SAAS,IAAI,CAACqB,MAAM,CAAC,aAAa,CAAC,wBAAwBjH,IAAID,EAAE,wBAAwBA,IAAIC,EAAE,4BAA4BA,GAAGD,EAAE,CAAC,mBAAmBuC,OAAOzC,EAAEa,OAAOb,EAAEa,KAAK,mBAAmBb,EAAEmK,KAAKQ,OAAOlL,EAAE,2BAA2BI,IAAIqI,MAAM,CAAC,aAAalI,EAAEuB,UAAUS,SAAShC,EAAEgC,SAASnB,KAAKb,EAAE+F,KAAK,KAAK/F,EAAEkK,WAAWb,KAAKrJ,EAAE+F,KAAK,SAAS,KAAKA,MAAM/F,EAAEqK,IAAIrK,EAAE+F,KAAK/F,EAAE+F,KAAK,KAAKzB,QAAQtE,EAAEqK,IAAIrK,EAAE+F,KAAK,QAAQ,KAAK6E,KAAK5K,EAAEqK,IAAIrK,EAAE+F,KAAK,+BAA+B,KAAKqE,UAAUpK,EAAEqK,IAAIrK,EAAE+F,MAAM/F,EAAEoK,SAASpK,EAAEoK,SAAS,QAAQpK,EAAE6K,QAAQzC,GAAG,IAAIpI,EAAE8K,WAAWvD,MAAMlI,IAAI,IAAII,EAAEI,EAAE,QAAQJ,EAAEO,EAAE8K,kBAAa,IAASrL,GAAG,QAAQI,EAAEJ,EAAE8H,aAAQ,IAAS1H,GAAGA,EAAE+H,KAAKnI,EAAEJ,GAAG,MAAMC,GAAGA,EAAED,EAAC,IAAK,CAACA,EAAE,OAAO,CAAC+H,MAAM,uBAAuB,CAACjH,EAAEd,EAAE,OAAO,CAAC+H,MAAM,mBAAmBc,MAAM,CAAC,cAAclI,EAAEwB,aAAa,CAACxB,EAAE2F,OAAOwB,OAAO,KAAKjH,EAAEb,EAAE,OAAO,CAAC+H,MAAM,oBAAoB,CAACnH,IAAI,QAAQ,EAAE,OAAOqC,KAAK+H,GAAGhL,EAAE,cAAc,CAACsB,MAAM,CAACoK,QAAO,EAAGV,GAAG/H,KAAK+H,GAAGC,MAAMhI,KAAKgI,OAAOpD,YAAY,CAACvH,QAAQD,KAAKA,GAAG,GAAG,IAAII,EAAEL,EAAE,MAAMM,EAAEN,EAAEM,EAAED,GAAGE,EAAEP,EAAE,MAAMQ,EAAER,EAAEM,EAAEC,GAAGE,EAAET,EAAE,KAAKU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,MAAM6G,EAAE7G,EAAEM,EAAEM,GAAGkG,EAAE9G,EAAE,MAAM+G,EAAE/G,EAAEM,EAAEwG,GAAGE,EAAEhH,EAAE,MAAMiH,EAAE,CAAC,EAAEA,EAAE6C,kBAAkB/C,IAAIE,EAAE8C,cAAcpJ,IAAIsG,EAAE+C,OAAOtJ,IAAIuJ,KAAK,KAAK,QAAQhD,EAAEiD,OAAO1J,IAAIyG,EAAEkD,mBAAmBtD,IAAIvG,IAAI0G,EAAE/D,EAAEgE,GAAGD,EAAE/D,GAAG+D,EAAE/D,EAAEmH,QAAQpD,EAAE/D,EAAEmH,OAAO,IAAIlD,EAAElH,EAAE,MAAMmH,EAAEnH,EAAE,MAAMoH,EAAEpH,EAAEM,EAAE6G,GAAGE,GAAE,EAAGH,EAAEjE,GAAG7C,OAAEoK,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmBpD,KAAKA,IAAIC,GAAG,MAAMC,EAAED,EAAE/H,SAAS,KAAK,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIqL,IAAI,IAAInL,EAAEJ,EAAE,MAAMK,EAAEL,EAAE,MAAMM,EAAEN,EAAE,KAAKO,EAAEP,EAAE,MAAMQ,EAAER,EAAE,MAAMS,EAAET,EAAE,KAAKU,EAAEV,EAAE,MAAM,SAASC,EAAEL,EAAEC,GAAG,IAAIG,EAAEI,EAAEC,EAAEC,EAAET,EAAEgD,KAAK2I,MAAM,WAAWnL,GAAE,EAAGD,EAAE,IAAIqL,KAAKzL,EAAE0L,WAAW9L,EAAEU,EAAE,EAAEuC,KAAK8I,MAAM,WAAWtL,GAAE,EAAGuL,aAAa5L,GAAGM,GAAG,IAAImL,KAAKrL,CAAC,EAAEyC,KAAKgJ,MAAM,WAAWxL,GAAE,EAAGuL,aAAa5L,GAAGM,EAAE,CAAC,EAAEuC,KAAKiJ,YAAY,WAAW,OAAOzL,IAAIwC,KAAK8I,QAAQ9I,KAAK2I,SAASlL,CAAC,EAAEuC,KAAKkJ,gBAAgB,WAAW,OAAO1L,CAAC,EAAEwC,KAAK2I,OAAO,CAAC,IAAI7K,EAAEX,EAAE,KAAK,MAAMY,EAAE,EAAQ,OAA6C,IAAIiG,EAAE7G,EAAEM,EAAEM,GAAGkG,EAAE9G,EAAE,MAAM+G,EAAE/G,EAAEM,EAAEwG,GAAGE,EAAEhH,EAAE,MAAMiH,EAAEjH,EAAEM,EAAE0G,GAAG,MAAME,EAAE,EAAQ,OAAuC,IAAIC,EAAEnH,EAAEM,EAAE4G,GAAG,MAAME,EAAE,EAAQ,OAAsC,IAAIC,EAAErH,EAAEM,EAAE8G,GAAGE,EAAEtH,EAAE,MAAMuH,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAG,MAAMK,EAAE,CAAC/G,KAAK,UAAUC,WAAW,CAACkL,UAAUvL,EAAEP,QAAQ+L,YAAYpF,IAAIqF,aAAanF,IAAIoF,MAAMlF,IAAImF,MAAMjF,IAAIkF,KAAKhF,IAAItG,SAASL,EAAER,SAASoM,WAAW,CAACC,QAAQ5L,EAAET,SAASsM,OAAO,CAAChM,EAAEyC,GAAG/B,MAAM,CAACqH,MAAM,CAACnH,KAAKK,OAAOvB,QAAQ,IAAIuM,YAAY,CAACrL,KAAKC,QAAQnB,SAAQ,GAAIwM,QAAQ,CAACtL,KAAKC,QAAQnB,SAAQ,GAAIyM,cAAc,CAACvL,KAAKC,QAAQnB,SAAQ,GAAI0M,gBAAgB,CAACxL,KAAKC,QAAQnB,SAAQ,GAAI2M,eAAe,CAACzL,KAAKqB,OAAOvC,QAAQ,KAAK4M,gBAAgB,CAAC1L,KAAKC,QAAQnB,SAAQ,GAAI6M,YAAY,CAAC3L,KAAKC,QAAQnB,SAAQ,GAAI8M,iBAAiB,CAAC5L,KAAKC,QAAQnB,SAAQ,GAAI4I,KAAK,CAAC1H,KAAKK,OAAOvB,QAAQ,SAASyB,UAAU/B,GAAG,CAAC,QAAQ,SAAS,QAAQ,QAAQ+D,SAAS/D,IAAIqN,SAAS,CAAC7L,KAAKC,QAAQnB,SAAQ,GAAIgN,KAAK,CAAC9L,KAAKC,QAAQnB,SAAQ,GAAImC,UAAU,CAACjB,KAAK,CAACK,OAAO,MAAMvB,QAAQ,QAAQiN,qBAAqB,CAAC/L,KAAKC,QAAQnB,SAAQ,GAAIkN,uBAAuB,CAAChM,KAAKiM,MAAMnN,QAAQ,IAAI,IAAIoN,cAAc,CAAClM,KAAKqB,OAAOvC,QAAQ,GAAGmJ,KAAK,CAACjI,KAAKC,QAAQnB,aAAQ,IAASwC,MAAM,CAAC,WAAW,OAAO,QAAQ,eAAeC,KAAK,KAAI,CAAE4K,GAAG,KAAKC,SAAQ,EAAGC,iBAAiB,KAAKC,SAAS,GAAGC,UAAU,KAAKC,QAAO,EAAGrN,EAAE0C,KAAK4K,cAAa,IAAK3K,SAAS,CAAC4K,YAAY,YAAO,IAASjL,KAAKwG,KAAKxG,KAAKgL,aAAahL,KAAKwG,IAAI,EAAE0E,sBAAsB,MAAM,SAAS/K,OAAOH,KAAK8J,cAAc,MAAM,KAAK,EAAEqB,iBAAiB,OAAOnL,KAAK2K,SAAQ,EAAGlN,EAAET,GAAG,oBAAmB,EAAGS,EAAET,GAAG,kBAAkB,EAAEoO,eAAe,MAAM,CAAC,uBAAuBpL,KAAKgK,eAAe,KAAK,cAAchK,KAAK6K,SAAS,KAAK,EAAEQ,qBAAqB,KAAI,EAAG5N,EAAET,GAAG,eAAesO,oBAAoB,KAAI,EAAG7N,EAAET,GAAG,YAAYuO,oBAAoB,KAAI,EAAG9N,EAAET,GAAG,SAASuD,MAAM,CAAC0J,gBAAgBlN,GAAGiD,KAAK4K,mBAAmB7N,EAAEiD,KAAK4K,iBAAiB9B,QAAQ9I,KAAK4K,iBAAiBjC,QAAQ,EAAE4B,uBAAuBxN,GAAG,GAAGiD,KAAK8K,UAAU,CAAC,MAAM9N,EAAEgD,KAAKoB,MAAMoK,KAAKxL,KAAK8K,UAAUW,wBAAwB,CAACzO,KAAKD,GAAG,CAAC,GAAG2O,cAAc/H,OAAOgI,iBAAiB,UAAU3L,KAAK4L,cAAc,EAAEC,gBAAgBlI,OAAOmI,oBAAoB,UAAU9L,KAAK4L,eAAe5L,KAAK0K,GAAGqB,IAAI,wBAAwB/L,KAAK0K,GAAGsB,SAAS,EAAEC,UAAajM,KAAKkM,eAAelM,KAAK0K,GAAG,IAAI/F,IAAJ,CAAS3E,KAAKoB,MAAMoK,MAAMxL,KAAK0K,GAAG5E,GAAG,wBAAwB/I,IAAIiD,KAAKmM,YAAYpP,EAAG,IAAGiD,KAAKR,YAAa,SAASQ,KAAKR,UAAUF,SAAS8M,KAAKC,aAAarM,KAAKyB,IAAInC,SAAS8M,KAAKE,WAAgBhN,SAASC,cAAcS,KAAKR,WAAW+M,YAAYvM,KAAKyB,KAAK,EAAE+K,YAAYxM,KAAKsB,iBAAiBtB,KAAKyB,IAAIqB,QAAQ,EAAEtC,QAAQ,CAACiM,SAAS1P,GAAGiD,KAAK4J,cAAc7M,GAAGiD,KAAK0M,iBAAiB1M,KAAKgB,MAAM,WAAWjE,GAAG,EAAE4P,KAAK5P,GAAGiD,KAAK6J,UAAU9M,GAAGiD,KAAK0M,iBAAiB1M,KAAKgB,MAAM,OAAOjE,GAAG,EAAE6P,MAAM7P,GAAGiD,KAAKoK,WAAWpK,KAAKgL,cAAa,EAAGhL,KAAKgB,MAAM,eAAc,GAAI6H,YAAW,KAAM7I,KAAKgB,MAAM,QAAQjE,EAAG,GAAE,KAAK,EAAE6O,cAAc7O,GAAG,OAAOA,EAAEuF,SAAS,KAAK,GAAGtC,KAAKyM,SAAS1P,GAAG,MAAM,KAAK,GAAGiD,KAAK2M,KAAK5P,GAAG,MAAM,KAAK,GAAGiD,KAAK4M,MAAM7P,GAAG,EAAEoP,YAAYpP,GAAGiD,KAAKkK,cAAc,cAAcnN,EAAEwB,KAAKyB,KAAK2M,KAAK5P,GAAG,eAAeA,EAAEwB,MAAMyB,KAAKyM,SAAS1P,GAAG,EAAE8P,kBAAkB7M,KAAK2K,SAAS3K,KAAK2K,QAAQ3K,KAAK2K,QAAQ3K,KAAK8M,kBAAkB9M,KAAK+M,uBAAuB,EAAEL,iBAAiB1M,KAAK2K,SAAS3K,KAAK2K,QAAQ3K,KAAK+M,wBAAwB/M,KAAK4B,WAAU,WAAY5B,KAAK6M,iBAAkB,GAAE,EAAEC,kBAAkB9M,KAAK2K,SAAQ,EAAG3K,KAAK6J,QAAQ7J,KAAK4K,iBAAiB,IAAIxN,GAAE,KAAM4C,KAAK2M,OAAO3M,KAAK8M,iBAAkB,GAAE9M,KAAKgK,iBAAiBhK,KAAK2K,SAAQ,EAAG3K,KAAK+M,wBAAwB,EAAEA,wBAAwB/M,KAAK4K,kBAAkB5K,KAAK4K,iBAAiB5B,OAAO,EAAEgE,qBAAqB,IAAIhN,KAAKiL,WAAWjL,KAAK8K,UAAU,OAAO,MAAM/N,EAAEiD,KAAKoB,MAAMoK,WAAWxL,KAAK4B,YAAY,MAAM5E,EAAE,CAACiQ,mBAAkB,EAAGC,cAAcnQ,EAAEoQ,WAAU,EAAG3P,EAAE4P,MAAMpN,KAAK8K,WAAU,EAAGrG,EAAE4I,iBAAiBtQ,EAAEC,GAAGgD,KAAK8K,UAAUwC,UAAU,EAAEhM,iBAAiB,IAAIvE,EAAEiD,KAAK8K,YAAY,QAAQ/N,EAAEiD,KAAK8K,iBAAY,IAAS/N,GAAGA,EAAEwQ,aAAavN,KAAK8K,UAAU,KAAK,IAAI5F,EAAEH,EAAE,IAAIQ,EAAEpI,EAAE,MAAMqI,EAAErI,EAAEM,EAAE8H,GAAGE,EAAEtI,EAAE,MAAMqK,EAAErK,EAAEM,EAAEgI,GAAGgC,EAAEtK,EAAE,KAAKuK,EAAEvK,EAAEM,EAAEgK,GAAGnK,EAAEH,EAAE,MAAMqQ,EAAErQ,EAAEM,EAAEH,GAAGmQ,EAAEtQ,EAAE,MAAMuQ,EAAEvQ,EAAEM,EAAEgQ,GAAGE,EAAExQ,EAAE,MAAMyQ,EAAEzQ,EAAEM,EAAEkQ,GAAGE,EAAE1Q,EAAE,MAAM2Q,EAAE,CAAC,EAAEA,EAAE7G,kBAAkB2G,IAAIE,EAAE5G,cAAcsG,IAAIM,EAAE3G,OAAOO,IAAIN,KAAK,KAAK,QAAQ0G,EAAEzG,OAAOG,IAAIsG,EAAExG,mBAAmBoG,IAAIlI,IAAIqI,EAAEzN,EAAE0N,GAAGD,EAAEzN,GAAGyN,EAAEzN,EAAEmH,QAAQsG,EAAEzN,EAAEmH,OAAO,IAAIwG,EAAE5Q,EAAE,MAAMiQ,EAAEjQ,EAAE,MAAM6Q,EAAE7Q,EAAEM,EAAE2P,GAAGa,GAAE,EAAGF,EAAE3N,GAAG8E,GAAE,WAAY,IAAInI,EAAEiD,KAAKhD,EAAED,EAAEmR,MAAMC,GAAG,OAAOnR,EAAE,aAAa,CAAC4I,MAAM,CAAC5H,KAAK,OAAOoQ,OAAO,IAAItI,GAAG,CAAC,cAAc/I,EAAEmP,aAAa,eAAenP,EAAEuE,iBAAiB,CAACtE,EAAE,MAAM,CAACyM,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,MAAMvR,EAAEkO,UAAUsD,WAAW,cAAc1I,IAAI,OAAOF,YAAY,aAAab,MAAM,CAAC,mBAAmB/H,EAAEsN,MAAMmE,MAAMzR,EAAEqO,aAAaxF,MAAM,CAACmB,KAAK,SAAS,aAAa,OAAO,kBAAkB,eAAehK,EAAEgO,OAAO,mBAAmB,qBAAqBhO,EAAEgO,OAAOpE,SAAS,OAAO,CAAC3J,EAAE,aAAa,CAAC4I,MAAM,CAAC5H,KAAK,kBAAkBoQ,OAAO,KAAK,CAACpR,EAAE,MAAM,CAAC2I,YAAY,gBAAgB,CAAC,KAAK5I,EAAE2I,MAAML,OAAOrI,EAAE,KAAK,CAAC2I,YAAY,cAAcC,MAAM,CAACkB,GAAG,eAAe/J,EAAEgO,SAAS,CAAChO,EAAE0R,GAAG,eAAe1R,EAAE2R,GAAG3R,EAAE2I,OAAO,gBAAgB3I,EAAE4R,KAAK5R,EAAE0R,GAAG,KAAKzR,EAAE,MAAM,CAAC2I,YAAY,cAAc,CAAC5I,EAAE8M,SAAS9M,EAAEgN,gBAAgB/M,EAAE,SAAS,CAACyM,WAAW,CAAC,CAACzL,KAAK,UAAUqQ,QAAQ,iBAAiBC,MAAMvR,EAAEoO,eAAeoD,WAAW,iBAAiBK,UAAU,CAACC,MAAK,KAAMlJ,YAAY,mBAAmBb,MAAM,CAAC,2BAA2B/H,EAAEkN,iBAAiBrE,MAAM,CAACrH,KAAK,UAAUuH,GAAG,CAACb,MAAMlI,EAAE8P,kBAAkB,CAAC9P,EAAE4N,QAAQ3N,EAAE,QAAQ,CAAC2I,YAAY,0BAA0BC,MAAM,CAACK,KAAKlJ,EAAE8N,YAAY7N,EAAE,OAAO,CAAC2I,YAAY,yBAAyBC,MAAM,CAACK,KAAKlJ,EAAE8N,YAAY9N,EAAE0R,GAAG,KAAKzR,EAAE,OAAO,CAAC2I,YAAY,mBAAmB,CAAC5I,EAAE0R,GAAG,mBAAmB1R,EAAE2R,GAAG3R,EAAEoO,gBAAgB,oBAAoBpO,EAAE0R,GAAG,KAAK1R,EAAE4N,QAAQ3N,EAAE,MAAM,CAAC2I,YAAY,gBAAgBC,MAAM,CAACkJ,OAAO,KAAKC,MAAM,OAAO,CAAC/R,EAAE,SAAS,CAAC2I,YAAY,wBAAwBC,MAAM,CAACoJ,OAAO,QAAQ,eAAe,IAAIC,KAAK,cAAcvR,EAAE,KAAKwR,GAAG,KAAKC,GAAG,UAAUpS,EAAE4R,MAAM,GAAG5R,EAAE4R,KAAK5R,EAAE0R,GAAG,KAAKzR,EAAE,YAAY,CAAC2I,YAAY,iBAAiBC,MAAM,CAACjG,OAAO5C,EAAE0N,gBAAgB,CAAC1N,EAAEqS,GAAG,YAAY,GAAGrS,EAAE0R,GAAG,KAAK1R,EAAEqN,WAAWrN,EAAEuN,qBAAqBtN,EAAE,WAAW,CAAC2I,YAAY,eAAeC,MAAM,CAAC,aAAa7I,EAAEsO,qBAAqB9M,KAAK,YAAYuH,GAAG,CAACb,MAAMlI,EAAE6P,OAAOhI,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAM,CAACvS,EAAE,QAAQ,CAAC4I,MAAM,CAACK,KAAKlJ,EAAE8N,YAAY,EAAE2E,OAAM,IAAK,MAAK,EAAG,cAAczS,EAAE4R,MAAM,OAAO5R,EAAE0R,GAAG,KAAKzR,EAAE,aAAa,CAAC4I,MAAM,CAAC5H,KAAKjB,EAAEmO,oBAAoBkD,OAAO,KAAK,CAACpR,EAAE,MAAM,CAACyM,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,MAAMvR,EAAEkO,UAAUsD,WAAW,cAAc5I,YAAY,gBAAgBb,MAAM,CAAC,kBAAkB3E,OAAOpD,EAAEkJ,MAAMlJ,EAAEoN,iBAAiB,mCAAmC,IAAIrE,GAAG,CAAC2J,UAAU,SAASzS,GAAG,OAAOA,EAAEgF,SAAShF,EAAE0S,cAAc,KAAK3S,EAAE6P,MAAM+C,MAAM,KAAKzO,UAAU,IAAI,CAAClE,EAAE,aAAa,CAAC4I,MAAM,CAAC5H,KAAK,kBAAkBoQ,OAAO,KAAK,CAACpR,EAAE,WAAW,CAACyM,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,MAAMvR,EAAE6M,YAAY2E,WAAW,gBAAgB5I,YAAY,OAAOb,MAAM,CAAC8K,WAAW7S,EAAE6M,aAAahE,MAAM,CAACrH,KAAK,yBAAyB,aAAaxB,EAAEuO,qBAAqBxF,GAAG,CAACb,MAAMlI,EAAE0P,UAAU7H,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAM,CAACvS,EAAE,cAAc,CAAC4I,MAAM,CAACK,KAAK,MAAM,EAAEuJ,OAAM,QAAS,GAAGzS,EAAE0R,GAAG,KAAKzR,EAAE,MAAM,CAAC2I,YAAY,kBAAkBC,MAAM,CAACkB,GAAG,qBAAqB/J,EAAEgO,SAAS,CAAChO,EAAEqS,GAAG,WAAWrS,EAAE0R,GAAG,KAAK1R,EAAEqN,UAAUrN,EAAEuN,qBAAqBtN,EAAE,WAAW,CAAC2I,YAAY,yBAAyBC,MAAM,CAACrH,KAAK,WAAW,aAAaxB,EAAEsO,sBAAsBvF,GAAG,CAACb,MAAMlI,EAAE6P,OAAOhI,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAM,CAACvS,EAAE,QAAQ,CAAC4I,MAAM,CAACK,KAAK,MAAM,EAAEuJ,OAAM,IAAK,MAAK,EAAG,cAAczS,EAAE4R,MAAM,GAAG5R,EAAE0R,GAAG,KAAKzR,EAAE,aAAa,CAAC4I,MAAM,CAAC5H,KAAK,kBAAkBoQ,OAAO,KAAK,CAACpR,EAAE,WAAW,CAACyM,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,MAAMvR,EAAE8M,QAAQ0E,WAAW,YAAY5I,YAAY,OAAOb,MAAM,CAAC8K,WAAW7S,EAAE8M,SAASjE,MAAM,CAACrH,KAAK,yBAAyB,aAAaxB,EAAEwO,qBAAqBzF,GAAG,CAACb,MAAMlI,EAAE4P,MAAM/H,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAM,CAACvS,EAAE,eAAe,CAAC4I,MAAM,CAACK,KAAK,MAAM,EAAEuJ,OAAM,QAAS,IAAI,MAAM,IAAK,GAAE,IAAG,EAAG,KAAK,WAAW,MAAM,mBAAmBxB,KAAKA,IAAIC,GAAG,MAAM7N,EAAE6N,EAAExR,SAAQ,EAAGc,EAAE6C,GAAGA,GAAG,MAAMsI,EAAEtI,GAAG,KAAK,CAACrD,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAI6H,IAAI,IAAI3H,EAAEJ,EAAE,MAAMK,EAAEL,EAAE,MAAMM,EAAEN,EAAE,MAAM,MAAMO,EAAE,CAACM,KAAK,YAAYC,WAAW,CAAC4R,SAAStS,EAAEsS,UAAUC,cAAa,EAAGzR,MAAM,CAACiI,iBAAiB,CAAC/H,KAAKK,OAAOvB,QAAQ,IAAIyN,UAAU,CAACvM,KAAKC,QAAQnB,SAAQ,GAAIkJ,eAAe,CAAClJ,aAAQ,EAAOkB,KAAK,CAACwR,YAAYC,WAAWpR,OAAOJ,WAAWqB,MAAM,CAAC,aAAa,cAAcgM,gBAAgB7L,KAAKsB,gBAAgB,EAAEd,QAAQ,CAACwM,qBAAqB,IAAIjQ,EAAEC,EAAE,SAASgD,KAAK4B,aAAa5B,KAAK8K,UAAU,OAAO,MAAM3N,EAAE,QAAQJ,EAAEiD,KAAKoB,MAAMC,eAAU,IAAStE,GAAG,QAAQC,EAAED,EAAEqE,MAAM6O,qBAAgB,IAASjT,OAAE,EAAOA,EAAEyE,IAAItE,IAAI6C,KAAKkQ,YAAW,EAAG1S,EAAE6P,iBAAiBlQ,EAAE,CAACgT,mBAAkB,EAAGlD,mBAAkB,EAAG1G,eAAevG,KAAKuG,eAAe4G,WAAU,EAAG1P,EAAE2P,OAAOpN,KAAKkQ,WAAW5C,WAAW,EAAEhM,iBAAiB,IAAIvE,EAAEmE,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE,IAAI,IAAIlE,EAAE,QAAQA,EAAEgD,KAAKkQ,kBAAa,IAASlT,GAAGA,EAAEuQ,WAAWxQ,GAAGiD,KAAKkQ,WAAW,IAAI,CAAC,MAAMnT,GAAGkL,EAAQlE,KAAKhH,EAAE,CAAC,EAAEqT,YAAYpQ,KAAK4B,WAAU,KAAM5B,KAAKgB,MAAM,cAAchB,KAAKkM,cAAe,GAAE,EAAEmE,YAAYrQ,KAAKgB,MAAM,cAAchB,KAAKsB,gBAAgB,IAAI3D,EAAED,EAAE,IAAIE,EAAET,EAAE,MAAMU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,KAAK6G,EAAE7G,EAAEM,EAAEM,GAAGkG,EAAE9G,EAAE,MAAM+G,EAAE/G,EAAEM,EAAEwG,GAAGE,EAAEhH,EAAE,MAAMiH,EAAEjH,EAAEM,EAAE0G,GAAGE,EAAElH,EAAE,MAAMmH,EAAEnH,EAAEM,EAAE4G,GAAGE,EAAEpH,EAAE,MAAMqH,EAAE,CAAC,EAAEA,EAAEyC,kBAAkB3C,IAAIE,EAAE0C,cAAchD,IAAIM,EAAE2C,OAAOnD,IAAIoD,KAAK,KAAK,QAAQ5C,EAAE6C,OAAOvJ,IAAI0G,EAAE8C,mBAAmBlD,IAAIvG,IAAI0G,EAAEnE,EAAEoE,GAAGD,EAAEnE,GAAGmE,EAAEnE,EAAEmH,QAAQhD,EAAEnE,EAAEmH,OAAO,IAAI9C,EAAEtH,EAAE,MAAMuH,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAGK,GAAE,EAAGN,EAAErE,GAAGzC,GAAE,WAAY,IAAIZ,EAAEiD,KAAK,OAAM,EAAGjD,EAAEmR,MAAMC,IAAI,WAAWpR,EAAEuT,GAAGvT,EAAEwT,GAAG,CAAC1K,IAAI,UAAUD,MAAM,CAAC4K,SAAS,GAAG,gBAAgB,GAAG,iBAAgB,EAAG,eAAezT,EAAEuJ,kBAAkBR,GAAG,CAAC,aAAa/I,EAAEqT,UAAU,aAAarT,EAAEsT,WAAWzL,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAM,CAACxS,EAAEqS,GAAG,WAAW,EAAEI,OAAM,IAAK,MAAK,IAAK,WAAWzS,EAAEwL,QAAO,GAAIxL,EAAEyL,YAAY,CAACzL,EAAEqS,GAAG,YAAY,EAAG,GAAE,IAAG,EAAG,KAAK,KAAK,MAAM,mBAAmBzK,KAAKA,IAAII,GAAG,MAAMG,EAAEH,EAAEtI,SAAS,IAAI,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIgH,IAAI,IAAI9G,EAAEJ,EAAE,MAAMK,EAAEL,EAAE,MAAMM,EAAEN,EAAEM,EAAED,GAAGE,EAAEP,EAAE,MAAMQ,EAAER,EAAEM,EAAEC,GAAGE,EAAET,EAAE,KAAKU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,MAAM6G,EAAE7G,EAAEM,EAAEM,GAAGkG,EAAE9G,EAAE,MAAM+G,EAAE/G,EAAEM,EAAEwG,GAAGE,EAAEhH,EAAE,MAAMiH,EAAE,CAAC,EAAEA,EAAE6C,kBAAkB/C,IAAIE,EAAE8C,cAAcpJ,IAAIsG,EAAE+C,OAAOtJ,IAAIuJ,KAAK,KAAK,QAAQhD,EAAEiD,OAAO1J,IAAIyG,EAAEkD,mBAAmBtD,IAAIvG,IAAI0G,EAAE/D,EAAEgE,GAAGD,EAAE/D,GAAG+D,EAAE/D,EAAEmH,QAAQpD,EAAE/D,EAAEmH,OAAOhK,EAAEkT,QAAQC,OAAOhH,QAAQiH,MAAK,EAAGpT,EAAEkT,QAAQC,OAAOhH,QAAQxD,MAAM,CAACM,KAAK,IAAIC,KAAK,KAAKlJ,EAAEkT,QAAQC,OAAOhH,QAAQ8G,SAAS,GAAGjT,EAAEkT,QAAQC,OAAOhH,QAAQ,iBAAiB,EAAE,MAAMrF,EAAE9G,EAAEqT,UAAU,IAAI,CAAC7T,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACS,EAAE,IAAIC,EAAEV,EAAE,IAAIW,IAAkB,MAAMH,GAAE,EAAhBL,EAAE,MAAmB0T,qBAAqBC,eAAe,CAAC,CAACC,OAAO,KAAKC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,eAAeC,QAAQ,YAAYC,WAAW,WAAW,mBAAmB,qBAAqB,kEAAkE,iEAAiE,0BAA0B,6BAA6B,oCAAoC,uCAAuC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,SAAS,aAAa,WAAW7H,MAAM,OAAO,cAAc,YAAY,mBAAmB,gBAAgB,gBAAgB,qBAAqB,kBAAkB,kBAAkB8H,OAAO,OAAO,YAAY,aAAa,kCAAkC,6BAA6B,qCAAqC,6BAA6BC,SAAS,QAAQC,MAAM,UAAU,eAAe,iBAAiB,kBAAkB,kBAAkBC,OAAO,QAAQ,sBAAsB,qBAAqB,gBAAgB,kBAAkB,8CAA8C,gEAAgE,eAAe,iBAAiBC,KAAK,SAAS,iBAAiB,kCAAkC,aAAa,qBAAqBC,QAAQ,UAAUC,KAAK,MAAM,iCAAiC,iCAAiC,kBAAkB,cAAc,qBAAqB,oBAAoB,kBAAkB,qBAAqB,gBAAgB,eAAe,gBAAgB,sBAAsB,6BAA6B,gCAAgCC,SAAS,SAAS,oBAAoB,gBAAgBC,OAAO,MAAM,iBAAiB,cAAc,eAAe,aAAaC,SAAS,YAAY,sBAAsB,kBAAkB,gBAAgB,iBAAiB,oBAAoB,4BAA4B,kBAAkB,YAAYC,OAAO,QAAQC,QAAQ,SAAS,kBAAkB,iBAAiB,2BAA2B,4BAA4B,6BAA6B,yBAAyB,eAAe,uBAAuB,oEAAoE,8EAA8E,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,mBAAmBC,QAAQ,UAAUC,WAAW,eAAe,mBAAmB,iBAAiBC,OAAO,QAAQ7H,MAAM,SAAS8H,OAAO,aAAaE,MAAM,YAAY,eAAe,iBAAiB,kBAAkB,iBAAiBE,KAAK,UAAU,iBAAiB,mBAAmB,aAAa,eAAeC,QAAQ,QAAQ,kBAAkB,qBAAqB,gBAAgB,aAAa,gBAAgB,iBAAiBE,SAAS,SAASC,OAAO,QAAQ,iBAAiB,uBAAuB,eAAe,kBAAkBC,SAAS,cAAc,oBAAoB,qBAAqB,kBAAkB,sBAAsBE,QAAQ,YAAY,kBAAkB,kBAAkB,6BAA6B,kCAAkC,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,kEAAkE,4EAA4E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,uBAAuB,eAAe,gBAAgBC,OAAO,OAAO,aAAa,eAAe7H,MAAM,QAAQ,cAAc,iBAAiB,mBAAmB,qBAAqB,gBAAgB,0BAA0B,kBAAkB,uBAAuB8H,OAAO,gBAAgB,YAAY,kBAAkB,kCAAkC,0CAA0C,oBAAoB,6BAA6B,qCAAqC,qCAAqCC,SAAS,WAAWC,MAAM,UAAU,eAAe,mBAAmB,kBAAkB,wBAAwBC,OAAO,SAAS,sBAAsB,oBAAoB,gBAAgB,qBAAqB,8CAA8C,0DAA0D,eAAe,kBAAkBC,KAAK,UAAU,iBAAiB,2BAA2B,aAAa,kBAAkBC,QAAQ,WAAWC,KAAK,QAAQ,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,yBAAyB,kBAAkB,uBAAuB,gBAAgB,iBAAiB,gBAAgB,iBAAiB,6BAA6B,gCAAgCC,SAAS,WAAW,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,qBAAqB,eAAe,2BAA2BC,SAAS,aAAa,sBAAsB,sBAAsB,gBAAgB,sBAAsB,oBAAoB,mBAAmB,kBAAkB,wBAAwBC,OAAO,QAAQC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,sCAAsC,6BAA6B,2BAA2B,eAAe,oBAAoB,gFAAgF,kGAAkG,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,OAAOC,WAAW,WAAW,mBAAmB,oBAAoB,kEAAkE,wDAAwD,0BAA0B,2CAA2C,oCAAoC,qDAAqD,iBAAiB,eAAe,eAAe,gBAAgBC,OAAO,SAAS,aAAa,eAAe7H,MAAM,SAAS,cAAc,wBAAwB,mBAAmB,kBAAkB,gBAAgB,yBAAyB,kBAAkB,iBAAiB8H,OAAO,qBAAqB,YAAY,kBAAkB,kCAAkC,+CAA+C,oBAAoB,6BAA6B,qCAAqC,gCAAgCC,SAAS,WAAWC,MAAM,WAAW,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,qBAAqB,gBAAgB,cAAc,8CAA8C,+CAA+C,eAAe,iBAAiBC,KAAK,cAAc,iBAAiB,yBAAyB,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,UAAU,iCAAiC,qCAAqC,kBAAkB,mBAAmB,qBAAqB,oBAAoB,kBAAkB,wBAAwB,gBAAgB,cAAc,gBAAgB,eAAe,6BAA6B,wBAAwBC,SAAS,YAAY,oBAAoB,yBAAyBC,OAAO,SAAS,iBAAiB,mBAAmB,eAAe,gBAAgBC,SAAS,YAAY,sBAAsB,qBAAqB,gBAAgB,iBAAiB,oBAAoB,iBAAiB,kBAAkB,qBAAqBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,iCAAiC,6BAA6B,2BAA2B,eAAe,kBAAkB,gFAAgF,0KAA0K,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,aAAaC,WAAW,cAAc,mBAAmB,cAAc,kEAAkE,2DAA2D,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,qBAAqB,eAAe,YAAYC,OAAO,OAAO,aAAa,YAAY7H,MAAM,MAAM,cAAc,aAAa,mBAAmB,iBAAiB,gBAAgB,gBAAgB,kBAAkB,oBAAoB8H,OAAO,kBAAkB,YAAY,eAAe,kCAAkC,oCAAoC,oBAAoB,8BAA8B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,OAAO,eAAe,eAAe,kBAAkB,aAAaC,OAAO,SAAS,sBAAsB,qBAAqB,gBAAgB,gBAAgB,8CAA8C,sCAAsC,eAAe,WAAWC,KAAK,SAAS,iBAAiB,qBAAqB,aAAa,mBAAmBC,QAAQ,WAAWC,KAAK,MAAM,iCAAiC,iCAAiC,kBAAkB,iBAAiB,qBAAqB,uBAAuB,kBAAkB,wBAAwB,gBAAgB,8BAA8B,gBAAgB,gBAAgB,6BAA6B,6BAA6BC,SAAS,UAAU,oBAAoB,mBAAmBC,OAAO,MAAM,iBAAiB,iBAAiB,eAAe,gBAAgBC,SAAS,gBAAgB,sBAAsB,0BAA0B,gBAAgB,cAAc,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,OAAOC,QAAQ,WAAW,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,gCAAgC,eAAe,oBAAoB,gFAAgF,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,wBAAwBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,gBAAgB,kEAAkE,iFAAiF,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,uBAAuB,eAAe,eAAeC,OAAO,YAAY,aAAa,WAAW7H,MAAM,YAAY,cAAc,kBAAkB,mBAAmB,uBAAuB,gBAAgB,yBAAyB,kBAAkB,wBAAwB8H,OAAO,oBAAoB,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,+BAA+B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,kBAAkB,kBAAkB,mBAAmBC,OAAO,SAAS,sBAAsB,mBAAmB,gBAAgB,qBAAqB,8CAA8C,gDAAgD,eAAe,qBAAqBC,KAAK,SAAS,iBAAiB,sBAAsB,aAAa,mBAAmBC,QAAQ,cAAcC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,sBAAsB,kBAAkB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,kCAAkCC,SAAS,YAAY,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,iBAAiB,eAAe,uBAAuBC,SAAS,gBAAgB,sBAAsB,mCAAmC,gBAAgB,oBAAoB,oBAAoB,sBAAsB,kBAAkB,kBAAkBC,OAAO,aAAaC,QAAQ,UAAU,kBAAkB,gBAAgB,2BAA2B,gCAAgC,6BAA6B,4CAA4C,eAAe,+BAA+B,gFAAgF,8GAA8G,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,wBAAwBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,gBAAgB,kEAAkE,iFAAiF,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,uBAAuB,eAAe,eAAeC,OAAO,YAAY,aAAa,WAAW7H,MAAM,YAAY,cAAc,kBAAkB,mBAAmB,uBAAuB,gBAAgB,yBAAyB,kBAAkB,wBAAwB8H,OAAO,oBAAoB,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,+BAA+B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,kBAAkB,kBAAkB,mBAAmBC,OAAO,SAAS,sBAAsB,mBAAmB,gBAAgB,qBAAqB,8CAA8C,gDAAgD,eAAe,qBAAqBC,KAAK,SAAS,iBAAiB,sBAAsB,aAAa,mBAAmBC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,sBAAsB,kBAAkB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,iCAAiCC,SAAS,YAAY,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,iBAAiB,eAAe,uBAAuBC,SAAS,gBAAgB,sBAAsB,mCAAmC,gBAAgB,oBAAoB,oBAAoB,sBAAsB,kBAAkB,kBAAkBC,OAAO,aAAaC,QAAQ,UAAU,kBAAkB,gBAAgB,2BAA2B,qCAAqC,6BAA6B,0CAA0C,eAAe,+BAA+B,gFAAgF,8GAA8G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,iBAAiB,qBAAqB,uBAAuBC,QAAQ,YAAYC,WAAW,iBAAiB,mBAAmB,aAAa,kEAAkE,mEAAmE,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,UAAU,aAAa,sBAAsB7H,MAAM,WAAW,cAAc,qBAAqB,mBAAmB,qBAAqB,gBAAgB,4BAA4B,kBAAkB,sBAAsB8H,OAAO,aAAa,YAAY,cAAc,kCAAkC,8BAA8B,oBAAoB,sBAAsB,qCAAqC,mCAAmCC,SAAS,YAAYC,MAAM,UAAU,eAAe,gBAAgB,kBAAkB,yBAAyBC,OAAO,WAAW,sBAAsB,+BAA+B,gBAAgB,6BAA6B,8CAA8C,4DAA4D,eAAe,yBAAyBC,KAAK,UAAU,iBAAiB,oBAAoB,aAAa,oBAAoBC,QAAQ,cAAcC,KAAK,UAAU,iCAAiC,0CAA0C,kBAAkB,oBAAoB,qBAAqB,oCAAoC,kBAAkB,4BAA4B,gBAAgB,kBAAkB,gBAAgB,qBAAqB,6BAA6B,sCAAsCC,SAAS,cAAc,oBAAoB,iBAAiBC,OAAO,YAAY,iBAAiB,0BAA0B,eAAe,mBAAmBC,SAAS,YAAY,sBAAsB,qBAAqB,gBAAgB,6BAA6B,oBAAoB,yBAAyB,kBAAkB,6BAA6BC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,uBAAuB,2BAA2B,0CAA0C,6BAA6B,0CAA0C,eAAe,mBAAmB,gFAAgF,qHAAqH,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,kEAAkE,kEAAkE,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,iBAAiB,eAAe,eAAeC,OAAO,SAAS,aAAa,aAAa7H,MAAM,QAAQ,cAAc,cAAc,mBAAmB,mBAAmB,gBAAgB,gBAAgB,kBAAkB,kBAAkB8H,OAAO,SAAS,YAAY,YAAY,kCAAkC,kCAAkC,oBAAoB,oBAAoB,qCAAqC,qCAAqCC,SAAS,YAAYC,MAAM,QAAQ,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,SAAS,sBAAsB,sBAAsB,gBAAgB,gBAAgB,8CAA8C,8CAA8C,eAAe,eAAeC,KAAK,OAAO,iBAAiB,iBAAiB,aAAa,aAAaC,QAAQ,UAAUC,KAAK,OAAO,iCAAiC,iCAAiC,kBAAkB,kBAAkB,qBAAqB,qBAAqB,kBAAkB,kBAAkB,gBAAgB,gBAAgB,gBAAgB,gBAAgB,6BAA6B,6BAA6BC,SAAS,WAAW,oBAAoB,oBAAoBC,OAAO,SAAS,iBAAiB,iBAAiB,eAAe,eAAeC,SAAS,WAAW,sBAAsB,sBAAsB,gBAAgB,gBAAgB,oBAAoB,oBAAoB,kBAAkB,kBAAkBC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,2BAA2B,6BAA6B,6BAA6B,eAAe,eAAe,gFAAgF,kFAAkF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,iBAAiB,qBAAqB,mBAAmBC,QAAQ,OAAOC,WAAW,WAAW,mBAAmB,kBAAkBC,OAAO,SAAS7H,MAAM,QAAQ8H,OAAO,SAASE,MAAM,SAAS,eAAe,qBAAqB,kBAAkB,cAAc,8CAA8C,yCAAyCE,KAAK,QAAQ,iBAAiB,qBAAqB,aAAa,sBAAsBC,QAAQ,WAAW,kBAAkB,sBAAsB,gBAAgB,gBAAgB,gBAAgB,kBAAkBE,SAAS,SAASC,OAAO,QAAQ,iBAAiB,eAAe,eAAe,kBAAkBC,SAAS,SAAS,sBAAsB,kBAAkB,oBAAoB,oBAAoB,kBAAkB,wBAAwBE,QAAQ,SAAS,kBAAkB,kBAAkB,6BAA6B,6BAA6B,wCAAwC,qCAAqC,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,sBAAsBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,wBAAwB,kEAAkE,oFAAoF,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,mBAAmB,eAAe,iBAAiBC,OAAO,SAAS,aAAa,gBAAgB7H,MAAM,SAAS,cAAc,eAAe,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,oBAAoB8H,OAAO,gBAAgB,YAAY,kBAAkB,kCAAkC,4DAA4D,oBAAoB,uBAAuB,qCAAqC,mCAAmCC,SAAS,WAAWC,MAAM,WAAW,eAAe,kBAAkB,kBAAkB,sBAAsBC,OAAO,SAAS,sBAAsB,oBAAoB,gBAAgB,qBAAqB,8CAA8C,0DAA0D,eAAe,eAAeC,KAAK,YAAY,iBAAiB,sBAAsB,aAAa,oBAAoBC,QAAQ,UAAUC,KAAK,QAAQ,iCAAiC,mCAAmC,kBAAkB,mBAAmB,qBAAqB,0BAA0B,kBAAkB,0BAA0B,gBAAgB,qBAAqB,gBAAgB,kBAAkB,6BAA6B,sCAAsCC,SAAS,WAAW,oBAAoB,wBAAwBC,OAAO,SAAS,iBAAiB,4BAA4B,eAAe,0BAA0BC,SAAS,UAAU,sBAAsB,yBAAyB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,0BAA0BC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,mBAAmB,2BAA2B,yCAAyC,6BAA6B,mCAAmC,eAAe,mBAAmB,gFAAgF,0GAA0G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,kBAAkBC,QAAQ,WAAWC,WAAW,YAAY,mBAAmB,uBAAuB,kEAAkE,kEAAkE,0BAA0B,4BAA4B,oCAAoC,uCAAuC,iBAAiB,qBAAqB,eAAe,iBAAiBC,OAAO,WAAW,aAAa,iBAAiB7H,MAAM,OAAO,cAAc,cAAc,mBAAmB,kBAAkB,gBAAgB,kBAAkB,kBAAkB,sBAAsB8H,OAAO,kBAAkB,YAAY,oBAAoB,kCAAkC,mDAAmD,oBAAoB,2CAA2C,qCAAqC,yCAAyCC,SAAS,UAAUC,MAAM,WAAW,eAAe,sBAAsB,kBAAkB,mBAAmBC,OAAO,UAAU,sBAAsB,sBAAsB,gBAAgB,qBAAqB,8CAA8C,kDAAkD,eAAe,qBAAqBC,KAAK,YAAY,iBAAiB,yBAAyB,aAAa,gBAAgBC,QAAQ,YAAYC,KAAK,QAAQ,iCAAiC,kCAAkC,kBAAkB,mBAAmB,qBAAqB,uBAAuB,kBAAkB,oBAAoB,gBAAgB,sBAAsB,gBAAgB,oBAAoB,6BAA6B,iCAAiCC,SAAS,WAAW,oBAAoB,8BAA8BC,OAAO,SAAS,iBAAiB,oBAAoB,eAAe,sBAAsBC,SAAS,YAAY,sBAAsB,sBAAsB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,iBAAiBC,OAAO,SAASC,QAAQ,YAAY,kBAAkB,qBAAqB,2BAA2B,iCAAiC,6BAA6B,6BAA6B,eAAe,oBAAoB,gFAAgF,8FAA8F,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,YAAYC,WAAW,eAAe,mBAAmB,mBAAmB,0BAA0B,iCAAiC,oCAAoC,2CAA2C,iBAAiB,oBAAoBC,OAAO,UAAU7H,MAAM,QAAQ,mBAAmB,mBAAmB,kBAAkB,qBAAqB8H,OAAO,aAAa,YAAY,mBAAmB,qCAAqC,2CAA2CE,MAAM,QAAQ,eAAe,gBAAgB,kBAAkB,iBAAiBC,OAAO,UAAU,sBAAsB,0BAA0B,8CAA8C,iDAAiDC,KAAK,WAAW,iBAAiB,qBAAqB,aAAa,cAAcC,QAAQ,kBAAkB,kBAAkB,kBAAkB,kBAAkB,qBAAqB,gBAAgB,iBAAiB,gBAAgB,gBAAgB,6BAA6B,uBAAuBE,SAAS,YAAYC,OAAO,OAAO,iBAAiB,eAAe,eAAe,eAAeC,SAAS,YAAY,sBAAsB,mBAAmB,oBAAoB,mBAAmB,kBAAkB,mBAAmBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,sBAAsB,2BAA2B,kCAAkC,6BAA6B,sBAAsB,eAAe,kBAAkB,oEAAoE,iFAAiF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,UAAUC,WAAW,YAAY,mBAAmB,mBAAmB,kEAAkE,0EAA0E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,4BAA4B,eAAe,oBAAoBC,OAAO,UAAU,aAAa,mBAAmB7H,MAAM,SAAS,cAAc,oBAAoB,mBAAmB,uBAAuB,gBAAgB,2BAA2B,kBAAkB,8BAA8B8H,OAAO,eAAe,YAAY,mBAAmB,kCAAkC,gDAAgD,oBAAoB,uBAAuB,qCAAqC,qCAAqCC,SAAS,SAASC,MAAM,WAAW,eAAe,wBAAwB,kBAAkB,uBAAuBC,OAAO,SAAS,sBAAsB,uBAAuB,gBAAgB,yBAAyB,8CAA8C,oDAAoD,eAAe,qBAAqBC,KAAK,UAAU,iBAAiB,qBAAqB,aAAa,iBAAiBC,QAAQ,SAASC,KAAK,SAAS,iCAAiC,wCAAwC,kBAAkB,uBAAuB,qBAAqB,+BAA+B,kBAAkB,+BAA+B,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,oCAAoCC,SAAS,YAAY,oBAAoB,mBAAmBC,OAAO,WAAW,iBAAiB,yBAAyB,eAAe,0BAA0BC,SAAS,aAAa,sBAAsB,iCAAiC,gBAAgB,2BAA2B,oBAAoB,qBAAqB,kBAAkB,wBAAwBC,OAAO,UAAUC,QAAQ,WAAW,kBAAkB,iBAAiB,2BAA2B,mEAAmE,6BAA6B,mCAAmC,eAAe,0BAA0B,gFAAgF,2GAA2G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,sBAAsBC,QAAQ,UAAUC,WAAW,cAAc,mBAAmB,qBAAqB,iBAAiB,sBAAsBC,OAAO,WAAW7H,MAAM,SAAS,kBAAkB,sBAAsB8H,OAAO,gBAAgB,qCAAqC,qCAAqCE,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,uBAAuB,8CAA8C,sDAAsDE,KAAK,WAAW,iBAAiB,+BAA+B,aAAa,iBAAiBC,QAAQ,WAAW,kBAAkB,qBAAqB,gBAAgB,kBAAkB,gBAAgB,qBAAqBE,SAAS,UAAUC,OAAO,SAAS,iBAAiB,sBAAsB,eAAe,2BAA2BC,SAAS,UAAU,sBAAsB,2BAA2B,oBAAoB,sBAAsB,kBAAkB,sBAAsBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,mBAAmB,6BAA6B,iCAAiC,wCAAwC,kDAAkD,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,eAAe,qBAAqB,gBAAgBC,QAAQ,SAASC,WAAW,WAAW,mBAAmB,YAAYC,OAAO,QAAQ7H,MAAM,QAAQ8H,OAAO,eAAeE,MAAM,QAAQ,eAAe,eAAe,kBAAkB,cAAcE,KAAK,MAAM,iBAAiB,iBAAiB,aAAa,aAAaC,QAAQ,QAAQ,kBAAkB,cAAc,gBAAgB,aAAa,gBAAgB,kBAAkBE,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,eAAe,eAAe,aAAaC,SAAS,SAAS,oBAAoB,mBAAmB,kBAAkB,cAAcE,QAAQ,QAAQ,kBAAkB,iBAAiB,6BAA6B,wBAAwB,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,sBAAsBC,QAAQ,YAAYC,WAAW,gBAAgB,mBAAmB,uBAAuB,kEAAkE,oEAAoE,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,yBAAyB,eAAe,sBAAsBC,OAAO,aAAa,aAAa,iBAAiB7H,MAAM,UAAU,cAAc,iBAAiB,mBAAmB,qBAAqB,gBAAgB,oBAAoB,kBAAkB,6BAA6B8H,OAAO,SAAS,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,8BAA8B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,eAAe,kBAAkB,mBAAmBC,OAAO,WAAW,sBAAsB,0BAA0B,gBAAgB,mBAAmB,8CAA8C,yCAAyC,eAAe,oBAAoBC,KAAK,YAAY,iBAAiB,wBAAwB,aAAa,gBAAgBC,QAAQ,UAAUC,KAAK,YAAY,iCAAiC,mDAAmD,kBAAkB,uBAAuB,qBAAqB,uBAAuB,kBAAkB,4BAA4B,gBAAgB,kBAAkB,gBAAgB,yBAAyB,6BAA6B,sBAAsBC,SAAS,QAAQ,oBAAoB,yBAAyBC,OAAO,UAAU,iBAAiB,YAAY,eAAe,mBAAmBC,SAAS,cAAc,sBAAsB,6BAA6B,gBAAgB,uBAAuB,oBAAoB,uBAAuB,kBAAkB,sBAAsBC,OAAO,WAAWC,QAAQ,cAAc,kBAAkB,mBAAmB,2BAA2B,kCAAkC,6BAA6B,0BAA0B,eAAe,6BAA6B,gFAAgF,4HAA4H,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,WAAWC,WAAW,WAAW,mBAAmB,iBAAiBC,OAAO,QAAQ7H,MAAM,OAAO8H,OAAO,YAAYE,MAAM,QAAQ,eAAe,mBAAmB,kBAAkB,eAAeE,KAAK,QAAQ,iBAAiB,8BAA8B,aAAa,oBAAoBC,QAAQ,SAAS,kBAAkB,4BAA4B,gBAAgB,iBAAiB,gBAAgB,sBAAsBE,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,cAAcC,SAAS,aAAa,oBAAoB,6BAA6B,kBAAkB,uBAAuBE,QAAQ,OAAO,kBAAkB,qBAAqB,6BAA6B,6BAA6B,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,mBAAmBC,QAAQ,SAASC,WAAW,WAAW,mBAAmB,mBAAmB,kEAAkE,yFAAyF,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,oBAAoB,eAAe,qBAAqBC,OAAO,SAAS,aAAa,oBAAoB7H,MAAM,SAAS,cAAc,6BAA6B,mBAAmB,wBAAwB,gBAAgB,2BAA2B,kBAAkB,qBAAqB8H,OAAO,iBAAiB,YAAY,sBAAsB,kCAAkC,yCAAyC,oBAAoB,+BAA+B,qCAAqC,qCAAqCC,SAAS,YAAYC,MAAM,WAAW,eAAe,iBAAiB,kBAAkB,qBAAqBC,OAAO,UAAU,sBAAsB,mBAAmB,gBAAgB,uBAAuB,8CAA8C,qDAAqD,eAAe,mBAAmBC,KAAK,aAAa,iBAAiB,uBAAuB,aAAa,mBAAmBC,QAAQ,UAAUC,KAAK,OAAO,iCAAiC,mCAAmC,kBAAkB,sBAAsB,qBAAqB,uBAAuB,kBAAkB,yBAAyB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,6BAA6B,0CAA0CC,SAAS,aAAa,oBAAoB,oBAAoBC,OAAO,QAAQ,iBAAiB,uBAAuB,eAAe,yBAAyBC,SAAS,eAAe,sBAAsB,iCAAiC,gBAAgB,qBAAqB,oBAAoB,sBAAsB,kBAAkB,sBAAsBC,OAAO,QAAQC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,oCAAoC,6BAA6B,gCAAgC,eAAe,yBAAyB,gFAAgF,0GAA0G,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,UAAU,mBAAmB,QAAQ,kEAAkE,+BAA+B,0BAA0B,sBAAsB,oCAAoC,gCAAgC,iBAAiB,WAAW,eAAe,UAAUC,OAAO,KAAK,aAAa,WAAW7H,MAAM,MAAM,cAAc,WAAW,mBAAmB,cAAc,gBAAgB,YAAY,kBAAkB,QAAQ8H,OAAO,OAAO,YAAY,KAAK,kCAAkC,eAAe,oBAAoB,YAAY,qCAAqC,mBAAmBC,SAAS,QAAQC,MAAM,KAAK,eAAe,UAAU,kBAAkB,SAASC,OAAO,KAAK,sBAAsB,SAAS,gBAAgB,YAAY,8CAA8C,4BAA4B,eAAe,SAASC,KAAK,IAAI,iBAAiB,cAAc,aAAa,KAAKC,QAAQ,IAAIC,KAAK,KAAK,iCAAiC,2BAA2B,kBAAkB,aAAa,qBAAqB,iBAAiB,kBAAkB,eAAe,gBAAgB,YAAY,gBAAgB,SAAS,6BAA6B,iBAAiBC,SAAS,IAAI,oBAAoB,SAASC,OAAO,KAAK,iBAAiB,OAAO,eAAe,QAAQC,SAAS,KAAK,sBAAsB,YAAY,gBAAgB,WAAW,oBAAoB,OAAO,kBAAkB,aAAaC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,QAAQ,2BAA2B,sBAAsB,6BAA6B,eAAe,eAAe,UAAU,gFAAgF,wCAAwC,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,mBAAmBC,QAAQ,WAAWC,WAAW,UAAU,mBAAmB,mBAAmBC,OAAO,aAAa7H,MAAM,UAAU8H,OAAO,WAAW,qCAAqC,gCAAgCE,MAAM,WAAW,eAAe,qBAAqB,kBAAkB,sBAAsB,8CAA8C,yCAAyCE,KAAK,QAAQ,iBAAiB,mBAAmB,aAAa,iBAAiBC,QAAQ,WAAW,kBAAkB,8BAA8B,gBAAgB,kBAAkB,gBAAgB,sBAAsBE,SAAS,aAAaC,OAAO,UAAU,iBAAiB,sBAAsB,eAAe,kBAAkBC,SAAS,aAAa,sBAAsB,wBAAwB,oBAAoB,uBAAuB,kBAAkB,0BAA0BC,OAAO,WAAWC,QAAQ,YAAY,kBAAkB,qBAAqB,6BAA6B,mCAAmC,wCAAwC,0DAA0D,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBG,OAAO,aAAa7H,MAAM,UAAUkI,KAAK,WAAW,aAAa,gBAAgB,kBAAkB,mBAAmBG,SAAS,gBAAgB,eAAe,mBAAmBE,SAAS,cAAc,kBAAkB,mBAAmB,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,QAAQC,WAAW,aAAa,mBAAmB,oBAAoB,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,sBAAsB,eAAe,iBAAiBC,OAAO,SAAS7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,qBAAqB,kBAAkB,uBAAuB8H,OAAO,cAAc,YAAY,QAAQ,qCAAqC,sCAAsCC,SAAS,WAAWC,MAAM,UAAU,eAAe,mBAAmB,kBAAkB,qBAAqBC,OAAO,WAAW,sBAAsB,sBAAsBS,MAAM,SAAS,8CAA8C,2EAA2E,6BAA6B,+BAA+BR,KAAK,SAAS,iBAAiB,6BAA6B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,kBAAkB,oBAAoB,kBAAkB,mBAAmB,gBAAgB,cAAc,gBAAgB,kBAAkB,6BAA6B,2BAA2BC,SAAS,YAAYC,OAAO,QAAQ,iBAAiB,0BAA0B,eAAe,gBAAgBC,SAAS,YAAY,sBAAsB,0BAA0B,oBAAoB,wBAAwB,kBAAkB,qBAAqBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,0CAA0C,6BAA6B,gCAAgC,eAAe,qBAAqB,oEAAoE,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,oBAAoBC,WAAW,qBAAqB,mBAAmB,0BAA0B,0BAA0B,4BAA4B,iBAAiB,8BAA8BC,OAAO,cAAc7H,MAAM,UAAU,kBAAkB,8BAA8B8H,OAAO,oBAAoB,qCAAqC,mCAAmCE,MAAM,UAAU,eAAe,aAAa,kBAAkB,oBAAoBC,OAAO,mBAAmB,8CAA8C,2CAA2CC,KAAK,kBAAkB,iBAAiB,8BAA8B,aAAa,aAAaC,QAAQ,eAAe,kBAAkB,0BAA0B,gBAAgB,kCAAkC,gBAAgB,kBAAkB,6BAA6B,+BAA+BE,SAAS,OAAOC,OAAO,YAAY,iBAAiB,qBAAqB,eAAe,kBAAkBC,SAAS,mBAAmB,sBAAsB,sBAAsB,oBAAoB,+BAA+B,kBAAkB,yBAAyBC,OAAO,cAAcC,QAAQ,cAAc,kBAAkB,gCAAgC,2BAA2B,yCAAyC,6BAA6B,6BAA6B,wCAAwC,4DAA4D,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,aAAaC,WAAW,cAAc,mBAAmB,eAAe,kEAAkE,sDAAsD,0BAA0B,6BAA6B,oCAAoC,mCAAmC,iBAAiB,mBAAmB,eAAe,eAAeC,OAAO,OAAO,aAAa,cAAc7H,MAAM,OAAO,cAAc,aAAa,mBAAmB,kBAAkB,gBAAgB,iBAAiB,kBAAkB,oBAAoB8H,OAAO,YAAY,YAAY,UAAU,kCAAkC,0CAA0C,oBAAoB,0BAA0B,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,QAAQ,eAAe,gBAAgB,kBAAkB,aAAaC,OAAO,SAAS,sBAAsB,wBAAwB,gBAAgB,gBAAgB,8CAA8C,6CAA6C,eAAe,uBAAuBC,KAAK,QAAQ,iBAAiB,mBAAmB,aAAa,mBAAmBC,QAAQ,WAAWC,KAAK,OAAO,iCAAiC,kCAAkC,kBAAkB,kBAAkB,qBAAqB,uBAAuB,kBAAkB,4BAA4B,gBAAgB,qBAAqB,gBAAgB,gBAAgB,6BAA6B,0BAA0BC,SAAS,UAAU,oBAAoB,sBAAsBC,OAAO,MAAM,iBAAiB,iBAAiB,eAAe,oBAAoBC,SAAS,gBAAgB,sBAAsB,0BAA0B,gBAAgB,cAAc,oBAAoB,wBAAwB,kBAAkB,4BAA4BC,OAAO,OAAOC,QAAQ,WAAW,kBAAkB,kBAAkB,2BAA2B,iCAAiC,6BAA6B,4BAA4B,eAAe,yBAAyB,gFAAgF,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,SAASC,WAAW,eAAe,mBAAmB,kBAAkB,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,wBAAwBC,OAAO,OAAO7H,MAAM,UAAU,mBAAmB,oBAAoB,kBAAkB,yBAAyB8H,OAAO,YAAY,YAAY,gBAAgB,qCAAqC,oCAAoCE,MAAM,UAAU,eAAe,iBAAiB,kBAAkB,gBAAgBC,OAAO,UAAU,sBAAsB,yBAAyB,8CAA8C,8CAA8CC,KAAK,WAAW,iBAAiB,sBAAsB,aAAa,kBAAkBC,QAAQ,WAAW,kBAAkB,mBAAmB,kBAAkB,0BAA0B,gBAAgB,mBAAmB,gBAAgB,iBAAiB,6BAA6B,0BAA0BE,SAAS,SAASC,OAAO,SAAS,iBAAiB,iBAAiB,eAAe,sBAAsBC,SAAS,eAAe,sBAAsB,yBAAyB,oBAAoB,mBAAmB,kBAAkB,wBAAwBC,OAAO,YAAYC,QAAQ,WAAW,kBAAkB,oBAAoB,2BAA2B,gCAAgC,6BAA6B,8BAA8B,eAAe,6BAA6B,oEAAoE,4EAA4E,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,gBAAgBC,QAAQ,UAAUE,OAAO,SAAS7H,MAAM,SAASkI,KAAK,UAAU,aAAa,kBAAkB,kBAAkB,8BAA8BG,SAAS,YAAY,eAAe,2BAA2BE,SAAS,aAAa,kBAAkB,wBAAwB,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,sBAAsBC,QAAQ,YAAYC,WAAW,YAAY,mBAAmB,qBAAqB,kEAAkE,2EAA2E,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,gBAAgB,eAAe,cAAcC,OAAO,UAAU,aAAa,gBAAgB7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,mBAAmB8H,OAAO,YAAY,YAAY,iBAAiB,kCAAkC,8CAA8C,oBAAoB,gCAAgC,qCAAqC,sCAAsCC,SAAS,WAAWC,MAAM,QAAQ,eAAe,mBAAmB,kBAAkB,iBAAiBC,OAAO,YAAY,sBAAsB,kBAAkB,gBAAgB,cAAc,8CAA8C,yDAAyD,eAAe,kBAAkBC,KAAK,WAAW,iBAAiB,uBAAuB,aAAa,eAAeC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,mBAAmB,qBAAqB,wBAAwB,kBAAkB,0BAA0B,gBAAgB,iBAAiB,gBAAgB,gBAAgB,6BAA6B,0BAA0BC,SAAS,YAAY,oBAAoB,mBAAmBC,OAAO,SAAS,iBAAiB,sBAAsB,eAAe,mBAAmBC,SAAS,aAAa,sBAAsB,uBAAuB,gBAAgB,cAAc,oBAAoB,oBAAoB,kBAAkB,2BAA2BC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,6BAA6B,eAAe,gBAAgB,gFAAgF,gFAAgF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,QAAQC,WAAW,aAAa,mBAAmB,qBAAqB,kEAAkE,2EAA2E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,sBAAsB,eAAe,iBAAiBC,OAAO,WAAW,aAAa,eAAe7H,MAAM,SAAS,cAAc,eAAe,mBAAmB,mBAAmB,gBAAgB,uBAAuB,kBAAkB,uBAAuB8H,OAAO,gBAAgB,YAAY,cAAc,kCAAkC,sCAAsC,oBAAoB,uBAAuB,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,cAAcC,OAAO,SAAS,sBAAsB,qBAAqB,gBAAgB,kBAAkB,8CAA8C,oDAAoD,eAAe,eAAeC,KAAK,UAAU,iBAAiB,0BAA0B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,oCAAoC,kBAAkB,kBAAkB,qBAAqB,mBAAmB,kBAAkB,gCAAgC,gBAAgB,kBAAkB,gBAAgB,mBAAmB,6BAA6B,8BAA8BC,SAAS,WAAW,oBAAoB,wBAAwBC,OAAO,YAAY,iBAAiB,yBAAyB,eAAe,qBAAqBC,SAAS,gBAAgB,sBAAsB,6BAA6B,gBAAgB,gBAAgB,oBAAoB,mBAAmB,kBAAkB,iCAAiCC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,wCAAwC,6BAA6B,qCAAqC,eAAe,wBAAwB,gFAAgF,uFAAuF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,mBAAmBC,QAAQ,QAAQE,OAAO,WAAW7H,MAAM,SAASkI,KAAK,WAAW,aAAa,iBAAiB,kBAAkB,mBAAmBG,SAAS,WAAW,eAAe,0BAA0BE,SAAS,aAAa,kBAAkB,oBAAoB,6BAA6B,qCAAqC,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,wBAAwBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,oBAAoB,kEAAkE,0EAA0E,0BAA0B,6BAA6B,oCAAoC,uCAAuC,iBAAiB,wBAAwB,eAAe,oBAAoBC,OAAO,UAAU,aAAa,gBAAgB7H,MAAM,YAAY,cAAc,oBAAoB,mBAAmB,sBAAsB,gBAAgB,wBAAwB,kBAAkB,0BAA0B8H,OAAO,eAAe,YAAY,oBAAoB,kCAAkC,0CAA0C,oBAAoB,4BAA4B,qCAAqC,sCAAsCC,SAAS,UAAUC,MAAM,UAAU,eAAe,sBAAsB,kBAAkB,qBAAqBC,OAAO,SAAS,sBAAsB,yBAAyB,gBAAgB,iBAAiB,8CAA8C,sDAAsD,eAAe,yBAAyBC,KAAK,YAAY,iBAAiB,4BAA4B,aAAa,sBAAsBC,QAAQ,UAAUC,KAAK,aAAa,iCAAiC,yCAAyC,kBAAkB,uBAAuB,qBAAqB,qBAAqB,kBAAkB,kCAAkC,gBAAgB,iBAAiB,gBAAgB,iBAAiB,6BAA6B,qCAAqCC,SAAS,WAAW,oBAAoB,iBAAiBC,OAAO,UAAU,iBAAiB,uBAAuB,eAAe,uBAAuBC,SAAS,SAAS,sBAAsB,kBAAkB,gBAAgB,eAAe,oBAAoB,oBAAoB,kBAAkB,sCAAsCC,OAAO,YAAYC,QAAQ,YAAY,kBAAkB,sBAAsB,2BAA2B,oCAAoC,6BAA6B,qCAAqC,eAAe,yBAAyB,gFAAgF,iHAAiH,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,uBAAuBC,QAAQ,YAAYC,WAAW,UAAU,mBAAmB,sBAAsB,0BAA0B,uBAAuB,oCAAoC,qCAAqC,iBAAiB,qBAAqBC,OAAO,WAAW7H,MAAM,UAAU,cAAc,yBAAyB,mBAAmB,oBAAoB,kBAAkB,wBAAwB8H,OAAO,mBAAmB,YAAY,mBAAmB,qCAAqC,mCAAmCE,MAAM,QAAQ,eAAe,eAAe,kBAAkB,qBAAqBC,OAAO,aAAa,sBAAsB,qBAAqBS,MAAM,YAAY,8CAA8C,0DAA0D,6BAA6B,+BAA+BR,KAAK,YAAY,iBAAiB,oBAAoB,aAAa,wBAAwBC,QAAQ,UAAUC,KAAK,UAAU,kBAAkB,oBAAoB,kBAAkB,6BAA6B,gBAAgB,cAAc,gBAAgB,kBAAkB,6BAA6B,qCAAqCC,SAAS,aAAaC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,iBAAiBC,SAAS,YAAY,sBAAsB,0BAA0B,oBAAoB,oBAAoB,kBAAkB,uBAAuBC,OAAO,YAAYC,QAAQ,UAAU,kBAAkB,sBAAsB,2BAA2B,oCAAoC,6BAA6B,0BAA0B,eAAe,qBAAqB,oEAAoE,qFAAqF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,oBAAoBC,QAAQ,QAAQC,WAAW,WAAW,mBAAmB,qBAAqB,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,eAAeC,OAAO,SAAS7H,MAAM,WAAW,mBAAmB,oBAAoB,kBAAkB,iBAAiB8H,OAAO,OAAO,YAAY,kBAAkB,qCAAqC,mCAAmCE,MAAM,SAAS,eAAe,iBAAiB,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,mBAAmB,8CAA8C,4CAA4CC,KAAK,QAAQ,iBAAiB,2BAA2B,aAAa,kBAAkBC,QAAQ,UAAU,kBAAkB,oBAAoB,kBAAkB,yBAAyB,gBAAgB,eAAe,gBAAgB,oBAAoB,6BAA6B,8BAA8BE,SAAS,iBAAiBC,OAAO,SAAS,iBAAiB,wBAAwB,eAAe,gBAAgBC,SAAS,aAAa,sBAAsB,2BAA2B,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,sBAAsB,2BAA2B,8CAA8C,6BAA6B,8BAA8B,eAAe,eAAe,oEAAoE,0FAA0F,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,kBAAkBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,0BAA0B,uBAAuB,oCAAoC,yCAAyC,iBAAiB,qBAAqB,eAAe,iBAAiBC,OAAO,QAAQ,aAAa,mBAAmB7H,MAAM,QAAQ,cAAc,qBAAqB,mBAAmB,mBAAmB,gBAAgB,yBAAyB,kBAAkB,mBAAmB8H,OAAO,UAAU,YAAY,gBAAgB,kCAAkC,sCAAsC,qCAAqC,mCAAmCC,SAAS,eAAeC,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,oBAAoBC,OAAO,UAAU,sBAAsB,oBAAoB,gBAAgB,cAAc,8CAA8C,iDAAiD,eAAe,oBAAoBC,KAAK,YAAY,iBAAiB,4BAA4B,aAAa,cAAcC,QAAQ,WAAWC,KAAK,QAAQ,iCAAiC,sCAAsC,kBAAkB,mBAAmB,qBAAqB,iBAAiB,kBAAkB,sBAAsB,gBAAgB,iBAAiB,cAAc,eAAe,yBAAyB,uBAAuB,eAAe,eAAe,cAAc,aAAa,cAAc,cAAc,cAAc,aAAa,gBAAgB,sBAAsB,6BAA6B,wBAAwBC,SAAS,YAAY,oBAAoB,gBAAgBC,OAAO,UAAU,iBAAiB,kBAAkB,eAAe,eAAeC,SAAS,aAAa,sBAAsB,wBAAwB,gBAAgB,eAAe,oBAAoB,gBAAgB,kBAAkB,qBAAqBC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,qBAAqB,2BAA2B,wCAAwC,6BAA6B,8BAA8B,eAAe,uBAAuB,oEAAoE,kGAAkG,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,qBAAqBC,QAAQ,SAASC,WAAW,aAAa,mBAAmB,sBAAsB,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,gBAAgB,eAAe,eAAeC,OAAO,YAAY7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,qBAAqB,gBAAgB,sBAAsB,kBAAkB,oBAAoB8H,OAAO,UAAU,YAAY,eAAe,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,UAAU,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,kBAAkBS,MAAM,SAAS,8CAA8C,yDAAyD,6BAA6B,8BAA8BR,KAAK,UAAU,iBAAiB,+BAA+B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,kBAAkB,oBAAoB,kBAAkB,qBAAqB,gBAAgB,eAAe,gBAAgB,iBAAiB,6BAA6B,mCAAmCC,SAAS,YAAYC,OAAO,WAAW,iBAAiB,qBAAqB,eAAe,mBAAmBC,SAAS,WAAW,sBAAsB,6BAA6B,oBAAoB,mBAAmB,kBAAkB,oBAAoBC,OAAO,WAAWC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,+BAA+B,eAAe,kBAAkB,oEAAoE,iFAAiF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,eAAe,kEAAkE,oEAAoE,0BAA0B,wBAAwB,oCAAoC,kCAAkC,iBAAiB,mBAAmB,eAAe,cAAcC,OAAO,OAAO,aAAa,eAAe7H,MAAM,QAAQ,cAAc,cAAc,mBAAmB,mBAAmB,gBAAgB,kBAAkB,kBAAkB,qBAAqB8H,OAAO,WAAW,YAAY,QAAQ,kCAAkC,wCAAwC,oBAAoB,2BAA2B,qCAAqC,mCAAmCC,SAAS,UAAUC,MAAM,UAAU,eAAe,cAAc,kBAAkB,eAAeC,OAAO,SAAS,sBAAsB,0BAA0B,gBAAgB,kBAAkB,8CAA8C,yCAAyC,eAAe,cAAcC,KAAK,QAAQ,iBAAiB,sBAAsB,aAAa,gBAAgBC,QAAQ,SAASC,KAAK,QAAQ,iCAAiC,oCAAoC,kBAAkB,mBAAmB,qBAAqB,wBAAwB,kBAAkB,mBAAmB,gBAAgB,eAAe,gBAAgB,gBAAgB,6BAA6B,gBAAgBC,SAAS,aAAa,oBAAoB,sBAAsBC,OAAO,MAAM,iBAAiB,cAAc,eAAe,cAAcC,SAAS,gBAAgB,sBAAsB,mBAAmB,gBAAgB,mBAAmB,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,wBAAwB,2BAA2B,8BAA8B,6BAA6B,4BAA4B,eAAe,kBAAkB,gFAAgF,kGAAkG,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,kBAAkBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,oBAAoB,kEAAkE,4DAA4D,0BAA0B,wBAAwB,oCAAoC,kCAAkC,iBAAiB,0BAA0B,eAAe,mBAAmBC,OAAO,QAAQ,aAAa,gBAAgB7H,MAAM,QAAQ,cAAc,8BAA8B,mBAAmB,kBAAkB,gBAAgB,mBAAmB,kBAAkB,wBAAwB8H,OAAO,OAAO,YAAY,gBAAgB,kCAAkC,yCAAyC,oBAAoB,6BAA6B,qCAAqC,4BAA4BC,SAAS,0BAA0BC,MAAM,YAAY,eAAe,eAAe,kBAAkB,oBAAoBC,OAAO,WAAW,sBAAsB,cAAc,gBAAgB,iBAAiB,8CAA8C,2CAA2C,eAAe,gBAAgBC,KAAK,UAAU,iBAAiB,gCAAgC,aAAa,gCAAgCC,QAAQ,WAAWC,KAAK,KAAK,iCAAiC,oCAAoC,kBAAkB,eAAe,qBAAqB,iBAAiB,kBAAkB,0BAA0B,gBAAgB,oBAAoB,gBAAgB,kBAAkB,6BAA6B,gCAAgCC,SAAS,SAAS,oBAAoB,mBAAmBC,OAAO,QAAQ,iBAAiB,kBAAkB,eAAe,mBAAmBC,SAAS,UAAU,sBAAsB,mBAAmB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,wBAAwBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,iBAAiB,2BAA2B,2CAA2C,6BAA6B,0BAA0B,eAAe,yBAAyB,gFAAgF,mFAAmF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,MAAMC,WAAW,aAAa,mBAAmB,qBAAqB,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,mBAAmB,aAAa,iBAAiB7H,MAAM,UAAU,cAAc,iBAAiB,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,oBAAoB8H,OAAO,SAAS,YAAY,qBAAqB,qCAAqC,oCAAoCC,SAAS,YAAYC,MAAM,UAAU,eAAe,eAAe,kBAAkB,aAAaC,OAAO,aAAa,sBAAsB,wBAAwB,gBAAgB,mBAAmBS,MAAM,WAAW,8CAA8C,sDAAsD,6BAA6B,8BAA8BR,KAAK,SAAS,iBAAiB,oBAAoB,aAAa,sBAAsBC,QAAQ,UAAUC,KAAK,WAAW,kBAAkB,qBAAqB,qBAAqB,mBAAmB,kBAAkB,yBAAyB,gBAAgB,gBAAgB,gBAAgB,oBAAoB,6BAA6B,yBAAyBC,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,oBAAoBC,SAAS,eAAe,sBAAsB,4BAA4B,gBAAgB,kBAAkB,oBAAoB,mBAAmB,kBAAkB,uBAAuBC,OAAO,YAAYC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,kCAAkC,6BAA6B,2BAA2B,eAAe,kBAAkB,oEAAoE,+EAA+E,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,cAAc,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,UAAU,kEAAkE,qBAAqB,0BAA0B,mBAAmB,oCAAoC,4BAA4B,iBAAiB,OAAO,eAAe,OAAOC,OAAO,KAAK,aAAa,OAAO7H,MAAM,KAAK,cAAc,OAAO,mBAAmB,OAAO,gBAAgB,QAAQ,kBAAkB,OAAO8H,OAAO,MAAM,YAAY,OAAO,kCAAkC,YAAY,oBAAoB,aAAa,qCAAqC,eAAeC,SAAS,KAAKC,MAAM,KAAK,eAAe,UAAU,kBAAkB,OAAOC,OAAO,KAAK,sBAAsB,QAAQ,gBAAgB,OAAO,8CAA8C,uBAAuB,eAAe,QAAQC,KAAK,MAAM,iBAAiB,QAAQ,aAAa,MAAMC,QAAQ,KAAKC,KAAK,KAAK,iCAAiC,yBAAyB,kBAAkB,OAAO,qBAAqB,OAAO,kBAAkB,QAAQ,gBAAgB,SAAS,gBAAgB,SAAS,6BAA6B,WAAWC,SAAS,MAAM,oBAAoB,OAAOC,OAAO,KAAK,iBAAiB,OAAO,eAAe,SAASC,SAAS,KAAK,sBAAsB,OAAO,gBAAgB,OAAO,oBAAoB,UAAU,kBAAkB,QAAQC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,UAAU,2BAA2B,UAAU,6BAA6B,SAAS,eAAe,OAAO,gFAAgF,uCAAuC,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,QAAQ,kEAAkE,sBAAsB,0BAA0B,oBAAoB,oCAAoC,6BAA6B,iBAAiB,OAAO,eAAe,OAAOC,OAAO,KAAK,aAAa,OAAO7H,MAAM,KAAK,cAAc,OAAO,mBAAmB,OAAO,gBAAgB,QAAQ,kBAAkB,OAAO8H,OAAO,MAAM,YAAY,OAAO,kCAAkC,WAAW,oBAAoB,aAAa,qCAAqC,gBAAgBC,SAAS,KAAKC,MAAM,KAAK,eAAe,QAAQ,kBAAkB,OAAOC,OAAO,MAAM,sBAAsB,OAAO,gBAAgB,OAAO,8CAA8C,uBAAuB,eAAe,SAASC,KAAK,MAAM,iBAAiB,UAAU,aAAa,MAAMC,QAAQ,KAAKC,KAAK,KAAK,iCAAiC,6BAA6B,kBAAkB,OAAO,qBAAqB,SAAS,kBAAkB,QAAQ,gBAAgB,KAAK,gBAAgB,SAAS,6BAA6B,SAASC,SAAS,MAAM,oBAAoB,OAAOC,OAAO,KAAK,iBAAiB,OAAO,eAAe,OAAOC,SAAS,KAAK,sBAAsB,QAAQ,gBAAgB,OAAO,oBAAoB,KAAK,kBAAkB,QAAQC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,QAAQ,2BAA2B,UAAU,6BAA6B,SAAS,eAAe,OAAO,gFAAgF,2CAA2C,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,QAAQC,OAAO,KAAK7H,MAAM,KAAK8H,OAAO,MAAME,MAAM,KAAK,eAAe,QAAQ,kBAAkB,OAAO,8CAA8C,uBAAuBE,KAAK,MAAM,iBAAiB,UAAU,aAAa,MAAMC,QAAQ,KAAK,kBAAkB,QAAQ,gBAAgB,KAAK,gBAAgB,SAASE,SAAS,MAAMC,OAAO,KAAK,iBAAiB,OAAO,eAAe,OAAOC,SAAS,KAAK,sBAAsB,QAAQ,oBAAoB,KAAK,kBAAkB,QAAQE,QAAQ,KAAK,kBAAkB,QAAQ,6BAA6B,SAAS,wCAAwC,yBAAyBE,SAASlV,IAAI,MAAMC,EAAE,CAAC,EAAE,IAAI,MAAMG,KAAKJ,EAAEiU,aAAajU,EAAEiU,aAAa7T,GAAG+U,SAASlV,EAAEG,GAAG,CAACgV,MAAMhV,EAAEiV,aAAarV,EAAEiU,aAAa7T,GAAG+U,SAASG,OAAOtV,EAAEiU,aAAa7T,GAAGkV,QAAQrV,EAAEG,GAAG,CAACgV,MAAMhV,EAAEkV,OAAO,CAACtV,EAAEiU,aAAa7T,KAAKK,EAAE8U,eAAevV,EAAEgU,OAAO,CAACC,aAAa,CAAC,GAAGhU,IAAK,IAAG,MAAMS,EAAED,EAAE+U,QAAQ7U,EAAED,EAAE+U,SAASpL,KAAK3J,GAAGE,EAAEF,EAAEgV,QAAQrL,KAAK3J,EAAC,EAAG,IAAI,CAACV,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAII,IAAI,IAAIF,EAAEJ,EAAE,MAAM,MAAMK,EAAE,IAAIL,EAAEM,EAAEF,EAAL,GAAH,CAAc,CAACuC,KAAK,KAAI,CAAE4S,UAAS,IAAKnS,MAAM,CAACmS,SAAS3V,GAAGiD,KAAKgB,MAAM,UAAUjE,EAAE,GAAG4V,UAAUhP,OAAOgI,iBAAiB,SAAS3L,KAAK4S,oBAAoB5S,KAAK4S,oBAAoB,EAAE/G,gBAAgBlI,OAAOmI,oBAAoB,SAAS9L,KAAK4S,mBAAmB,EAAEpS,QAAQ,CAACoS,qBAAqB5S,KAAK0S,SAASpT,SAASuT,gBAAgBC,YAAY,IAAI,KAAKrV,EAAE,CAACqC,KAAK,KAAI,CAAE4S,UAAS,IAAKzG,UAAUzO,EAAEuV,IAAI,UAAU/S,KAAKgT,mBAAmBhT,KAAK0S,SAASlV,EAAEkV,QAAQ,EAAE7G,gBAAgBrO,EAAEyV,KAAK,UAAUjT,KAAKgT,kBAAkB,EAAExS,QAAQ,CAACwS,kBAAkBjW,GAAGiD,KAAK0S,SAAS3V,CAAC,GAAE,EAAG,KAAK,CAACA,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI5C,IAAI,IAAID,EAAEJ,EAAE,KAAK,MAAMK,EAAE,CAACgD,QAAQ,CAAC/C,EAAEF,EAAEE,EAAET,EAAEO,EAAEP,GAAE,EAAG,KAAK,CAACD,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI7C,IAAI,MAAMA,EAAER,GAAGmW,KAAKC,SAASzM,SAAS,IAAI0M,QAAQ,WAAW,IAAIpM,MAAM,EAAEjK,GAAG,EAAC,EAAG,KAAK,CAACA,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI7C,IAAI,MAAMA,EAAER,IAAIA,EAAEkP,QAAQzB,MAAM6I,QAAQtW,EAAEkP,WAAWlP,EAAEkP,QAAQ,CAAClP,EAAEkP,UAAUlP,EAAEkP,QAAQ,GAAGlP,EAAEkP,QAAQqH,MAAK,WAAYtT,KAAKyB,IAAI8R,aAAa,UAAUpT,OAAO,WAAW,GAAI,GAAC,CAAC,EAAG,KAAK,CAACpD,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoQ,EAAE,IAAI7P,IAAIJ,EAAE,MAAM,MAAMI,EAAE,WAAW,OAAOkC,OAAO+T,OAAO7P,OAAO,CAAC8P,eAAe9P,OAAO8P,gBAAgB,KAAK9P,OAAO8P,cAAc,GAAG,KAAK,CAAC1W,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,2qDAA2qD,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,iDAAiDC,MAAM,GAAGC,SAAS,wlBAAwlBC,eAAe,CAAC,kNAAkN,4jFAA4jFC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,woCAAwoC,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,wQAAwQC,eAAe,CAAC,kNAAkN,mmCAAmmCC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,ocAAoc,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,yIAAyIC,eAAe,CAAC,kNAAkN,yfAAyfC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,06CAA06C,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,yEAAyE,yCAAyCC,MAAM,GAAGC,SAAS,qmBAAqmBC,eAAe,CAAC,kNAAkN,wlDAAwlD,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,4rIAA4rI,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,mDAAmD,yCAAyCC,MAAM,GAAGC,SAAS,8qCAA8qCC,eAAe,CAAC,kNAAkN,ojKAAojK,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,02MAA02M,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,iDAAiD,yCAAyCC,MAAM,GAAGC,SAAS,k6DAAk6DC,eAAe,CAAC,kNAAkN,qzOAAqzO,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,87DAA87D,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,4sBAA4sBC,eAAe,CAAC,kNAAkN,mtEAAmtEC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAKX,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAE,GAAG,OAAOA,EAAE0J,SAAS,WAAW,OAAO1G,KAAKpD,KAAI,SAAUI,GAAG,IAAIG,EAAE,GAAGI,OAAE,IAASP,EAAE,GAAG,OAAOA,EAAE,KAAKG,GAAG,cAAcgD,OAAOnD,EAAE,GAAG,QAAQA,EAAE,KAAKG,GAAG,UAAUgD,OAAOnD,EAAE,GAAG,OAAOO,IAAIJ,GAAG,SAASgD,OAAOnD,EAAE,GAAGmE,OAAO,EAAE,IAAIhB,OAAOnD,EAAE,IAAI,GAAG,OAAOG,GAAGJ,EAAEC,GAAGO,IAAIJ,GAAG,KAAKH,EAAE,KAAKG,GAAG,KAAKH,EAAE,KAAKG,GAAG,KAAKA,CAAE,IAAGL,KAAK,GAAG,EAAEE,EAAEQ,EAAE,SAAST,EAAEI,EAAEI,EAAEC,EAAEC,GAAG,iBAAiBV,IAAIA,EAAE,CAAC,CAAC,KAAKA,OAAE,KAAU,IAAIW,EAAE,CAAC,EAAE,GAAGH,EAAE,IAAI,IAAII,EAAE,EAAEA,EAAEqC,KAAKmB,OAAOxD,IAAI,CAAC,IAAIC,EAAEoC,KAAKrC,GAAG,GAAG,MAAMC,IAAIF,EAAEE,IAAG,EAAG,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAEd,EAAEoE,OAAOtD,IAAI,CAAC,IAAIT,EAAE,GAAG+C,OAAOpD,EAAEc,IAAIN,GAAGG,EAAEN,EAAE,WAAM,IAASK,SAAI,IAASL,EAAE,KAAKA,EAAE,GAAG,SAAS+C,OAAO/C,EAAE,GAAG+D,OAAO,EAAE,IAAIhB,OAAO/C,EAAE,IAAI,GAAG,MAAM+C,OAAO/C,EAAE,GAAG,MAAMA,EAAE,GAAGK,GAAGN,IAAIC,EAAE,IAAIA,EAAE,GAAG,UAAU+C,OAAO/C,EAAE,GAAG,MAAM+C,OAAO/C,EAAE,GAAG,KAAKA,EAAE,GAAGD,GAAGC,EAAE,GAAGD,GAAGK,IAAIJ,EAAE,IAAIA,EAAE,GAAG,cAAc+C,OAAO/C,EAAE,GAAG,OAAO+C,OAAO/C,EAAE,GAAG,KAAKA,EAAE,GAAGI,GAAGJ,EAAE,GAAG,GAAG+C,OAAO3C,IAAIR,EAAEsW,KAAKlW,GAAG,CAAC,EAAEJ,CAAC,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAED,EAAE,GAAGI,EAAEJ,EAAE,GAAG,IAAII,EAAE,OAAOH,EAAE,GAAG,mBAAmBgX,KAAK,CAAC,IAAIzW,EAAEyW,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAUhX,MAAMK,EAAE,+DAA+D2C,OAAO5C,GAAGE,EAAE,OAAO0C,OAAO3C,EAAE,OAAO,MAAM,CAACR,GAAGmD,OAAO,CAAC1C,IAAIX,KAAK,KAAK,CAAC,MAAM,CAACE,GAAGF,KAAK,KAAK,GAAG,KAAKC,IAAI,aAAa,IAAIC,EAAE,GAAG,SAASG,EAAEJ,GAAG,IAAI,IAAII,GAAG,EAAEI,EAAE,EAAEA,EAAEP,EAAEmE,OAAO5D,IAAI,GAAGP,EAAEO,GAAG6W,aAAarX,EAAE,CAACI,EAAEI,EAAE,KAAK,CAAC,OAAOJ,CAAC,CAAC,SAASI,EAAER,EAAEQ,GAAG,IAAI,IAAIE,EAAE,CAAC,EAAEC,EAAE,GAAGC,EAAE,EAAEA,EAAEZ,EAAEoE,OAAOxD,IAAI,CAAC,IAAIC,EAAEb,EAAEY,GAAGE,EAAEN,EAAE8W,KAAKzW,EAAE,GAAGL,EAAE8W,KAAKzW,EAAE,GAAGR,EAAEK,EAAEI,IAAI,EAAEC,EAAE,GAAGqC,OAAOtC,EAAE,KAAKsC,OAAO/C,GAAGK,EAAEI,GAAGT,EAAE,EAAE,IAAIW,EAAEZ,EAAEW,GAAGkG,EAAE,CAACsQ,IAAI1W,EAAE,GAAG2W,MAAM3W,EAAE,GAAG4W,UAAU5W,EAAE,GAAG6W,SAAS7W,EAAE,GAAG8W,MAAM9W,EAAE,IAAI,IAAI,IAAIG,EAAEf,EAAEe,GAAG4W,aAAa3X,EAAEe,GAAG6W,QAAQ5Q,OAAO,CAAC,IAAIC,EAAEzG,EAAEwG,EAAEzG,GAAGA,EAAEsX,QAAQlX,EAAEX,EAAE8X,OAAOnX,EAAE,EAAE,CAACyW,WAAWtW,EAAE8W,QAAQ3Q,EAAE0Q,WAAW,GAAG,CAACjX,EAAE4V,KAAKxV,EAAE,CAAC,OAAOJ,CAAC,CAAC,SAASF,EAAET,EAAEC,GAAG,IAAIG,EAAEH,EAAEqK,OAAOrK,GAAe,OAAZG,EAAE4X,OAAOhY,GAAU,SAASC,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAEsX,MAAMvX,EAAEuX,KAAKtX,EAAEuX,QAAQxX,EAAEwX,OAAOvX,EAAEwX,YAAYzX,EAAEyX,WAAWxX,EAAEyX,WAAW1X,EAAE0X,UAAUzX,EAAE0X,QAAQ3X,EAAE2X,MAAM,OAAOvX,EAAE4X,OAAOhY,EAAEC,EAAE,MAAMG,EAAE2F,QAAQ,CAAC,CAAC/F,EAAEN,QAAQ,SAASM,EAAES,GAAG,IAAIC,EAAEF,EAAER,EAAEA,GAAG,GAAGS,EAAEA,GAAG,CAAC,GAAG,OAAO,SAAST,GAAGA,EAAEA,GAAG,GAAG,IAAI,IAAIW,EAAE,EAAEA,EAAED,EAAE0D,OAAOzD,IAAI,CAAC,IAAIC,EAAER,EAAEM,EAAEC,IAAIV,EAAEW,GAAGgX,YAAY,CAAC,IAAI,IAAI/W,EAAEL,EAAER,EAAES,GAAGK,EAAE,EAAEA,EAAEJ,EAAE0D,OAAOtD,IAAI,CAAC,IAAIT,EAAED,EAAEM,EAAEI,IAAI,IAAIb,EAAEI,GAAGuX,aAAa3X,EAAEI,GAAGwX,UAAU5X,EAAE8X,OAAO1X,EAAE,GAAG,CAACK,EAAEG,CAAC,CAAC,GAAG,IAAIb,IAAI,aAAa,IAAIC,EAAE,CAAC,EAAED,EAAEN,QAAQ,SAASM,EAAEI,GAAG,IAAII,EAAE,SAASR,GAAG,QAAG,IAASC,EAAED,GAAG,CAAC,IAAII,EAAEmC,SAASC,cAAcxC,GAAG,GAAG4G,OAAOqR,mBAAmB7X,aAAawG,OAAOqR,kBAAkB,IAAI7X,EAAEA,EAAE8X,gBAAgBC,IAAI,CAAC,MAAMnY,GAAGI,EAAE,IAAI,CAACH,EAAED,GAAGI,CAAC,CAAC,OAAOH,EAAED,EAAE,CAAhM,CAAkMA,GAAG,IAAIQ,EAAE,MAAM,IAAI4X,MAAM,2GAA2G5X,EAAEgP,YAAYpP,EAAE,GAAG,KAAKJ,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAEsC,SAAS8V,cAAc,SAAS,OAAOrY,EAAEmK,cAAclK,EAAED,EAAEsY,YAAYtY,EAAEoK,OAAOnK,EAAED,EAAE0T,SAASzT,CAAC,GAAG,KAAK,CAACD,EAAEC,EAAEG,KAAK,aAAaJ,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAEG,EAAEmY,GAAGtY,GAAGD,EAAEwW,aAAa,QAAQvW,EAAE,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,GAAG,oBAAoBuC,SAAS,MAAM,CAACyV,OAAO,WAAW,EAAEjS,OAAO,WAAW,GAAG,IAAI9F,EAAED,EAAEuK,mBAAmBvK,GAAG,MAAM,CAACgY,OAAO,SAAS5X,IAAI,SAASJ,EAAEC,EAAEG,GAAG,IAAII,EAAE,GAAGJ,EAAEsX,WAAWlX,GAAG,cAAc4C,OAAOhD,EAAEsX,SAAS,QAAQtX,EAAEoX,QAAQhX,GAAG,UAAU4C,OAAOhD,EAAEoX,MAAM,OAAO,IAAI/W,OAAE,IAASL,EAAEuX,MAAMlX,IAAID,GAAG,SAAS4C,OAAOhD,EAAEuX,MAAMvT,OAAO,EAAE,IAAIhB,OAAOhD,EAAEuX,OAAO,GAAG,OAAOnX,GAAGJ,EAAEmX,IAAI9W,IAAID,GAAG,KAAKJ,EAAEoX,QAAQhX,GAAG,KAAKJ,EAAEsX,WAAWlX,GAAG,KAAK,IAAIE,EAAEN,EAAEqX,UAAU/W,GAAG,oBAAoBuW,OAAOzW,GAAG,uDAAuD4C,OAAO6T,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAU1W,MAAM,QAAQT,EAAEiK,kBAAkB1J,EAAER,EAAEC,EAAEyT,QAAQ,CAAxe,CAA0ezT,EAAED,EAAEI,EAAE,EAAE2F,OAAO,YAAY,SAAS/F,GAAG,GAAG,OAAOA,EAAEwY,WAAW,OAAM,EAAGxY,EAAEwY,WAAWC,YAAYzY,EAAE,CAAvE,CAAyEC,EAAE,EAAE,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,EAAEC,GAAG,GAAGA,EAAEyY,WAAWzY,EAAEyY,WAAWC,QAAQ3Y,MAAM,CAAC,KAAKC,EAAE2Y,YAAY3Y,EAAEwY,YAAYxY,EAAE2Y,YAAY3Y,EAAEuP,YAAYjN,SAASsW,eAAe7Y,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,CAACA,EAAEC,EAAEG,KAAK,aAAa,SAASI,EAAER,EAAEC,EAAEG,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,GAAG,IAAIC,EAAEC,EAAE,mBAAmBd,EAAEA,EAAE0T,QAAQ1T,EAAE,GAAGC,IAAIa,EAAEuF,OAAOpG,EAAEa,EAAEgY,gBAAgB1Y,EAAEU,EAAEiY,WAAU,GAAIvY,IAAIM,EAAEkY,YAAW,GAAItY,IAAII,EAAEmY,SAAS,UAAUvY,GAAGC,GAAGE,EAAE,SAASb,IAAIA,EAAEA,GAAGiD,KAAKiW,QAAQjW,KAAKiW,OAAOC,YAAYlW,KAAKmW,QAAQnW,KAAKmW,OAAOF,QAAQjW,KAAKmW,OAAOF,OAAOC,aAAa,oBAAoBE,sBAAsBrZ,EAAEqZ,qBAAqB5Y,GAAGA,EAAE8H,KAAKtF,KAAKjD,GAAGA,GAAGA,EAAEsZ,uBAAuBtZ,EAAEsZ,sBAAsBtT,IAAIrF,EAAE,EAAEG,EAAEyY,aAAa1Y,GAAGJ,IAAII,EAAED,EAAE,WAAWH,EAAE8H,KAAKtF,MAAMnC,EAAEkY,WAAW/V,KAAKmW,OAAOnW,MAAMuW,MAAMC,SAASC,WAAW,EAAEjZ,GAAGI,EAAE,GAAGC,EAAEkY,WAAW,CAAClY,EAAE6Y,cAAc9Y,EAAE,IAAIR,EAAES,EAAEuF,OAAOvF,EAAEuF,OAAO,SAASrG,EAAEC,GAAG,OAAOY,EAAE0H,KAAKtI,GAAGI,EAAEL,EAAEC,EAAE,CAAC,KAAK,CAAC,IAAIc,EAAED,EAAE8Y,aAAa9Y,EAAE8Y,aAAa7Y,EAAE,GAAGqC,OAAOrC,EAAEF,GAAG,CAACA,EAAE,CAAC,MAAM,CAACnB,QAAQM,EAAE0T,QAAQ5S,EAAE,CAACV,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI7C,GAAE,EAAG,KAAKR,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAyB,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAU,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAc,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAY,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAU,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAK,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAA4C,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAqC,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAA8C,GAAIO,EAAE,CAAC,EAAE,SAASG,EAAEI,GAAG,IAAIC,EAAER,EAAEO,GAAG,QAAG,IAASC,EAAE,OAAOA,EAAEf,QAAQ,IAAIgB,EAAET,EAAEO,GAAG,CAACuJ,GAAGvJ,EAAEd,QAAQ,CAAC,GAAG,OAAOM,EAAEQ,GAAGE,EAAEA,EAAEhB,QAAQU,GAAGM,EAAEhB,OAAO,CAACU,EAAEM,EAAEV,IAAI,IAAIC,EAAED,GAAGA,EAAE6Z,WAAW,IAAI7Z,EAAEM,QAAQ,IAAIN,EAAE,OAAOI,EAAEC,EAAEJ,EAAE,CAACG,EAAEH,IAAIA,GAAGG,EAAEC,EAAE,CAACL,EAAEC,KAAK,IAAI,IAAIO,KAAKP,EAAEG,EAAEI,EAAEP,EAAEO,KAAKJ,EAAEI,EAAER,EAAEQ,IAAIkC,OAAOoX,eAAe9Z,EAAEQ,EAAE,CAACuZ,YAAW,EAAGC,IAAI/Z,EAAEO,IAAG,EAAGJ,EAAEI,EAAE,CAACR,EAAEC,IAAIyC,OAAOuX,UAAUC,eAAe3R,KAAKvI,EAAEC,GAAGG,EAAEO,EAAEX,IAAI,oBAAoBma,QAAQA,OAAOC,aAAa1X,OAAOoX,eAAe9Z,EAAEma,OAAOC,YAAY,CAAC7I,MAAM,WAAW7O,OAAOoX,eAAe9Z,EAAE,aAAa,CAACuR,OAAM,GAAG,EAAGnR,EAAEmY,QAAG,EAAO,IAAI/X,EAAE,CAAC,EAAE,MAAM,MAAM,aAAaJ,EAAEO,EAAEH,GAAGJ,EAAEC,EAAEG,EAAE,CAACF,QAAQ,IAAI6H,IAAI,IAAInI,EAAEI,EAAE,MAAMH,EAAEG,EAAE,KAAKK,EAAEL,EAAE,KAAKM,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,GAAG,MAAME,EAAE,CAACK,KAAK,sBAAsBC,WAAW,CAACmZ,QAAQra,EAAEM,SAASsM,OAAO,CAAC3M,EAAEK,SAASgB,MAAM,CAACC,KAAK,CAACC,KAAKC,QAAQ6Y,UAAS,GAAIC,eAAe,CAAC/Y,KAAKC,QAAQnB,SAAQ,GAAImC,UAAU,CAACjB,KAAKK,OAAOvB,QAAQ,QAAQqI,MAAM,CAACnH,KAAKK,OAAOvB,QAAQ,IAAIkN,uBAAuB,CAAChM,KAAKiM,MAAMnN,QAAQ,IAAI,KAAKwC,MAAM,CAAC,eAAeC,KAAK,KAAI,CAAEyX,gBAAgB,GAAGC,aAAY,EAAGC,qBAAoB,EAAGC,SAAS,OAAOrX,SAAS,CAACsX,gBAAgB,QAAQ3X,KAAK0S,WAAW1S,KAAKsX,eAAe,EAAEM,4BAA4B,KAAI,EAAGpa,EAAER,GAAG,wBAAwBiP,UAAUjM,KAAKuX,gBAAgBvX,KAAKqD,OAAOhG,QAAQ,GAAGqD,iBAAiB8C,UAAUsD,EAAE,EAAE+Q,UAAU7X,KAAKoB,MAAM0W,mBAAmB9X,KAAK0X,SAAS1X,KAAKoB,MAAM0W,iBAAiB9X,KAAKyX,sBAAsBzX,KAAK0X,SAAS/L,iBAAiB,SAAS3L,KAAK+X,cAAc/X,KAAKyX,qBAAoB,GAAI,EAAEjX,QAAQ,CAACwX,sBAAsBjb,GAAG,MAAMC,EAAED,EAAEuG,QAAQvG,GAAGA,EAAE2D,mBAAmB9D,KAAKG,IAAI,IAAIC,EAAEG,EAAE,MAAM,CAAC2J,GAAG,QAAQ9J,EAAED,EAAE2D,iBAAiB8C,iBAAY,IAASxG,OAAE,EAAOA,EAAE8J,GAAGpB,MAAM,QAAQvI,EAAEJ,EAAE2D,iBAAiB8C,iBAAY,IAASrG,OAAE,EAAOA,EAAEuI,MAAO,IAAGvI,EAAEJ,EAAEH,KAAKG,GAAGA,EAAE2I,QAAQnI,EAAER,EAAEH,KAAKG,GAAGA,EAAE+J,KAAK,OAAO9J,EAAEiV,SAAQ,CAAElV,EAAEC,KAAK,MAAMQ,EAAE,IAAIL,GAAGM,EAAE,IAAIF,GAAG,GAAGC,EAAEsX,OAAO9X,EAAE,GAAGS,EAAEqX,OAAO9X,EAAE,GAAGQ,EAAEsD,SAAS/D,EAAE2I,OAAO,MAAM,IAAIyP,MAAM,kCAAkChV,OAAOpD,EAAE,oEAAoE,GAAGU,EAAEqD,SAAS/D,EAAE+J,IAAI,MAAM,IAAIqO,MAAM,+BAA+BhV,OAAOpD,EAAE,gEAAiE,IAAGC,CAAC,EAAEib,8BAA8Blb,GAAGiD,KAAKwX,aAAY,EAAGlY,SAAS4Y,eAAe,oBAAoBnb,GAAGob,eAAe,CAACC,SAAS,SAASzY,OAAO,YAAYK,KAAKuX,gBAAgBxa,EAAE8L,YAAW,KAAM7I,KAAKwX,aAAY,CAAG,GAAE,IAAI,EAAEa,mBAAmBrY,KAAKgB,MAAM,eAAc,GAAIhB,KAAK0X,SAAS5L,oBAAoB,SAAS9L,KAAK+X,cAAc/X,KAAKyX,qBAAoB,EAAGzX,KAAK0X,SAASY,UAAU,CAAC,EAAEP,eAAe/X,KAAKwX,aAAaxX,KAAKuY,uBAAuB,EAAEA,sBAAsB7a,KAAI,WAAYsC,KAAKuX,gBAAgB,GAAGjY,SAASyC,cAAcyW,UAAU1X,SAAS,0BAA0BxB,SAASyC,cAAcgE,MAAO,GAAE,KAAK0S,kBAAkB1b,EAAEC,GAAG,UAAUD,EAAE2b,MAAM1Y,KAAKiY,8BAA8Bjb,EAAE,GAAGoG,OAAOrG,GAAG,MAA+QI,EAAEH,GAAGD,EAAE,KAAK,CAAC,EAAE,CAACA,EAAE,IAAI,CAAC+H,MAAM,CAAC,yBAAwB,EAAG,gCAAgC9H,EAAE8J,KAAK9G,KAAKuX,iBAAiB3R,MAAM,CAACmB,KAAK,MAAM,gBAAgB/J,EAAE8J,KAAK9G,KAAKuX,gBAAgB5Q,SAAS,KAAKb,GAAG,CAACb,MAAM,IAAIjF,KAAKiY,8BAA8Bjb,EAAE8J,IAAIF,QAAQ,IAAI5G,KAAKyY,kBAAkBE,MAAM3b,EAAE8J,MAAM9J,EAAE0I,SAAS,OAAO1F,KAAK1B,KAAKvB,EAAE,UAAU,CAAC+H,MAAM,CAAC,sBAAsBc,MAAM,CAACpG,UAAUQ,KAAKR,UAAUyG,KAAK,QAAQsE,uBAAuBvK,KAAKuK,wBAAwBzE,GAAG,CAAC8G,MAAM,KAAK5M,KAAKqY,kBAAiB,IAAK,CAACtb,EAAE,MAAM,CAAC6I,MAAM,CAACd,MAAM,iBAAiB,CAAC/H,EAAE,KAAK,CAAC6I,MAAM,CAACd,MAAM,wBAAwB9E,KAAK0F,OAAO3I,EAAE,MAAM,CAAC6I,MAAM,CAACd,MAAM,0BAA0B,IAAp5B,KAAI9E,KAAK2X,cAAc,CAAC5a,EAAE,MAAM,CAAC6I,MAAM,CAACd,MAAM,2BAA2BiC,KAAK,UAAU,aAAa/G,KAAK4X,8BAA8B,CAAC7a,EAAE,KAAK,CAAC6I,MAAM,CAACd,MAAM,kBAAkBiC,KAAK,YAAY/G,KAAKgY,sBAAsBhY,KAAKqD,OAAOhG,SAAST,KAAKG,GAAGI,EAAEJ,SAAS,GAAopBC,GAAID,EAAE,MAAM,CAAC6I,MAAM,CAACd,MAAM,yBAAyBe,IAAI,oBAAoB7F,KAAKqD,OAAOhG,oBAAe,CAAM,GAAG,IAAIO,EAAET,EAAE,MAAMU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,KAAK6G,EAAE7G,EAAEM,EAAEM,GAAGkG,EAAE9G,EAAE,MAAM+G,EAAE/G,EAAEM,EAAEwG,GAAGE,EAAEhH,EAAE,MAAMiH,EAAEjH,EAAEM,EAAE0G,GAAGE,EAAElH,EAAE,MAAMmH,EAAEnH,EAAEM,EAAE4G,GAAGE,EAAEpH,EAAE,MAAMqH,EAAE,CAAC,EAAEA,EAAEyC,kBAAkB3C,IAAIE,EAAE0C,cAAchD,IAAIM,EAAE2C,OAAOnD,IAAIoD,KAAK,KAAK,QAAQ5C,EAAE6C,OAAOvJ,IAAI0G,EAAE8C,mBAAmBlD,IAAIvG,IAAI0G,EAAEnE,EAAEoE,GAAGD,EAAEnE,GAAGmE,EAAEnE,EAAEmH,QAAQhD,EAAEnE,EAAEmH,OAAO,IAAI9C,EAAEtH,EAAE,MAAMuH,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAGK,GAAE,EAAGN,EAAErE,GAAGzC,OAAEgK,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmBhD,KAAKA,IAAII,GAAG,MAAMG,EAAEH,EAAEtI,OAAQ,EAA/pH,GAAmqHc,CAAE,EAAp1hK,iBCA3S,SAASR,EAAEC,GAAqDC,EAAOR,QAAQO,GAAiN,CAAhS,CAAkSE,MAAK,IAAK,MAAM,aAAa,IAAIH,EAAE,CAAC,KAAK,CAACA,EAAEC,EAAES,KAAKA,EAAEL,EAAEJ,EAAE,CAACoD,EAAE,IAAIjD,IAAI,IAAII,EAAEE,EAAE,MAAMC,EAAED,EAAEA,EAAEF,GAAGC,EAAEC,EAAE,MAAME,EAAEF,EAAEA,EAAED,EAAJC,GAASC,KAAKC,EAAE2V,KAAK,CAACvW,EAAE+J,GAAG,iWAAiW,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,4EAA4EC,MAAM,GAAGC,SAAS,8JAA8JC,eAAe,CAAC,kNAAkN,8UAA8UC,WAAW,MAAM,MAAM5W,EAAEQ,GAAG,KAAKZ,IAAIA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAE,GAAG,OAAOA,EAAE0J,SAAS,WAAW,OAAO1G,KAAKpD,KAAI,SAAUI,GAAG,IAAIS,EAAE,GAAGF,OAAE,IAASP,EAAE,GAAG,OAAOA,EAAE,KAAKS,GAAG,cAAc0C,OAAOnD,EAAE,GAAG,QAAQA,EAAE,KAAKS,GAAG,UAAU0C,OAAOnD,EAAE,GAAG,OAAOO,IAAIE,GAAG,SAAS0C,OAAOnD,EAAE,GAAGmE,OAAO,EAAE,IAAIhB,OAAOnD,EAAE,IAAI,GAAG,OAAOS,GAAGV,EAAEC,GAAGO,IAAIE,GAAG,KAAKT,EAAE,KAAKS,GAAG,KAAKT,EAAE,KAAKS,GAAG,KAAKA,CAAE,IAAGX,KAAK,GAAG,EAAEE,EAAEQ,EAAE,SAAST,EAAEU,EAAEF,EAAEG,EAAEF,GAAG,iBAAiBT,IAAIA,EAAE,CAAC,CAAC,KAAKA,OAAE,KAAU,IAAIY,EAAE,CAAC,EAAE,GAAGJ,EAAE,IAAI,IAAIJ,EAAE,EAAEA,EAAE6C,KAAKmB,OAAOhE,IAAI,CAAC,IAAIU,EAAEmC,KAAK7C,GAAG,GAAG,MAAMU,IAAIF,EAAEE,IAAG,EAAG,CAAC,IAAI,IAAIE,EAAE,EAAEA,EAAEhB,EAAEoE,OAAOpD,IAAI,CAAC,IAAID,EAAE,GAAGqC,OAAOpD,EAAEgB,IAAIR,GAAGI,EAAEG,EAAE,WAAM,IAASN,SAAI,IAASM,EAAE,KAAKA,EAAE,GAAG,SAASqC,OAAOrC,EAAE,GAAGqD,OAAO,EAAE,IAAIhB,OAAOrC,EAAE,IAAI,GAAG,MAAMqC,OAAOrC,EAAE,GAAG,MAAMA,EAAE,GAAGN,GAAGC,IAAIK,EAAE,IAAIA,EAAE,GAAG,UAAUqC,OAAOrC,EAAE,GAAG,MAAMqC,OAAOrC,EAAE,GAAG,KAAKA,EAAE,GAAGL,GAAGK,EAAE,GAAGL,GAAGC,IAAII,EAAE,IAAIA,EAAE,GAAG,cAAcqC,OAAOrC,EAAE,GAAG,OAAOqC,OAAOrC,EAAE,GAAG,KAAKA,EAAE,GAAGJ,GAAGI,EAAE,GAAG,GAAGqC,OAAOzC,IAAIV,EAAEsW,KAAKxV,GAAG,CAAC,EAAEd,CAAC,GAAG,KAAKD,IAAIA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAED,EAAE,GAAGU,EAAEV,EAAE,GAAG,IAAIU,EAAE,OAAOT,EAAE,GAAG,mBAAmBgX,KAAK,CAAC,IAAIzW,EAAEyW,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAU1W,MAAMC,EAAE,+DAA+DyC,OAAO5C,GAAGC,EAAE,OAAO2C,OAAOzC,EAAE,OAAO,MAAM,CAACV,GAAGmD,OAAO,CAAC3C,IAAIV,KAAK,KAAK,CAAC,MAAM,CAACE,GAAGF,KAAK,KAAK,GAAG,KAAKC,IAAI,IAAIC,EAAE,GAAG,SAASS,EAAEV,GAAG,IAAI,IAAIU,GAAG,EAAEF,EAAE,EAAEA,EAAEP,EAAEmE,OAAO5D,IAAI,GAAGP,EAAEO,GAAG6W,aAAarX,EAAE,CAACU,EAAEF,EAAE,KAAK,CAAC,OAAOE,CAAC,CAAC,SAASF,EAAER,EAAEQ,GAAG,IAAI,IAAIC,EAAE,CAAC,EAAEG,EAAE,GAAGR,EAAE,EAAEA,EAAEJ,EAAEoE,OAAOhE,IAAI,CAAC,IAAIU,EAAEd,EAAEI,GAAGY,EAAER,EAAE8W,KAAKxW,EAAE,GAAGN,EAAE8W,KAAKxW,EAAE,GAAGC,EAAEN,EAAEO,IAAI,EAAEH,EAAE,GAAGuC,OAAOpC,EAAE,KAAKoC,OAAOrC,GAAGN,EAAEO,GAAGD,EAAE,EAAE,IAAIV,EAAEK,EAAEG,GAAG2G,EAAE,CAAC+P,IAAIzW,EAAE,GAAG0W,MAAM1W,EAAE,GAAG2W,UAAU3W,EAAE,GAAG4W,SAAS5W,EAAE,GAAG6W,MAAM7W,EAAE,IAAI,IAAI,IAAIT,EAAEJ,EAAEI,GAAGuX,aAAa3X,EAAEI,GAAGwX,QAAQrQ,OAAO,CAAC,IAAIH,EAAE1G,EAAE6G,EAAEhH,GAAGA,EAAEsX,QAAQ1X,EAAEH,EAAE8X,OAAO3X,EAAE,EAAE,CAACiX,WAAWxW,EAAEgX,QAAQxQ,EAAEuQ,WAAW,GAAG,CAAChX,EAAE2V,KAAK1V,EAAE,CAAC,OAAOD,CAAC,CAAC,SAASD,EAAEX,EAAEC,GAAG,IAAIS,EAAET,EAAEqK,OAAOrK,GAAe,OAAZS,EAAEsX,OAAOhY,GAAU,SAASC,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAEsX,MAAMvX,EAAEuX,KAAKtX,EAAEuX,QAAQxX,EAAEwX,OAAOvX,EAAEwX,YAAYzX,EAAEyX,WAAWxX,EAAEyX,WAAW1X,EAAE0X,UAAUzX,EAAE0X,QAAQ3X,EAAE2X,MAAM,OAAOjX,EAAEsX,OAAOhY,EAAEC,EAAE,MAAMS,EAAEqF,QAAQ,CAAC,CAAC/F,EAAEN,QAAQ,SAASM,EAAEW,GAAG,IAAIF,EAAED,EAAER,EAAEA,GAAG,GAAGW,EAAEA,GAAG,CAAC,GAAG,OAAO,SAASX,GAAGA,EAAEA,GAAG,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEH,EAAE2D,OAAOxD,IAAI,CAAC,IAAIR,EAAEM,EAAED,EAAEG,IAAIX,EAAEG,GAAGwX,YAAY,CAAC,IAAI,IAAI9W,EAAEN,EAAER,EAAEW,GAAGK,EAAE,EAAEA,EAAEP,EAAE2D,OAAOpD,IAAI,CAAC,IAAID,EAAEL,EAAED,EAAEO,IAAI,IAAIf,EAAEc,GAAG6W,aAAa3X,EAAEc,GAAG8W,UAAU5X,EAAE8X,OAAOhX,EAAE,GAAG,CAACN,EAAEK,CAAC,CAAC,GAAG,IAAId,IAAI,IAAIC,EAAE,CAAC,EAAED,EAAEN,QAAQ,SAASM,EAAEU,GAAG,IAAIF,EAAE,SAASR,GAAG,QAAG,IAASC,EAAED,GAAG,CAAC,IAAIU,EAAE6B,SAASC,cAAcxC,GAAG,GAAG4G,OAAOqR,mBAAmBvX,aAAakG,OAAOqR,kBAAkB,IAAIvX,EAAEA,EAAEwX,gBAAgBC,IAAI,CAAC,MAAMnY,GAAGU,EAAE,IAAI,CAACT,EAAED,GAAGU,CAAC,CAAC,OAAOT,EAAED,EAAE,CAAhM,CAAkMA,GAAG,IAAIQ,EAAE,MAAM,IAAI4X,MAAM,2GAA2G5X,EAAEgP,YAAY9O,EAAE,GAAG,KAAKV,IAAIA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAEsC,SAAS8V,cAAc,SAAS,OAAOrY,EAAEmK,cAAclK,EAAED,EAAEsY,YAAYtY,EAAEoK,OAAOnK,EAAED,EAAE0T,SAASzT,CAAC,GAAG,KAAK,CAACD,EAAEC,EAAES,KAAKV,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAES,EAAE6X,GAAGtY,GAAGD,EAAEwW,aAAa,QAAQvW,EAAE,GAAG,KAAKD,IAAIA,EAAEN,QAAQ,SAASM,GAAG,GAAG,oBAAoBuC,SAAS,MAAM,CAACyV,OAAO,WAAW,EAAEjS,OAAO,WAAW,GAAG,IAAI9F,EAAED,EAAEuK,mBAAmBvK,GAAG,MAAM,CAACgY,OAAO,SAAStX,IAAI,SAASV,EAAEC,EAAES,GAAG,IAAIF,EAAE,GAAGE,EAAEgX,WAAWlX,GAAG,cAAc4C,OAAO1C,EAAEgX,SAAS,QAAQhX,EAAE8W,QAAQhX,GAAG,UAAU4C,OAAO1C,EAAE8W,MAAM,OAAO,IAAI7W,OAAE,IAASD,EAAEiX,MAAMhX,IAAIH,GAAG,SAAS4C,OAAO1C,EAAEiX,MAAMvT,OAAO,EAAE,IAAIhB,OAAO1C,EAAEiX,OAAO,GAAG,OAAOnX,GAAGE,EAAE6W,IAAI5W,IAAIH,GAAG,KAAKE,EAAE8W,QAAQhX,GAAG,KAAKE,EAAEgX,WAAWlX,GAAG,KAAK,IAAIC,EAAEC,EAAE+W,UAAUhX,GAAG,oBAAoBwW,OAAOzW,GAAG,uDAAuD4C,OAAO6T,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAU3W,MAAM,QAAQR,EAAEiK,kBAAkB1J,EAAER,EAAEC,EAAEyT,QAAQ,CAAxe,CAA0ezT,EAAED,EAAEU,EAAE,EAAEqF,OAAO,YAAY,SAAS/F,GAAG,GAAG,OAAOA,EAAEwY,WAAW,OAAM,EAAGxY,EAAEwY,WAAWC,YAAYzY,EAAE,CAAvE,CAAyEC,EAAE,EAAE,GAAG,KAAKD,IAAIA,EAAEN,QAAQ,SAASM,EAAEC,GAAG,GAAGA,EAAEyY,WAAWzY,EAAEyY,WAAWC,QAAQ3Y,MAAM,CAAC,KAAKC,EAAE2Y,YAAY3Y,EAAEwY,YAAYxY,EAAE2Y,YAAY3Y,EAAEuP,YAAYjN,SAASsW,eAAe7Y,GAAG,CAAC,GAAG,KAAK,CAACA,EAAEC,EAAES,KAAK,SAASF,EAAER,EAAEC,EAAES,EAAEF,EAAEG,EAAEF,EAAEG,EAAER,GAAG,IAAIU,EAAEE,EAAE,mBAAmBhB,EAAEA,EAAE0T,QAAQ1T,EAAE,GAAGC,IAAIe,EAAEqF,OAAOpG,EAAEe,EAAE8X,gBAAgBpY,EAAEM,EAAE+X,WAAU,GAAIvY,IAAIQ,EAAEgY,YAAW,GAAIvY,IAAIO,EAAEiY,SAAS,UAAUxY,GAAGG,GAAGE,EAAE,SAASd,IAAIA,EAAEA,GAAGiD,KAAKiW,QAAQjW,KAAKiW,OAAOC,YAAYlW,KAAKmW,QAAQnW,KAAKmW,OAAOF,QAAQjW,KAAKmW,OAAOF,OAAOC,aAAa,oBAAoBE,sBAAsBrZ,EAAEqZ,qBAAqB1Y,GAAGA,EAAE4H,KAAKtF,KAAKjD,GAAGA,GAAGA,EAAEsZ,uBAAuBtZ,EAAEsZ,sBAAsBtT,IAAIpF,EAAE,EAAEI,EAAEuY,aAAazY,GAAGH,IAAIG,EAAEV,EAAE,WAAWO,EAAE4H,KAAKtF,MAAMjC,EAAEgY,WAAW/V,KAAKmW,OAAOnW,MAAMuW,MAAMC,SAASC,WAAW,EAAE/Y,GAAGG,EAAE,GAAGE,EAAEgY,WAAW,CAAChY,EAAE2Y,cAAc7Y,EAAE,IAAIC,EAAEC,EAAEqF,OAAOrF,EAAEqF,OAAO,SAASrG,EAAEC,GAAG,OAAOa,EAAEyH,KAAKtI,GAAGc,EAAEf,EAAEC,EAAE,CAAC,KAAK,CAAC,IAAIY,EAAEG,EAAE4Y,aAAa5Y,EAAE4Y,aAAa/Y,EAAE,GAAGuC,OAAOvC,EAAEC,GAAG,CAACA,EAAE,CAAC,MAAM,CAACpB,QAAQM,EAAE0T,QAAQ1S,EAAE,CAACN,EAAEL,EAAEJ,EAAE,CAACoD,EAAE,IAAI7C,GAAE,GAAIP,EAAE,CAAC,EAAE,SAASS,EAAEF,GAAG,IAAIG,EAAEV,EAAEO,GAAG,QAAG,IAASG,EAAE,OAAOA,EAAEjB,QAAQ,IAAIe,EAAER,EAAEO,GAAG,CAACuJ,GAAGvJ,EAAEd,QAAQ,CAAC,GAAG,OAAOM,EAAEQ,GAAGC,EAAEA,EAAEf,QAAQgB,GAAGD,EAAEf,OAAO,CAACgB,EAAEA,EAAEV,IAAI,IAAIC,EAAED,GAAGA,EAAE6Z,WAAW,IAAI7Z,EAAEM,QAAQ,IAAIN,EAAE,OAAOU,EAAEL,EAAEJ,EAAE,CAACG,EAAEH,IAAIA,GAAGS,EAAEL,EAAE,CAACL,EAAEC,KAAK,IAAI,IAAIO,KAAKP,EAAES,EAAEF,EAAEP,EAAEO,KAAKE,EAAEF,EAAER,EAAEQ,IAAIkC,OAAOoX,eAAe9Z,EAAEQ,EAAE,CAACuZ,YAAW,EAAGC,IAAI/Z,EAAEO,IAAG,EAAGE,EAAEF,EAAE,CAACR,EAAEC,IAAIyC,OAAOuX,UAAUC,eAAe3R,KAAKvI,EAAEC,GAAGS,EAAEC,EAAEX,IAAI,oBAAoBma,QAAQA,OAAOC,aAAa1X,OAAOoX,eAAe9Z,EAAEma,OAAOC,YAAY,CAAC7I,MAAM,WAAW7O,OAAOoX,eAAe9Z,EAAE,aAAa,CAACuR,OAAM,GAAG,EAAG7Q,EAAE6X,QAAG,EAAO,IAAI/X,EAAE,CAAC,EAAE,MAAM,MAAME,EAAEC,EAAEH,GAAGE,EAAEL,EAAEG,EAAE,CAACF,QAAQ,IAAI6G,IAAI,MAAMnH,EAAE,CAACiB,KAAK,uBAAuBK,MAAM,CAACqH,MAAM,CAACnH,KAAKK,OAAOyY,UAAS,GAAIvQ,GAAG,CAACvI,KAAKK,OAAOyY,UAAS,EAAGvY,UAAU/B,GAAG,iBAAiB6b,KAAK7b,KAAKsD,SAAS,CAACwY,SAAS,MAAM,oBAAoB7Y,KAAK8G,EAAE,IAAI,IAAI9J,EAAES,EAAE,MAAMC,EAAED,EAAEA,EAAET,GAAGQ,EAAEC,EAAE,MAAME,EAAEF,EAAEA,EAAED,GAAGL,EAAEM,EAAE,KAAKI,EAAEJ,EAAEA,EAAEN,GAAGY,EAAEN,EAAE,MAAMK,EAAEL,EAAEA,EAAEM,GAAGH,EAAEH,EAAE,MAAML,EAAEK,EAAEA,EAAEG,GAAG2G,EAAE9G,EAAE,MAAM2G,EAAE3G,EAAEA,EAAE8G,GAAGP,EAAEvG,EAAE,MAAMwG,EAAE,CAAC,EAAEA,EAAEgD,kBAAkB7C,IAAIH,EAAEiD,cAAcpJ,IAAImG,EAAEkD,OAAOtJ,IAAIuJ,KAAK,KAAK,QAAQnD,EAAEoD,OAAO1J,IAAIsG,EAAEqD,mBAAmBlK,IAAIM,IAAIsG,EAAE5D,EAAE6D,GAAGD,EAAE5D,GAAG4D,EAAE5D,EAAEmH,QAAQvD,EAAE5D,EAAEmH,OAAO,MAAMrD,GAAE,EAAGzG,EAAE,MAAM2C,GAAGrD,GAAE,WAAY,IAAIA,EAAEiD,KAAKhD,EAAED,EAAEmR,MAAMC,GAAG,OAAOnR,EAAE,MAAM,CAAC2I,YAAY,uBAAuBC,MAAM,CAACkB,GAAG/J,EAAE8b,SAAS,CAAC7b,EAAE,KAAK,CAAC2I,YAAY,+BAA+B,CAAC5I,EAAE0R,GAAG,SAAS1R,EAAE2R,GAAG3R,EAAE2I,OAAO,UAAU3I,EAAE0R,GAAG,KAAK1R,EAAEqS,GAAG,YAAY,EAAG,GAAE,IAAG,EAAG,KAAK,WAAW,MAAM3S,OAAQ,EAA3yB,GAA+yBc,CAAE,EAA7+N,sCCA5S,SAASR,EAAEC,GAAqDC,EAAOR,QAAQO,GAAyM,CAAxR,CAA0RE,MAAK,IAAK,MAAM,IAAIH,EAAE,CAAC,IAAI,CAACA,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIoQ,IAAI,IAAIlQ,EAAEJ,EAAE,MAAMK,EAAEL,EAAE,MAAMM,EAAEN,EAAE,MAAMO,EAAEP,EAAE,KAAKQ,EAAER,EAAE,MAAMS,EAAET,EAAEM,EAAEE,GAAGE,EAAEV,EAAE,MAAMW,EAAEX,EAAEM,EAAEI,GAAG,MAAMT,EAAE,aAAa6G,EAAE,CAACjG,KAAK,YAAYC,WAAW,CAACC,SAASX,EAAEF,QAAQc,eAAeL,IAAIM,UAAUZ,EAAEH,SAASgB,MAAM,CAACC,KAAK,CAACC,KAAKC,QAAQnB,SAAQ,GAAIoB,UAAU,CAACF,KAAKC,QAAQnB,SAAQ,GAAIqB,WAAW,CAACH,KAAKC,QAAQnB,SAAQ,GAAIsB,UAAU,CAACJ,KAAKK,OAAOvB,QAAQ,MAAMwB,QAAQ,CAACN,KAAKC,QAAQnB,SAAQ,GAAIkB,KAAK,CAACA,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,yBAAyB,sBAAsB,QAAQ,UAAU,WAAWgC,QAAQhC,GAAGM,QAAQ,MAAM2B,YAAY,CAACT,KAAKK,OAAOvB,QAAQ,IAAI4B,UAAU,CAACV,KAAKK,OAAOvB,SAAQ,EAAGK,EAAEV,GAAG,YAAYkC,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,MAAM8B,UAAU,CAACZ,KAAKK,OAAOvB,QAAQ,UAAU+B,kBAAkB,CAACb,KAAKc,QAAQhC,QAAQ,IAAIiC,SAASC,cAAc,SAASC,UAAU,CAACjB,KAAK,CAACK,OAAOa,OAAOJ,QAAQb,SAASnB,QAAQ,QAAQqC,SAAS,CAACnB,KAAKC,QAAQnB,SAAQ,GAAIsC,OAAO,CAACpB,KAAKqB,OAAOvC,QAAQ,IAAIwC,MAAM,CAAC,cAAc,OAAO,cAAc,QAAQ,QAAQ,QAAQC,OAAO,MAAM,CAACC,OAAOC,KAAK1B,KAAK2B,WAAW,EAAEC,SAAS,QAAQC,QAAO,EAAG1C,EAAE2C,MAAM,EAAEC,SAAS,CAACC,iBAAiB,OAAON,KAAKzB,OAAOyB,KAAKnB,QAAQ,UAAUmB,KAAKrB,UAAU,YAAY,WAAW,GAAG4B,MAAM,CAACjC,KAAKvB,GAAGA,IAAIiD,KAAKD,SAASC,KAAKD,OAAOhD,EAAE,GAAGyD,QAAQ,CAACC,oBAAoB1D,GAAG,IAAIC,EAAEG,EAAEI,EAAEC,EAAEC,EAAE,MAAMC,EAAE,QAAQV,EAAE,MAAMD,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQC,EAAED,EAAEqD,qBAAgB,IAASpD,OAAE,EAAOA,EAAEQ,YAAO,IAAShB,EAAEA,EAAE,MAAMD,GAAG,QAAQU,EAAEV,EAAE2D,wBAAmB,IAASjD,OAAE,EAAOA,EAAEoD,IAAI,MAAM,CAAC,iBAAiB,eAAe,kBAAkBC,SAASpD,EAAE,EAAEqD,SAAShE,GAAGiD,KAAKD,SAASC,KAAKD,QAAO,EAAGC,KAAKgB,MAAM,eAAc,GAAIhB,KAAKgB,MAAM,QAAQ,EAAEC,YAAY,IAAIlE,IAAImE,UAAUC,OAAO,QAAG,IAASD,UAAU,KAAKA,UAAU,GAAGlB,KAAKD,SAASC,KAAKD,QAAO,EAAGC,KAAKoB,MAAMC,QAAQC,eAAe,CAACC,YAAYxE,IAAIiD,KAAKgB,MAAM,eAAc,GAAIhB,KAAKgB,MAAM,SAAShB,KAAKD,QAAO,EAAGC,KAAKC,WAAW,EAAED,KAAKoB,MAAMI,WAAWC,IAAIC,QAAQ,EAAEC,OAAO5E,GAAGiD,KAAK4B,WAAU,KAAM5B,KAAK6B,iBAAiB9E,EAAG,GAAE,EAAE+E,mBAAmB/E,GAAG,GAAGuC,SAASyC,gBAAgBhF,EAAEiF,OAAO,OAAO,MAAMhF,EAAED,EAAEiF,OAAOC,QAAQ,MAAM,GAAGjF,EAAE,CAAC,MAAMD,EAAEC,EAAEuC,cAAcnC,GAAG,GAAGL,EAAE,CAAC,MAAMC,EAAE,IAAIgD,KAAKoB,MAAMc,KAAKC,iBAAiB/E,IAAI2B,QAAQhC,GAAGC,GAAG,IAAIgD,KAAKC,WAAWjD,EAAEgD,KAAKoC,cAAc,CAAC,CAAC,EAAEC,UAAUtF,IAAI,KAAKA,EAAEuF,SAAS,IAAIvF,EAAEuF,SAASvF,EAAEwF,WAAWvC,KAAKwC,oBAAoBzF,IAAI,KAAKA,EAAEuF,SAAS,IAAIvF,EAAEuF,UAAUvF,EAAEwF,WAAWvC,KAAKyC,gBAAgB1F,GAAG,KAAKA,EAAEuF,SAAStC,KAAK6B,iBAAiB9E,GAAG,KAAKA,EAAEuF,SAAStC,KAAK0C,gBAAgB3F,GAAG,KAAKA,EAAEuF,UAAUtC,KAAKiB,YAAYlE,EAAE4F,iBAAiB,EAAEC,sBAAsB,MAAM7F,EAAEiD,KAAKoB,MAAMc,KAAK3C,cAAc,aAAaxC,GAAGA,EAAE8F,UAAUC,OAAO,SAAS,EAAEV,cAAc,MAAMrF,EAAEiD,KAAKoB,MAAMc,KAAKC,iBAAiB/E,GAAG4C,KAAKC,YAAY,GAAGlD,EAAE,CAACiD,KAAK4C,sBAAsB,MAAM5F,EAAED,EAAEkF,QAAQ,aAAalF,EAAE2E,QAAQ1E,GAAGA,EAAE6F,UAAUE,IAAI,SAAS,CAAC,EAAEP,oBAAoBzF,GAAGiD,KAAKD,SAAS,IAAIC,KAAKC,WAAWD,KAAKiB,aAAajB,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKC,WAAW,GAAGD,KAAKoC,cAAc,EAAEK,gBAAgB1F,GAAG,GAAGiD,KAAKD,OAAO,CAAC,MAAM/C,EAAEgD,KAAKoB,MAAMc,KAAKC,iBAAiB/E,GAAG+D,OAAO,EAAEnB,KAAKC,aAAajD,EAAEgD,KAAKiB,aAAajB,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKC,WAAW,GAAGD,KAAKoC,aAAa,CAAC,EAAEP,iBAAiB9E,GAAGiD,KAAKD,SAASC,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAW,EAAED,KAAKoC,cAAc,EAAEM,gBAAgB3F,GAAGiD,KAAKD,SAASC,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKoB,MAAMc,KAAKC,iBAAiB/E,GAAG+D,OAAO,EAAEnB,KAAKoC,cAAc,EAAEY,eAAejG,GAAGA,IAAIA,EAAE4F,iBAAiB5F,EAAEkG,kBAAkB,EAAEC,QAAQnG,GAAGiD,KAAKgB,MAAM,QAAQjE,EAAE,EAAEoG,OAAOpG,GAAGiD,KAAKgB,MAAM,OAAOjE,EAAE,GAAGqG,OAAOrG,GAAG,MAAMC,GAAGgD,KAAKqD,OAAOhG,SAAS,IAAIiG,QAAQvG,IAAI,IAAIC,EAAEG,EAAEI,EAAEC,EAAE,OAAO,MAAMT,GAAG,QAAQC,EAAED,EAAE2D,wBAAmB,IAAS1D,OAAE,EAAOA,EAAE6D,OAAO,MAAM9D,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQC,EAAED,EAAEqD,qBAAgB,IAASpD,OAAE,EAAOA,EAAEQ,KAAM,IAAGb,EAAEH,EAAEuG,OAAOxG,IAAI,IAAIC,EAAEG,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,MAAM,kBAAkB,QAAQZ,EAAE,MAAMD,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQC,EAAED,EAAEqD,qBAAgB,IAASpD,OAAE,EAAOA,EAAEQ,YAAO,IAAShB,EAAEA,EAAE,MAAMD,GAAG,QAAQU,EAAEV,EAAE2D,wBAAmB,IAASjD,OAAE,EAAOA,EAAEoD,OAAO,MAAM9D,GAAG,QAAQW,EAAEX,EAAE2D,wBAAmB,IAAShD,GAAG,QAAQC,EAAED,EAAE8F,iBAAY,IAAS7F,GAAG,QAAQC,EAAED,EAAE8F,YAAO,IAAS7F,OAAE,EAAOA,EAAE8F,WAAWC,OAAOC,SAASC,QAAS,IAAG,IAAItG,EAAEP,EAAEsG,OAAOtD,KAAKS,qBAAqB,GAAGT,KAAKvB,WAAWlB,EAAE4D,OAAO,GAAGnB,KAAKL,OAAO,IAAI/B,IAAIkG,KAAKC,KAAK,kEAAkExG,EAAE,IAAI,IAAIP,EAAEmE,OAAO,OAAO,MAAM3D,EAAER,IAAI,IAAIG,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEV,EAAE6G,EAAElG,EAAEoG,EAAED,EAAEE,EAAEJ,EAAEK,EAAEE,EAAED,EAAEE,EAAEC,EAAEC,EAAE,MAAMC,GAAG,MAAM3H,GAAG,QAAQG,EAAEH,EAAE8C,YAAO,IAAS3C,GAAG,QAAQI,EAAEJ,EAAEyH,mBAAc,IAASrH,GAAG,QAAQC,EAAED,EAAEsH,cAAS,IAASrH,OAAE,EAAOA,EAAE,KAAKT,EAAE,OAAO,CAAC+H,MAAM,CAAC,OAAO,MAAM9H,GAAG,QAAQS,EAAET,EAAE0D,wBAAmB,IAASjD,GAAG,QAAQC,EAAED,EAAE+F,iBAAY,IAAS9F,OAAE,EAAOA,EAAEmH,QAAQW,EAAE,MAAMxI,GAAG,QAAQW,EAAEX,EAAE0D,wBAAmB,IAAS/C,GAAG,QAAQC,EAAED,EAAEqH,iBAAY,IAASpH,OAAE,EAAOA,EAAEqH,MAAMC,EAAE,MAAMlI,GAAG,QAAQa,EAAEb,EAAE0D,wBAAmB,IAAS7C,GAAG,QAAQC,EAAED,EAAEsH,gBAAW,IAASrH,GAAG,QAAQV,EAAEU,EAAE,UAAK,IAASV,GAAG,QAAQ6G,EAAE7G,EAAEgI,YAAO,IAASnB,GAAG,QAAQlG,EAAEkG,EAAEoB,YAAO,IAAStH,OAAE,EAAOA,EAAEuH,KAAKrB,GAAGsB,GAAG,MAAMvI,GAAG,QAAQmH,EAAEnH,EAAE0D,wBAAmB,IAASyD,GAAG,QAAQD,EAAEC,EAAEX,iBAAY,IAASU,OAAE,EAAOA,EAAEjF,YAAYiG,EAAEO,EAAEzF,KAAKtB,WAAWwG,EAAE,GAAG,IAAIH,EAAE,MAAM/H,GAAG,QAAQoH,EAAEpH,EAAE0D,wBAAmB,IAAS0D,GAAG,QAAQJ,EAAEI,EAAEZ,iBAAY,IAASQ,OAAE,EAAOA,EAAE0B,MAAM,OAAO1F,KAAKtB,YAAYqG,IAAIA,EAAEG,GAAGnI,EAAE,WAAW,CAAC+H,MAAM,CAAC,kCAAkC,MAAM9H,GAAG,QAAQqH,EAAErH,EAAE8C,YAAO,IAASuE,OAAE,EAAOA,EAAEsB,YAAY,MAAM3I,GAAG,QAAQuH,EAAEvH,EAAE8C,YAAO,IAASyE,OAAE,EAAOA,EAAEO,OAAOc,MAAM,CAAC,aAAaL,EAAEG,MAAMX,GAAGc,IAAI,MAAM7I,GAAG,QAAQsH,EAAEtH,EAAE8C,YAAO,IAASwE,OAAE,EAAOA,EAAEuB,IAAIxH,MAAM,CAACE,KAAKyB,KAAKzB,OAAOkH,EAAE,YAAY,YAAY/F,SAASM,KAAKN,WAAW,MAAM1C,GAAG,QAAQwH,EAAExH,EAAE0D,wBAAmB,IAAS8D,GAAG,QAAQC,EAAED,EAAEhB,iBAAY,IAASiB,OAAE,EAAOA,EAAE/E,UAAUR,WAAWc,KAAKd,cAAc,MAAMlC,GAAG,QAAQ0H,EAAE1H,EAAE0D,wBAAmB,IAASgE,OAAE,EAAOA,EAAElB,WAAWsC,GAAG,CAACpE,MAAM1B,KAAKkD,QAAQ6C,KAAK/F,KAAKmD,YAAYqC,GAAG,CAACP,MAAMlI,IAAIyI,GAAGA,EAAEzI,EAAC,KAAM,CAACA,EAAE,WAAW,CAACiJ,KAAK,QAAQ,CAACrB,IAAIc,GAAE,EAAGhI,EAAET,IAAI,IAAIO,EAAEC,EAAE,MAAMC,GAAG,QAAQF,EAAEyC,KAAKqD,OAAOwB,YAAO,IAAStH,OAAE,EAAOA,EAAE,MAAMyC,KAAKhB,YAAYjC,EAAE,OAAO,CAAC+H,MAAM,CAAC,OAAO9E,KAAKhB,eAAejC,EAAE,iBAAiB,CAACsB,MAAM,CAAC4H,KAAK,OAAO,OAAOlJ,EAAE,YAAY,CAAC8I,IAAI,UAAUxH,MAAM,CAAC6H,MAAM,EAAEC,cAAa,EAAGC,MAAMpG,KAAKD,OAAOZ,UAAUa,KAAKb,UAAUkH,SAASrG,KAAKZ,kBAAkBI,UAAUQ,KAAKR,UAAU8G,iBAAiB,sBAAsBC,eAAe,QAAQ/I,EAAEwC,KAAKoB,MAAMI,kBAAa,IAAShE,OAAE,EAAOA,EAAEiE,KAAKmE,MAAM,CAACM,MAAM,EAAEC,cAAa,EAAGC,MAAMpG,KAAKD,OAAOZ,UAAUa,KAAKb,UAAUkH,SAASrG,KAAKZ,kBAAkBI,UAAUQ,KAAKR,UAAU8G,iBAAiB,uBAAuBR,GAAG,CAACU,KAAKxG,KAAKe,SAAS,aAAaf,KAAK2B,OAAO8E,KAAKzG,KAAKiB,YAAY,CAAClE,EAAE,WAAW,CAAC+H,MAAM,0BAA0BzG,MAAM,CAACE,KAAKyB,KAAKM,eAAeZ,SAASM,KAAKN,SAASR,WAAWc,KAAKd,YAAY8G,KAAK,UAAUH,IAAI,aAAaD,MAAM,CAAC,gBAAgBzI,EAAE,KAAK,OAAO,aAAa6C,KAAKf,UAAU,gBAAgBe,KAAKD,OAAOC,KAAKE,SAAS,KAAK,gBAAgBF,KAAKD,OAAO2G,YAAYZ,GAAG,CAACpE,MAAM1B,KAAKkD,QAAQ6C,KAAK/F,KAAKmD,SAAS,CAACpG,EAAE,WAAW,CAACiJ,KAAK,QAAQ,CAACvI,IAAIuC,KAAKrB,YAAY5B,EAAE,MAAM,CAAC+H,MAAM,CAACxG,KAAK0B,KAAKD,QAAQ6F,MAAM,CAACe,SAAS,MAAMb,GAAG,CAACc,QAAQ5G,KAAKqC,UAAUwE,UAAU7G,KAAK8B,oBAAoB+D,IAAI,QAAQ,CAAC9I,EAAE,KAAK,CAAC6I,MAAM,CAACkB,GAAG9G,KAAKE,SAASyG,SAAS,KAAKI,KAAK5J,EAAE,KAAK,SAAS,CAACH,OAAM,EAAG,GAAG,IAAIA,EAAEmE,QAAQ,IAAI5D,EAAE4D,SAASnB,KAAKvB,UAAU,OAAOjB,EAAED,EAAE,IAAI,GAAGA,EAAE4D,OAAO,GAAGnB,KAAKL,OAAO,EAAE,CAAC,MAAMxC,EAAEI,EAAEyJ,MAAM,EAAEhH,KAAKL,QAAQjC,EAAEV,EAAEsG,QAAQvG,IAAII,EAAE2D,SAAS/D,KAAK,OAAOA,EAAE,MAAM,CAAC+H,MAAM,CAAC,eAAe,gBAAgB3E,OAAOH,KAAKM,kBAAkB,IAAInD,EAAEP,IAAIY,GAAGE,EAAEyD,OAAO,EAAEpE,EAAE,MAAM,CAAC+H,MAAM,CAAC,cAAc,CAAC,oBAAoB9E,KAAKD,UAAU,CAACtC,EAAEC,KAAK,MAAM,CAAC,OAAOX,EAAE,MAAM,CAAC+H,MAAM,CAAC,2CAA2C,gBAAgB3E,OAAOH,KAAKM,gBAAgB,CAAC,oBAAoBN,KAAKD,UAAU,CAACtC,EAAET,IAAI,GAAG,IAAIe,EAAEZ,EAAE,MAAMgH,EAAEhH,EAAEM,EAAEM,GAAGmG,EAAE/G,EAAE,MAAMiH,EAAEjH,EAAEM,EAAEyG,GAAGF,EAAE7G,EAAE,KAAKkH,EAAElH,EAAEM,EAAEuG,GAAGO,EAAEpH,EAAE,MAAMmH,EAAEnH,EAAEM,EAAE8G,GAAGC,EAAErH,EAAE,MAAMsH,EAAEtH,EAAEM,EAAE+G,GAAGE,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAGc,EAAErI,EAAE,MAAM+H,EAAE,CAAC,EAAEA,EAAE+B,kBAAkBtC,IAAIO,EAAEgC,cAAc5C,IAAIY,EAAEiC,OAAO9C,IAAI+C,KAAK,KAAK,QAAQlC,EAAEmC,OAAOjD,IAAIc,EAAEoC,mBAAmB7C,IAAIN,IAAIqB,EAAEpF,EAAE8E,GAAGM,EAAEpF,GAAGoF,EAAEpF,EAAEmH,QAAQ/B,EAAEpF,EAAEmH,OAAO,IAAIhC,EAAEpI,EAAE,MAAMsI,EAAE,CAAC,EAAEA,EAAEwB,kBAAkBtC,IAAIc,EAAEyB,cAAc5C,IAAImB,EAAE0B,OAAO9C,IAAI+C,KAAK,KAAK,QAAQ3B,EAAE4B,OAAOjD,IAAIqB,EAAE6B,mBAAmB7C,IAAIN,IAAIoB,EAAEnF,EAAEqF,GAAGF,EAAEnF,GAAGmF,EAAEnF,EAAEmH,QAAQhC,EAAEnF,EAAEmH,OAAO,IAAIxC,EAAE5H,EAAE,MAAMqK,EAAErK,EAAE,MAAMG,EAAEH,EAAEM,EAAE+J,GAAGC,GAAE,EAAG1C,EAAE3E,GAAG6D,OAAE0D,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmBrK,KAAKA,IAAImK,GAAG,MAAMgG,EAAEhG,EAAEhL,SAAS,KAAK,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIoH,IAAI,MAAMlH,EAAE,CAACS,KAAK,WAAWK,MAAM,CAACqB,SAAS,CAACnB,KAAKC,QAAQnB,SAAQ,GAAIkB,KAAK,CAACA,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,yBAAyB,sBAAsB,QAAQ,UAAU,WAAWgC,QAAQhC,GAAGM,QAAQ,aAAauK,WAAW,CAACrJ,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,SAAS,QAAQ,UAAUgC,QAAQhC,GAAGM,QAAQ,UAAUwK,KAAK,CAACtJ,KAAKC,QAAQnB,SAAQ,GAAI4B,UAAU,CAACV,KAAKK,OAAOvB,QAAQ,MAAMoG,KAAK,CAAClF,KAAKK,OAAOvB,QAAQ,MAAMyK,SAAS,CAACvJ,KAAKK,OAAOvB,QAAQ,MAAM0K,GAAG,CAACxJ,KAAK,CAACK,OAAOa,QAAQpC,QAAQ,MAAM2K,MAAM,CAACzJ,KAAKC,QAAQnB,SAAQ,GAAI6B,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,OAAO+F,OAAOrG,GAAG,IAAIC,EAAEG,EAAEI,EAAEC,EAAEC,EAAEC,EAAEsC,KAAK,MAAMrC,EAAE,QAAQX,EAAEgD,KAAKqD,OAAOhG,eAAU,IAASL,GAAG,QAAQG,EAAEH,EAAE,UAAK,IAASG,GAAG,QAAQI,EAAEJ,EAAEiI,YAAO,IAAS7H,GAAG,QAAQC,EAAED,EAAE8H,YAAO,IAAS7H,OAAE,EAAOA,EAAE8H,KAAK/H,GAAGK,IAAID,EAAEE,EAAE,QAAQJ,EAAEuC,KAAKqD,cAAS,IAAS5F,OAAE,EAAOA,EAAEoH,KAAKlH,GAAGqC,KAAKf,WAAWgJ,EAAQlE,KAAK,mFAAmF,CAACqB,KAAKzH,EAAEsB,UAAUe,KAAKf,WAAWe,MAAM,MAAMlC,EAAE,WAAW,IAAIoK,SAASlL,EAAEmL,SAAShL,EAAEiL,cAAc7K,GAAG2D,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE,OAAOnE,EAAEW,EAAEqK,KAAKrK,EAAE+F,KAAK,SAAS,IAAI,CAACqB,MAAM,CAAC,aAAa,CAAC,wBAAwBjH,IAAID,EAAE,wBAAwBA,IAAIC,EAAE,4BAA4BA,GAAGD,EAAE,CAAC,mBAAmBuC,OAAOzC,EAAEa,OAAOb,EAAEa,KAAK,mBAAmBb,EAAEmK,KAAKQ,OAAOlL,EAAE,2BAA2BI,IAAIqI,MAAM,CAAC,aAAalI,EAAEuB,UAAUS,SAAShC,EAAEgC,SAASnB,KAAKb,EAAE+F,KAAK,KAAK/F,EAAEkK,WAAWb,KAAKrJ,EAAE+F,KAAK,SAAS,KAAKA,MAAM/F,EAAEqK,IAAIrK,EAAE+F,KAAK/F,EAAE+F,KAAK,KAAKzB,QAAQtE,EAAEqK,IAAIrK,EAAE+F,KAAK,QAAQ,KAAK6E,KAAK5K,EAAEqK,IAAIrK,EAAE+F,KAAK,+BAA+B,KAAKqE,UAAUpK,EAAEqK,IAAIrK,EAAE+F,MAAM/F,EAAEoK,SAASpK,EAAEoK,SAAS,QAAQpK,EAAE6K,QAAQzC,GAAG,IAAIpI,EAAE8K,WAAWvD,MAAMlI,IAAI,IAAII,EAAEI,EAAE,QAAQJ,EAAEO,EAAE8K,kBAAa,IAASrL,GAAG,QAAQI,EAAEJ,EAAE8H,aAAQ,IAAS1H,GAAGA,EAAE+H,KAAKnI,EAAEJ,GAAG,MAAMC,GAAGA,EAAED,EAAC,IAAK,CAACA,EAAE,OAAO,CAAC+H,MAAM,uBAAuB,CAACjH,EAAEd,EAAE,OAAO,CAAC+H,MAAM,mBAAmBc,MAAM,CAAC,cAAclI,EAAEwB,aAAa,CAACxB,EAAE2F,OAAOwB,OAAO,KAAKjH,EAAEb,EAAE,OAAO,CAAC+H,MAAM,oBAAoB,CAACnH,IAAI,QAAQ,EAAE,OAAOqC,KAAK+H,GAAGhL,EAAE,cAAc,CAACsB,MAAM,CAACoK,QAAO,EAAGV,GAAG/H,KAAK+H,GAAGC,MAAMhI,KAAKgI,OAAOpD,YAAY,CAACvH,QAAQS,KAAKA,GAAG,GAAG,IAAIN,EAAEL,EAAE,MAAMM,EAAEN,EAAEM,EAAED,GAAGE,EAAEP,EAAE,MAAMQ,EAAER,EAAEM,EAAEC,GAAGE,EAAET,EAAE,KAAKU,EAAEV,EAAEM,EAAEG,GAAGE,EAAEX,EAAE,MAAMC,EAAED,EAAEM,EAAEK,GAAGmG,EAAE9G,EAAE,MAAMY,EAAEZ,EAAEM,EAAEwG,GAAGE,EAAEhH,EAAE,MAAM+G,EAAE/G,EAAEM,EAAE0G,GAAGC,EAAEjH,EAAE,MAAM6G,EAAE,CAAC,EAAEA,EAAEiD,kBAAkB/C,IAAIF,EAAEkD,cAAc9J,IAAI4G,EAAEmD,OAAOtJ,IAAIuJ,KAAK,KAAK,QAAQpD,EAAEqD,OAAO1J,IAAIqG,EAAEsD,mBAAmBvJ,IAAIN,IAAI2G,EAAEhE,EAAE4D,GAAGI,EAAEhE,GAAGgE,EAAEhE,EAAEmH,QAAQnD,EAAEhE,EAAEmH,OAAO,IAAIlD,EAAElH,EAAE,MAAMoH,EAAEpH,EAAE,MAAMmH,EAAEnH,EAAEM,EAAE8G,GAAGC,GAAE,EAAGH,EAAEjE,GAAG7C,OAAEoK,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmBrD,KAAKA,IAAIE,GAAG,MAAMC,EAAED,EAAE/H,SAAS,KAAK,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAI6H,IAAI,IAAI3H,EAAEJ,EAAE,MAAMK,EAAEL,EAAE,MAAMM,EAAEN,EAAE,MAAM,MAAMO,EAAE,CAACM,KAAK,YAAYC,WAAW,CAAC4R,SAAStS,EAAEsS,UAAUC,cAAa,EAAGzR,MAAM,CAACiI,iBAAiB,CAAC/H,KAAKK,OAAOvB,QAAQ,IAAIyN,UAAU,CAACvM,KAAKC,QAAQnB,SAAQ,GAAIkJ,eAAe,CAAClJ,aAAQ,EAAOkB,KAAK,CAACwR,YAAYC,WAAWpR,OAAOJ,WAAWqB,MAAM,CAAC,aAAa,cAAcgM,gBAAgB7L,KAAKsB,gBAAgB,EAAEd,QAAQ,CAACwM,qBAAqB,IAAIjQ,EAAEC,EAAE,SAASgD,KAAK4B,aAAa5B,KAAK8K,UAAU,OAAO,MAAM3N,EAAE,QAAQJ,EAAEiD,KAAKoB,MAAMC,eAAU,IAAStE,GAAG,QAAQC,EAAED,EAAEqE,MAAM6O,qBAAgB,IAASjT,OAAE,EAAOA,EAAEyE,IAAItE,IAAI6C,KAAKkQ,YAAW,EAAG1S,EAAE6P,iBAAiBlQ,EAAE,CAACgT,mBAAkB,EAAGlD,mBAAkB,EAAG1G,eAAevG,KAAKuG,eAAe4G,WAAU,EAAG1P,EAAE2P,OAAOpN,KAAKkQ,WAAW5C,WAAW,EAAEhM,iBAAiB,IAAIvE,EAAEmE,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE,IAAI,IAAIlE,EAAE,QAAQA,EAAEgD,KAAKkQ,kBAAa,IAASlT,GAAGA,EAAEuQ,WAAWxQ,GAAGiD,KAAKkQ,WAAW,IAAI,CAAC,MAAMnT,GAAGkL,EAAQlE,KAAKhH,EAAE,CAAC,EAAEqT,YAAYpQ,KAAK4B,WAAU,KAAM5B,KAAKgB,MAAM,cAAchB,KAAKkM,cAAe,GAAE,EAAEmE,YAAYrQ,KAAKgB,MAAM,cAAchB,KAAKsB,gBAAgB,IAAI3D,EAAED,EAAE,IAAIE,EAAET,EAAE,MAAMU,EAAEV,EAAEM,EAAEG,GAAGE,EAAEX,EAAE,MAAMC,EAAED,EAAEM,EAAEK,GAAGmG,EAAE9G,EAAE,KAAKY,EAAEZ,EAAEM,EAAEwG,GAAGE,EAAEhH,EAAE,MAAM+G,EAAE/G,EAAEM,EAAE0G,GAAGC,EAAEjH,EAAE,MAAM6G,EAAE7G,EAAEM,EAAE2G,GAAGC,EAAElH,EAAE,MAAMoH,EAAEpH,EAAEM,EAAE4G,GAAGC,EAAEnH,EAAE,MAAMqH,EAAE,CAAC,EAAEA,EAAEyC,kBAAkB1C,IAAIC,EAAE0C,cAAchD,IAAIM,EAAE2C,OAAOpJ,IAAIqJ,KAAK,KAAK,QAAQ5C,EAAE6C,OAAOjK,IAAIoH,EAAE8C,mBAAmBtD,IAAInG,IAAIyG,EAAElE,EAAEoE,GAAGF,EAAElE,GAAGkE,EAAElE,EAAEmH,QAAQjD,EAAElE,EAAEmH,OAAO,IAAI9C,EAAEtH,EAAE,MAAMuH,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAGc,GAAE,EAAGf,EAAErE,GAAGzC,GAAE,WAAY,IAAIZ,EAAEiD,KAAK,OAAM,EAAGjD,EAAEmR,MAAMC,IAAI,WAAWpR,EAAEuT,GAAGvT,EAAEwT,GAAG,CAAC1K,IAAI,UAAUD,MAAM,CAAC4K,SAAS,GAAG,gBAAgB,GAAG,iBAAgB,EAAG,eAAezT,EAAEuJ,kBAAkBR,GAAG,CAAC,aAAa/I,EAAEqT,UAAU,aAAarT,EAAEsT,WAAWzL,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAM,CAACxS,EAAEqS,GAAG,WAAW,EAAEI,OAAM,IAAK,MAAK,IAAK,WAAWzS,EAAEwL,QAAO,GAAIxL,EAAEyL,YAAY,CAACzL,EAAEqS,GAAG,YAAY,EAAG,GAAE,IAAG,EAAG,KAAK,KAAK,MAAM,mBAAmBzK,KAAKA,IAAIa,GAAG,MAAMN,EAAEM,EAAE/I,SAAS,IAAI,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACA,EAAE,IAAIU,IAAkB,MAAMF,GAAE,EAAhBL,EAAE,MAAmB0T,qBAAqBC,eAAe,CAAC,CAACC,OAAO,KAAKC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,eAAeC,QAAQ,YAAYC,WAAW,WAAW,mBAAmB,qBAAqB,kEAAkE,iEAAiE,0BAA0B,6BAA6B,oCAAoC,uCAAuC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,SAAS,aAAa,WAAW7H,MAAM,OAAO,cAAc,YAAY,mBAAmB,gBAAgB,gBAAgB,qBAAqB,kBAAkB,kBAAkB8H,OAAO,OAAO,YAAY,aAAa,kCAAkC,6BAA6B,qCAAqC,6BAA6BC,SAAS,QAAQC,MAAM,UAAU,eAAe,iBAAiB,kBAAkB,kBAAkBC,OAAO,QAAQ,sBAAsB,qBAAqB,gBAAgB,kBAAkB,8CAA8C,gEAAgE,eAAe,iBAAiBC,KAAK,SAAS,iBAAiB,kCAAkC,aAAa,qBAAqBC,QAAQ,UAAUC,KAAK,MAAM,iCAAiC,iCAAiC,kBAAkB,cAAc,qBAAqB,oBAAoB,kBAAkB,qBAAqB,gBAAgB,eAAe,gBAAgB,sBAAsB,6BAA6B,gCAAgCC,SAAS,SAAS,oBAAoB,gBAAgBC,OAAO,MAAM,iBAAiB,cAAc,eAAe,aAAaC,SAAS,YAAY,sBAAsB,kBAAkB,gBAAgB,iBAAiB,oBAAoB,4BAA4B,kBAAkB,YAAYC,OAAO,QAAQC,QAAQ,SAAS,kBAAkB,iBAAiB,2BAA2B,4BAA4B,6BAA6B,yBAAyB,eAAe,uBAAuB,oEAAoE,8EAA8E,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,mBAAmBC,QAAQ,UAAUC,WAAW,eAAe,mBAAmB,iBAAiBC,OAAO,QAAQ7H,MAAM,SAAS8H,OAAO,aAAaE,MAAM,YAAY,eAAe,iBAAiB,kBAAkB,iBAAiBE,KAAK,UAAU,iBAAiB,mBAAmB,aAAa,eAAeC,QAAQ,QAAQ,kBAAkB,qBAAqB,gBAAgB,aAAa,gBAAgB,iBAAiBE,SAAS,SAASC,OAAO,QAAQ,iBAAiB,uBAAuB,eAAe,kBAAkBC,SAAS,cAAc,oBAAoB,qBAAqB,kBAAkB,sBAAsBE,QAAQ,YAAY,kBAAkB,kBAAkB,6BAA6B,kCAAkC,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,kEAAkE,4EAA4E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,uBAAuB,eAAe,gBAAgBC,OAAO,OAAO,aAAa,eAAe7H,MAAM,QAAQ,cAAc,iBAAiB,mBAAmB,qBAAqB,gBAAgB,0BAA0B,kBAAkB,uBAAuB8H,OAAO,gBAAgB,YAAY,kBAAkB,kCAAkC,0CAA0C,oBAAoB,6BAA6B,qCAAqC,qCAAqCC,SAAS,WAAWC,MAAM,UAAU,eAAe,mBAAmB,kBAAkB,wBAAwBC,OAAO,SAAS,sBAAsB,oBAAoB,gBAAgB,qBAAqB,8CAA8C,0DAA0D,eAAe,kBAAkBC,KAAK,UAAU,iBAAiB,2BAA2B,aAAa,kBAAkBC,QAAQ,WAAWC,KAAK,QAAQ,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,yBAAyB,kBAAkB,uBAAuB,gBAAgB,iBAAiB,gBAAgB,iBAAiB,6BAA6B,gCAAgCC,SAAS,WAAW,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,qBAAqB,eAAe,2BAA2BC,SAAS,aAAa,sBAAsB,sBAAsB,gBAAgB,sBAAsB,oBAAoB,mBAAmB,kBAAkB,wBAAwBC,OAAO,QAAQC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,sCAAsC,6BAA6B,2BAA2B,eAAe,oBAAoB,gFAAgF,kGAAkG,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,OAAOC,WAAW,WAAW,mBAAmB,oBAAoB,kEAAkE,wDAAwD,0BAA0B,2CAA2C,oCAAoC,qDAAqD,iBAAiB,eAAe,eAAe,gBAAgBC,OAAO,SAAS,aAAa,eAAe7H,MAAM,SAAS,cAAc,wBAAwB,mBAAmB,kBAAkB,gBAAgB,yBAAyB,kBAAkB,iBAAiB8H,OAAO,qBAAqB,YAAY,kBAAkB,kCAAkC,+CAA+C,oBAAoB,6BAA6B,qCAAqC,gCAAgCC,SAAS,WAAWC,MAAM,WAAW,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,qBAAqB,gBAAgB,cAAc,8CAA8C,+CAA+C,eAAe,iBAAiBC,KAAK,cAAc,iBAAiB,yBAAyB,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,UAAU,iCAAiC,qCAAqC,kBAAkB,mBAAmB,qBAAqB,oBAAoB,kBAAkB,wBAAwB,gBAAgB,cAAc,gBAAgB,eAAe,6BAA6B,wBAAwBC,SAAS,YAAY,oBAAoB,yBAAyBC,OAAO,SAAS,iBAAiB,mBAAmB,eAAe,gBAAgBC,SAAS,YAAY,sBAAsB,qBAAqB,gBAAgB,iBAAiB,oBAAoB,iBAAiB,kBAAkB,qBAAqBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,iCAAiC,6BAA6B,2BAA2B,eAAe,kBAAkB,gFAAgF,0KAA0K,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,aAAaC,WAAW,cAAc,mBAAmB,cAAc,kEAAkE,2DAA2D,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,qBAAqB,eAAe,YAAYC,OAAO,OAAO,aAAa,YAAY7H,MAAM,MAAM,cAAc,aAAa,mBAAmB,iBAAiB,gBAAgB,gBAAgB,kBAAkB,oBAAoB8H,OAAO,kBAAkB,YAAY,eAAe,kCAAkC,oCAAoC,oBAAoB,8BAA8B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,OAAO,eAAe,eAAe,kBAAkB,aAAaC,OAAO,SAAS,sBAAsB,qBAAqB,gBAAgB,gBAAgB,8CAA8C,sCAAsC,eAAe,WAAWC,KAAK,SAAS,iBAAiB,qBAAqB,aAAa,mBAAmBC,QAAQ,WAAWC,KAAK,MAAM,iCAAiC,iCAAiC,kBAAkB,iBAAiB,qBAAqB,uBAAuB,kBAAkB,wBAAwB,gBAAgB,8BAA8B,gBAAgB,gBAAgB,6BAA6B,6BAA6BC,SAAS,UAAU,oBAAoB,mBAAmBC,OAAO,MAAM,iBAAiB,iBAAiB,eAAe,gBAAgBC,SAAS,gBAAgB,sBAAsB,0BAA0B,gBAAgB,cAAc,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,OAAOC,QAAQ,WAAW,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,gCAAgC,eAAe,oBAAoB,gFAAgF,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,wBAAwBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,gBAAgB,kEAAkE,iFAAiF,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,uBAAuB,eAAe,eAAeC,OAAO,YAAY,aAAa,WAAW7H,MAAM,YAAY,cAAc,kBAAkB,mBAAmB,uBAAuB,gBAAgB,yBAAyB,kBAAkB,wBAAwB8H,OAAO,oBAAoB,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,+BAA+B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,kBAAkB,kBAAkB,mBAAmBC,OAAO,SAAS,sBAAsB,mBAAmB,gBAAgB,qBAAqB,8CAA8C,gDAAgD,eAAe,qBAAqBC,KAAK,SAAS,iBAAiB,sBAAsB,aAAa,mBAAmBC,QAAQ,cAAcC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,sBAAsB,kBAAkB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,kCAAkCC,SAAS,YAAY,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,iBAAiB,eAAe,uBAAuBC,SAAS,gBAAgB,sBAAsB,mCAAmC,gBAAgB,oBAAoB,oBAAoB,sBAAsB,kBAAkB,kBAAkBC,OAAO,aAAaC,QAAQ,UAAU,kBAAkB,gBAAgB,2BAA2B,gCAAgC,6BAA6B,4CAA4C,eAAe,+BAA+B,gFAAgF,8GAA8G,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,wBAAwBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,gBAAgB,kEAAkE,iFAAiF,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,uBAAuB,eAAe,eAAeC,OAAO,YAAY,aAAa,WAAW7H,MAAM,YAAY,cAAc,kBAAkB,mBAAmB,uBAAuB,gBAAgB,yBAAyB,kBAAkB,wBAAwB8H,OAAO,oBAAoB,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,+BAA+B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,kBAAkB,kBAAkB,mBAAmBC,OAAO,SAAS,sBAAsB,mBAAmB,gBAAgB,qBAAqB,8CAA8C,gDAAgD,eAAe,qBAAqBC,KAAK,SAAS,iBAAiB,sBAAsB,aAAa,mBAAmBC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,sBAAsB,kBAAkB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,iCAAiCC,SAAS,YAAY,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,iBAAiB,eAAe,uBAAuBC,SAAS,gBAAgB,sBAAsB,mCAAmC,gBAAgB,oBAAoB,oBAAoB,sBAAsB,kBAAkB,kBAAkBC,OAAO,aAAaC,QAAQ,UAAU,kBAAkB,gBAAgB,2BAA2B,qCAAqC,6BAA6B,0CAA0C,eAAe,+BAA+B,gFAAgF,8GAA8G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,iBAAiB,qBAAqB,uBAAuBC,QAAQ,YAAYC,WAAW,iBAAiB,mBAAmB,aAAa,kEAAkE,mEAAmE,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,UAAU,aAAa,sBAAsB7H,MAAM,WAAW,cAAc,qBAAqB,mBAAmB,qBAAqB,gBAAgB,4BAA4B,kBAAkB,sBAAsB8H,OAAO,aAAa,YAAY,cAAc,kCAAkC,8BAA8B,oBAAoB,sBAAsB,qCAAqC,mCAAmCC,SAAS,YAAYC,MAAM,UAAU,eAAe,gBAAgB,kBAAkB,yBAAyBC,OAAO,WAAW,sBAAsB,+BAA+B,gBAAgB,6BAA6B,8CAA8C,4DAA4D,eAAe,yBAAyBC,KAAK,UAAU,iBAAiB,oBAAoB,aAAa,oBAAoBC,QAAQ,cAAcC,KAAK,UAAU,iCAAiC,0CAA0C,kBAAkB,oBAAoB,qBAAqB,oCAAoC,kBAAkB,4BAA4B,gBAAgB,kBAAkB,gBAAgB,qBAAqB,6BAA6B,sCAAsCC,SAAS,cAAc,oBAAoB,iBAAiBC,OAAO,YAAY,iBAAiB,0BAA0B,eAAe,mBAAmBC,SAAS,YAAY,sBAAsB,qBAAqB,gBAAgB,6BAA6B,oBAAoB,yBAAyB,kBAAkB,6BAA6BC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,uBAAuB,2BAA2B,0CAA0C,6BAA6B,0CAA0C,eAAe,mBAAmB,gFAAgF,qHAAqH,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,kEAAkE,kEAAkE,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,iBAAiB,eAAe,eAAeC,OAAO,SAAS,aAAa,aAAa7H,MAAM,QAAQ,cAAc,cAAc,mBAAmB,mBAAmB,gBAAgB,gBAAgB,kBAAkB,kBAAkB8H,OAAO,SAAS,YAAY,YAAY,kCAAkC,kCAAkC,oBAAoB,oBAAoB,qCAAqC,qCAAqCC,SAAS,YAAYC,MAAM,QAAQ,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,SAAS,sBAAsB,sBAAsB,gBAAgB,gBAAgB,8CAA8C,8CAA8C,eAAe,eAAeC,KAAK,OAAO,iBAAiB,iBAAiB,aAAa,aAAaC,QAAQ,UAAUC,KAAK,OAAO,iCAAiC,iCAAiC,kBAAkB,kBAAkB,qBAAqB,qBAAqB,kBAAkB,kBAAkB,gBAAgB,gBAAgB,gBAAgB,gBAAgB,6BAA6B,6BAA6BC,SAAS,WAAW,oBAAoB,oBAAoBC,OAAO,SAAS,iBAAiB,iBAAiB,eAAe,eAAeC,SAAS,WAAW,sBAAsB,sBAAsB,gBAAgB,gBAAgB,oBAAoB,oBAAoB,kBAAkB,kBAAkBC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,2BAA2B,6BAA6B,6BAA6B,eAAe,eAAe,gFAAgF,kFAAkF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,iBAAiB,qBAAqB,mBAAmBC,QAAQ,OAAOC,WAAW,WAAW,mBAAmB,kBAAkBC,OAAO,SAAS7H,MAAM,QAAQ8H,OAAO,SAASE,MAAM,SAAS,eAAe,qBAAqB,kBAAkB,cAAc,8CAA8C,yCAAyCE,KAAK,QAAQ,iBAAiB,qBAAqB,aAAa,sBAAsBC,QAAQ,WAAW,kBAAkB,sBAAsB,gBAAgB,gBAAgB,gBAAgB,kBAAkBE,SAAS,SAASC,OAAO,QAAQ,iBAAiB,eAAe,eAAe,kBAAkBC,SAAS,SAAS,sBAAsB,kBAAkB,oBAAoB,oBAAoB,kBAAkB,wBAAwBE,QAAQ,SAAS,kBAAkB,kBAAkB,6BAA6B,6BAA6B,wCAAwC,qCAAqC,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,sBAAsBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,wBAAwB,kEAAkE,oFAAoF,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,mBAAmB,eAAe,iBAAiBC,OAAO,SAAS,aAAa,gBAAgB7H,MAAM,SAAS,cAAc,eAAe,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,oBAAoB8H,OAAO,gBAAgB,YAAY,kBAAkB,kCAAkC,4DAA4D,oBAAoB,uBAAuB,qCAAqC,mCAAmCC,SAAS,WAAWC,MAAM,WAAW,eAAe,kBAAkB,kBAAkB,sBAAsBC,OAAO,SAAS,sBAAsB,oBAAoB,gBAAgB,qBAAqB,8CAA8C,0DAA0D,eAAe,eAAeC,KAAK,YAAY,iBAAiB,sBAAsB,aAAa,oBAAoBC,QAAQ,UAAUC,KAAK,QAAQ,iCAAiC,mCAAmC,kBAAkB,mBAAmB,qBAAqB,0BAA0B,kBAAkB,0BAA0B,gBAAgB,qBAAqB,gBAAgB,kBAAkB,6BAA6B,sCAAsCC,SAAS,WAAW,oBAAoB,wBAAwBC,OAAO,SAAS,iBAAiB,4BAA4B,eAAe,0BAA0BC,SAAS,UAAU,sBAAsB,yBAAyB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,0BAA0BC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,mBAAmB,2BAA2B,yCAAyC,6BAA6B,mCAAmC,eAAe,mBAAmB,gFAAgF,0GAA0G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,kBAAkBC,QAAQ,WAAWC,WAAW,YAAY,mBAAmB,uBAAuB,kEAAkE,kEAAkE,0BAA0B,4BAA4B,oCAAoC,uCAAuC,iBAAiB,qBAAqB,eAAe,iBAAiBC,OAAO,WAAW,aAAa,iBAAiB7H,MAAM,OAAO,cAAc,cAAc,mBAAmB,kBAAkB,gBAAgB,kBAAkB,kBAAkB,sBAAsB8H,OAAO,kBAAkB,YAAY,oBAAoB,kCAAkC,mDAAmD,oBAAoB,2CAA2C,qCAAqC,yCAAyCC,SAAS,UAAUC,MAAM,WAAW,eAAe,sBAAsB,kBAAkB,mBAAmBC,OAAO,UAAU,sBAAsB,sBAAsB,gBAAgB,qBAAqB,8CAA8C,kDAAkD,eAAe,qBAAqBC,KAAK,YAAY,iBAAiB,yBAAyB,aAAa,gBAAgBC,QAAQ,YAAYC,KAAK,QAAQ,iCAAiC,kCAAkC,kBAAkB,mBAAmB,qBAAqB,uBAAuB,kBAAkB,oBAAoB,gBAAgB,sBAAsB,gBAAgB,oBAAoB,6BAA6B,iCAAiCC,SAAS,WAAW,oBAAoB,8BAA8BC,OAAO,SAAS,iBAAiB,oBAAoB,eAAe,sBAAsBC,SAAS,YAAY,sBAAsB,sBAAsB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,iBAAiBC,OAAO,SAASC,QAAQ,YAAY,kBAAkB,qBAAqB,2BAA2B,iCAAiC,6BAA6B,6BAA6B,eAAe,oBAAoB,gFAAgF,8FAA8F,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,YAAYC,WAAW,eAAe,mBAAmB,mBAAmB,0BAA0B,iCAAiC,oCAAoC,2CAA2C,iBAAiB,oBAAoBC,OAAO,UAAU7H,MAAM,QAAQ,mBAAmB,mBAAmB,kBAAkB,qBAAqB8H,OAAO,aAAa,YAAY,mBAAmB,qCAAqC,2CAA2CE,MAAM,QAAQ,eAAe,gBAAgB,kBAAkB,iBAAiBC,OAAO,UAAU,sBAAsB,0BAA0B,8CAA8C,iDAAiDC,KAAK,WAAW,iBAAiB,qBAAqB,aAAa,cAAcC,QAAQ,kBAAkB,kBAAkB,kBAAkB,kBAAkB,qBAAqB,gBAAgB,iBAAiB,gBAAgB,gBAAgB,6BAA6B,uBAAuBE,SAAS,YAAYC,OAAO,OAAO,iBAAiB,eAAe,eAAe,eAAeC,SAAS,YAAY,sBAAsB,mBAAmB,oBAAoB,mBAAmB,kBAAkB,mBAAmBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,sBAAsB,2BAA2B,kCAAkC,6BAA6B,sBAAsB,eAAe,kBAAkB,oEAAoE,iFAAiF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,UAAUC,WAAW,YAAY,mBAAmB,mBAAmB,kEAAkE,0EAA0E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,4BAA4B,eAAe,oBAAoBC,OAAO,UAAU,aAAa,mBAAmB7H,MAAM,SAAS,cAAc,oBAAoB,mBAAmB,uBAAuB,gBAAgB,2BAA2B,kBAAkB,8BAA8B8H,OAAO,eAAe,YAAY,mBAAmB,kCAAkC,gDAAgD,oBAAoB,uBAAuB,qCAAqC,qCAAqCC,SAAS,SAASC,MAAM,WAAW,eAAe,wBAAwB,kBAAkB,uBAAuBC,OAAO,SAAS,sBAAsB,uBAAuB,gBAAgB,yBAAyB,8CAA8C,oDAAoD,eAAe,qBAAqBC,KAAK,UAAU,iBAAiB,qBAAqB,aAAa,iBAAiBC,QAAQ,SAASC,KAAK,SAAS,iCAAiC,wCAAwC,kBAAkB,uBAAuB,qBAAqB,+BAA+B,kBAAkB,+BAA+B,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,oCAAoCC,SAAS,YAAY,oBAAoB,mBAAmBC,OAAO,WAAW,iBAAiB,yBAAyB,eAAe,0BAA0BC,SAAS,aAAa,sBAAsB,iCAAiC,gBAAgB,2BAA2B,oBAAoB,qBAAqB,kBAAkB,wBAAwBC,OAAO,UAAUC,QAAQ,WAAW,kBAAkB,iBAAiB,2BAA2B,mEAAmE,6BAA6B,mCAAmC,eAAe,0BAA0B,gFAAgF,2GAA2G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,sBAAsBC,QAAQ,UAAUC,WAAW,cAAc,mBAAmB,qBAAqB,iBAAiB,sBAAsBC,OAAO,WAAW7H,MAAM,SAAS,kBAAkB,sBAAsB8H,OAAO,gBAAgB,qCAAqC,qCAAqCE,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,uBAAuB,8CAA8C,sDAAsDE,KAAK,WAAW,iBAAiB,+BAA+B,aAAa,iBAAiBC,QAAQ,WAAW,kBAAkB,qBAAqB,gBAAgB,kBAAkB,gBAAgB,qBAAqBE,SAAS,UAAUC,OAAO,SAAS,iBAAiB,sBAAsB,eAAe,2BAA2BC,SAAS,UAAU,sBAAsB,2BAA2B,oBAAoB,sBAAsB,kBAAkB,sBAAsBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,mBAAmB,6BAA6B,iCAAiC,wCAAwC,kDAAkD,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,eAAe,qBAAqB,gBAAgBC,QAAQ,SAASC,WAAW,WAAW,mBAAmB,YAAYC,OAAO,QAAQ7H,MAAM,QAAQ8H,OAAO,eAAeE,MAAM,QAAQ,eAAe,eAAe,kBAAkB,cAAcE,KAAK,MAAM,iBAAiB,iBAAiB,aAAa,aAAaC,QAAQ,QAAQ,kBAAkB,cAAc,gBAAgB,aAAa,gBAAgB,kBAAkBE,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,eAAe,eAAe,aAAaC,SAAS,SAAS,oBAAoB,mBAAmB,kBAAkB,cAAcE,QAAQ,QAAQ,kBAAkB,iBAAiB,6BAA6B,wBAAwB,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,sBAAsBC,QAAQ,YAAYC,WAAW,gBAAgB,mBAAmB,uBAAuB,kEAAkE,oEAAoE,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,yBAAyB,eAAe,sBAAsBC,OAAO,aAAa,aAAa,iBAAiB7H,MAAM,UAAU,cAAc,iBAAiB,mBAAmB,qBAAqB,gBAAgB,oBAAoB,kBAAkB,6BAA6B8H,OAAO,SAAS,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,8BAA8B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,eAAe,kBAAkB,mBAAmBC,OAAO,WAAW,sBAAsB,0BAA0B,gBAAgB,mBAAmB,8CAA8C,yCAAyC,eAAe,oBAAoBC,KAAK,YAAY,iBAAiB,wBAAwB,aAAa,gBAAgBC,QAAQ,UAAUC,KAAK,YAAY,iCAAiC,mDAAmD,kBAAkB,uBAAuB,qBAAqB,uBAAuB,kBAAkB,4BAA4B,gBAAgB,kBAAkB,gBAAgB,yBAAyB,6BAA6B,sBAAsBC,SAAS,QAAQ,oBAAoB,yBAAyBC,OAAO,UAAU,iBAAiB,YAAY,eAAe,mBAAmBC,SAAS,cAAc,sBAAsB,6BAA6B,gBAAgB,uBAAuB,oBAAoB,uBAAuB,kBAAkB,sBAAsBC,OAAO,WAAWC,QAAQ,cAAc,kBAAkB,mBAAmB,2BAA2B,kCAAkC,6BAA6B,0BAA0B,eAAe,6BAA6B,gFAAgF,4HAA4H,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,WAAWC,WAAW,WAAW,mBAAmB,iBAAiBC,OAAO,QAAQ7H,MAAM,OAAO8H,OAAO,YAAYE,MAAM,QAAQ,eAAe,mBAAmB,kBAAkB,eAAeE,KAAK,QAAQ,iBAAiB,8BAA8B,aAAa,oBAAoBC,QAAQ,SAAS,kBAAkB,4BAA4B,gBAAgB,iBAAiB,gBAAgB,sBAAsBE,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,cAAcC,SAAS,aAAa,oBAAoB,6BAA6B,kBAAkB,uBAAuBE,QAAQ,OAAO,kBAAkB,qBAAqB,6BAA6B,6BAA6B,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,mBAAmBC,QAAQ,SAASC,WAAW,WAAW,mBAAmB,mBAAmB,kEAAkE,yFAAyF,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,oBAAoB,eAAe,qBAAqBC,OAAO,SAAS,aAAa,oBAAoB7H,MAAM,SAAS,cAAc,6BAA6B,mBAAmB,wBAAwB,gBAAgB,2BAA2B,kBAAkB,qBAAqB8H,OAAO,iBAAiB,YAAY,sBAAsB,kCAAkC,yCAAyC,oBAAoB,+BAA+B,qCAAqC,qCAAqCC,SAAS,YAAYC,MAAM,WAAW,eAAe,iBAAiB,kBAAkB,qBAAqBC,OAAO,UAAU,sBAAsB,mBAAmB,gBAAgB,uBAAuB,8CAA8C,qDAAqD,eAAe,mBAAmBC,KAAK,aAAa,iBAAiB,uBAAuB,aAAa,mBAAmBC,QAAQ,UAAUC,KAAK,OAAO,iCAAiC,mCAAmC,kBAAkB,sBAAsB,qBAAqB,uBAAuB,kBAAkB,yBAAyB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,6BAA6B,0CAA0CC,SAAS,aAAa,oBAAoB,oBAAoBC,OAAO,QAAQ,iBAAiB,uBAAuB,eAAe,yBAAyBC,SAAS,eAAe,sBAAsB,iCAAiC,gBAAgB,qBAAqB,oBAAoB,sBAAsB,kBAAkB,sBAAsBC,OAAO,QAAQC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,oCAAoC,6BAA6B,gCAAgC,eAAe,yBAAyB,gFAAgF,0GAA0G,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,UAAU,mBAAmB,QAAQ,kEAAkE,+BAA+B,0BAA0B,sBAAsB,oCAAoC,gCAAgC,iBAAiB,WAAW,eAAe,UAAUC,OAAO,KAAK,aAAa,WAAW7H,MAAM,MAAM,cAAc,WAAW,mBAAmB,cAAc,gBAAgB,YAAY,kBAAkB,QAAQ8H,OAAO,OAAO,YAAY,KAAK,kCAAkC,eAAe,oBAAoB,YAAY,qCAAqC,mBAAmBC,SAAS,QAAQC,MAAM,KAAK,eAAe,UAAU,kBAAkB,SAASC,OAAO,KAAK,sBAAsB,SAAS,gBAAgB,YAAY,8CAA8C,4BAA4B,eAAe,SAASC,KAAK,IAAI,iBAAiB,cAAc,aAAa,KAAKC,QAAQ,IAAIC,KAAK,KAAK,iCAAiC,2BAA2B,kBAAkB,aAAa,qBAAqB,iBAAiB,kBAAkB,eAAe,gBAAgB,YAAY,gBAAgB,SAAS,6BAA6B,iBAAiBC,SAAS,IAAI,oBAAoB,SAASC,OAAO,KAAK,iBAAiB,OAAO,eAAe,QAAQC,SAAS,KAAK,sBAAsB,YAAY,gBAAgB,WAAW,oBAAoB,OAAO,kBAAkB,aAAaC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,QAAQ,2BAA2B,sBAAsB,6BAA6B,eAAe,eAAe,UAAU,gFAAgF,wCAAwC,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,mBAAmBC,QAAQ,WAAWC,WAAW,UAAU,mBAAmB,mBAAmBC,OAAO,aAAa7H,MAAM,UAAU8H,OAAO,WAAW,qCAAqC,gCAAgCE,MAAM,WAAW,eAAe,qBAAqB,kBAAkB,sBAAsB,8CAA8C,yCAAyCE,KAAK,QAAQ,iBAAiB,mBAAmB,aAAa,iBAAiBC,QAAQ,WAAW,kBAAkB,8BAA8B,gBAAgB,kBAAkB,gBAAgB,sBAAsBE,SAAS,aAAaC,OAAO,UAAU,iBAAiB,sBAAsB,eAAe,kBAAkBC,SAAS,aAAa,sBAAsB,wBAAwB,oBAAoB,uBAAuB,kBAAkB,0BAA0BC,OAAO,WAAWC,QAAQ,YAAY,kBAAkB,qBAAqB,6BAA6B,mCAAmC,wCAAwC,0DAA0D,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBG,OAAO,aAAa7H,MAAM,UAAUkI,KAAK,WAAW,aAAa,gBAAgB,kBAAkB,mBAAmBG,SAAS,gBAAgB,eAAe,mBAAmBE,SAAS,cAAc,kBAAkB,mBAAmB,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,QAAQC,WAAW,aAAa,mBAAmB,oBAAoB,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,sBAAsB,eAAe,iBAAiBC,OAAO,SAAS7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,qBAAqB,kBAAkB,uBAAuB8H,OAAO,cAAc,YAAY,QAAQ,qCAAqC,sCAAsCC,SAAS,WAAWC,MAAM,UAAU,eAAe,mBAAmB,kBAAkB,qBAAqBC,OAAO,WAAW,sBAAsB,sBAAsBS,MAAM,SAAS,8CAA8C,2EAA2E,6BAA6B,+BAA+BR,KAAK,SAAS,iBAAiB,6BAA6B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,kBAAkB,oBAAoB,kBAAkB,mBAAmB,gBAAgB,cAAc,gBAAgB,kBAAkB,6BAA6B,2BAA2BC,SAAS,YAAYC,OAAO,QAAQ,iBAAiB,0BAA0B,eAAe,gBAAgBC,SAAS,YAAY,sBAAsB,0BAA0B,oBAAoB,wBAAwB,kBAAkB,qBAAqBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,0CAA0C,6BAA6B,gCAAgC,eAAe,qBAAqB,oEAAoE,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,oBAAoBC,WAAW,qBAAqB,mBAAmB,0BAA0B,0BAA0B,4BAA4B,iBAAiB,8BAA8BC,OAAO,cAAc7H,MAAM,UAAU,kBAAkB,8BAA8B8H,OAAO,oBAAoB,qCAAqC,mCAAmCE,MAAM,UAAU,eAAe,aAAa,kBAAkB,oBAAoBC,OAAO,mBAAmB,8CAA8C,2CAA2CC,KAAK,kBAAkB,iBAAiB,8BAA8B,aAAa,aAAaC,QAAQ,eAAe,kBAAkB,0BAA0B,gBAAgB,kCAAkC,gBAAgB,kBAAkB,6BAA6B,+BAA+BE,SAAS,OAAOC,OAAO,YAAY,iBAAiB,qBAAqB,eAAe,kBAAkBC,SAAS,mBAAmB,sBAAsB,sBAAsB,oBAAoB,+BAA+B,kBAAkB,yBAAyBC,OAAO,cAAcC,QAAQ,cAAc,kBAAkB,gCAAgC,2BAA2B,yCAAyC,6BAA6B,6BAA6B,wCAAwC,4DAA4D,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,aAAaC,WAAW,cAAc,mBAAmB,eAAe,kEAAkE,sDAAsD,0BAA0B,6BAA6B,oCAAoC,mCAAmC,iBAAiB,mBAAmB,eAAe,eAAeC,OAAO,OAAO,aAAa,cAAc7H,MAAM,OAAO,cAAc,aAAa,mBAAmB,kBAAkB,gBAAgB,iBAAiB,kBAAkB,oBAAoB8H,OAAO,YAAY,YAAY,UAAU,kCAAkC,0CAA0C,oBAAoB,0BAA0B,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,QAAQ,eAAe,gBAAgB,kBAAkB,aAAaC,OAAO,SAAS,sBAAsB,wBAAwB,gBAAgB,gBAAgB,8CAA8C,6CAA6C,eAAe,uBAAuBC,KAAK,QAAQ,iBAAiB,mBAAmB,aAAa,mBAAmBC,QAAQ,WAAWC,KAAK,OAAO,iCAAiC,kCAAkC,kBAAkB,kBAAkB,qBAAqB,uBAAuB,kBAAkB,4BAA4B,gBAAgB,qBAAqB,gBAAgB,gBAAgB,6BAA6B,0BAA0BC,SAAS,UAAU,oBAAoB,sBAAsBC,OAAO,MAAM,iBAAiB,iBAAiB,eAAe,oBAAoBC,SAAS,gBAAgB,sBAAsB,0BAA0B,gBAAgB,cAAc,oBAAoB,wBAAwB,kBAAkB,4BAA4BC,OAAO,OAAOC,QAAQ,WAAW,kBAAkB,kBAAkB,2BAA2B,iCAAiC,6BAA6B,4BAA4B,eAAe,yBAAyB,gFAAgF,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,SAASC,WAAW,eAAe,mBAAmB,kBAAkB,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,wBAAwBC,OAAO,OAAO7H,MAAM,UAAU,mBAAmB,oBAAoB,kBAAkB,yBAAyB8H,OAAO,YAAY,YAAY,gBAAgB,qCAAqC,oCAAoCE,MAAM,UAAU,eAAe,iBAAiB,kBAAkB,gBAAgBC,OAAO,UAAU,sBAAsB,yBAAyB,8CAA8C,8CAA8CC,KAAK,WAAW,iBAAiB,sBAAsB,aAAa,kBAAkBC,QAAQ,WAAW,kBAAkB,mBAAmB,kBAAkB,0BAA0B,gBAAgB,mBAAmB,gBAAgB,iBAAiB,6BAA6B,0BAA0BE,SAAS,SAASC,OAAO,SAAS,iBAAiB,iBAAiB,eAAe,sBAAsBC,SAAS,eAAe,sBAAsB,yBAAyB,oBAAoB,mBAAmB,kBAAkB,wBAAwBC,OAAO,YAAYC,QAAQ,WAAW,kBAAkB,oBAAoB,2BAA2B,gCAAgC,6BAA6B,8BAA8B,eAAe,6BAA6B,oEAAoE,4EAA4E,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,gBAAgBC,QAAQ,UAAUE,OAAO,SAAS7H,MAAM,SAASkI,KAAK,UAAU,aAAa,kBAAkB,kBAAkB,8BAA8BG,SAAS,YAAY,eAAe,2BAA2BE,SAAS,aAAa,kBAAkB,wBAAwB,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,sBAAsBC,QAAQ,YAAYC,WAAW,YAAY,mBAAmB,qBAAqB,kEAAkE,2EAA2E,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,gBAAgB,eAAe,cAAcC,OAAO,UAAU,aAAa,gBAAgB7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,mBAAmB8H,OAAO,YAAY,YAAY,iBAAiB,kCAAkC,8CAA8C,oBAAoB,gCAAgC,qCAAqC,sCAAsCC,SAAS,WAAWC,MAAM,QAAQ,eAAe,mBAAmB,kBAAkB,iBAAiBC,OAAO,YAAY,sBAAsB,kBAAkB,gBAAgB,cAAc,8CAA8C,yDAAyD,eAAe,kBAAkBC,KAAK,WAAW,iBAAiB,uBAAuB,aAAa,eAAeC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,mBAAmB,qBAAqB,wBAAwB,kBAAkB,0BAA0B,gBAAgB,iBAAiB,gBAAgB,gBAAgB,6BAA6B,0BAA0BC,SAAS,YAAY,oBAAoB,mBAAmBC,OAAO,SAAS,iBAAiB,sBAAsB,eAAe,mBAAmBC,SAAS,aAAa,sBAAsB,uBAAuB,gBAAgB,cAAc,oBAAoB,oBAAoB,kBAAkB,2BAA2BC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,6BAA6B,eAAe,gBAAgB,gFAAgF,gFAAgF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,QAAQC,WAAW,aAAa,mBAAmB,qBAAqB,kEAAkE,2EAA2E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,sBAAsB,eAAe,iBAAiBC,OAAO,WAAW,aAAa,eAAe7H,MAAM,SAAS,cAAc,eAAe,mBAAmB,mBAAmB,gBAAgB,uBAAuB,kBAAkB,uBAAuB8H,OAAO,gBAAgB,YAAY,cAAc,kCAAkC,sCAAsC,oBAAoB,uBAAuB,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,cAAcC,OAAO,SAAS,sBAAsB,qBAAqB,gBAAgB,kBAAkB,8CAA8C,oDAAoD,eAAe,eAAeC,KAAK,UAAU,iBAAiB,0BAA0B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,oCAAoC,kBAAkB,kBAAkB,qBAAqB,mBAAmB,kBAAkB,gCAAgC,gBAAgB,kBAAkB,gBAAgB,mBAAmB,6BAA6B,8BAA8BC,SAAS,WAAW,oBAAoB,wBAAwBC,OAAO,YAAY,iBAAiB,yBAAyB,eAAe,qBAAqBC,SAAS,gBAAgB,sBAAsB,6BAA6B,gBAAgB,gBAAgB,oBAAoB,mBAAmB,kBAAkB,iCAAiCC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,wCAAwC,6BAA6B,qCAAqC,eAAe,wBAAwB,gFAAgF,uFAAuF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,mBAAmBC,QAAQ,QAAQE,OAAO,WAAW7H,MAAM,SAASkI,KAAK,WAAW,aAAa,iBAAiB,kBAAkB,mBAAmBG,SAAS,WAAW,eAAe,0BAA0BE,SAAS,aAAa,kBAAkB,oBAAoB,6BAA6B,qCAAqC,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,wBAAwBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,oBAAoB,kEAAkE,0EAA0E,0BAA0B,6BAA6B,oCAAoC,uCAAuC,iBAAiB,wBAAwB,eAAe,oBAAoBC,OAAO,UAAU,aAAa,gBAAgB7H,MAAM,YAAY,cAAc,oBAAoB,mBAAmB,sBAAsB,gBAAgB,wBAAwB,kBAAkB,0BAA0B8H,OAAO,eAAe,YAAY,oBAAoB,kCAAkC,0CAA0C,oBAAoB,4BAA4B,qCAAqC,sCAAsCC,SAAS,UAAUC,MAAM,UAAU,eAAe,sBAAsB,kBAAkB,qBAAqBC,OAAO,SAAS,sBAAsB,yBAAyB,gBAAgB,iBAAiB,8CAA8C,sDAAsD,eAAe,yBAAyBC,KAAK,YAAY,iBAAiB,4BAA4B,aAAa,sBAAsBC,QAAQ,UAAUC,KAAK,aAAa,iCAAiC,yCAAyC,kBAAkB,uBAAuB,qBAAqB,qBAAqB,kBAAkB,kCAAkC,gBAAgB,iBAAiB,gBAAgB,iBAAiB,6BAA6B,qCAAqCC,SAAS,WAAW,oBAAoB,iBAAiBC,OAAO,UAAU,iBAAiB,uBAAuB,eAAe,uBAAuBC,SAAS,SAAS,sBAAsB,kBAAkB,gBAAgB,eAAe,oBAAoB,oBAAoB,kBAAkB,sCAAsCC,OAAO,YAAYC,QAAQ,YAAY,kBAAkB,sBAAsB,2BAA2B,oCAAoC,6BAA6B,qCAAqC,eAAe,yBAAyB,gFAAgF,iHAAiH,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,uBAAuBC,QAAQ,YAAYC,WAAW,UAAU,mBAAmB,sBAAsB,0BAA0B,uBAAuB,oCAAoC,qCAAqC,iBAAiB,qBAAqBC,OAAO,WAAW7H,MAAM,UAAU,cAAc,yBAAyB,mBAAmB,oBAAoB,kBAAkB,wBAAwB8H,OAAO,mBAAmB,YAAY,mBAAmB,qCAAqC,mCAAmCE,MAAM,QAAQ,eAAe,eAAe,kBAAkB,qBAAqBC,OAAO,aAAa,sBAAsB,qBAAqBS,MAAM,YAAY,8CAA8C,0DAA0D,6BAA6B,+BAA+BR,KAAK,YAAY,iBAAiB,oBAAoB,aAAa,wBAAwBC,QAAQ,UAAUC,KAAK,UAAU,kBAAkB,oBAAoB,kBAAkB,6BAA6B,gBAAgB,cAAc,gBAAgB,kBAAkB,6BAA6B,qCAAqCC,SAAS,aAAaC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,iBAAiBC,SAAS,YAAY,sBAAsB,0BAA0B,oBAAoB,oBAAoB,kBAAkB,uBAAuBC,OAAO,YAAYC,QAAQ,UAAU,kBAAkB,sBAAsB,2BAA2B,oCAAoC,6BAA6B,0BAA0B,eAAe,qBAAqB,oEAAoE,qFAAqF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,oBAAoBC,QAAQ,QAAQC,WAAW,WAAW,mBAAmB,qBAAqB,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,eAAeC,OAAO,SAAS7H,MAAM,WAAW,mBAAmB,oBAAoB,kBAAkB,iBAAiB8H,OAAO,OAAO,YAAY,kBAAkB,qCAAqC,mCAAmCE,MAAM,SAAS,eAAe,iBAAiB,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,mBAAmB,8CAA8C,4CAA4CC,KAAK,QAAQ,iBAAiB,2BAA2B,aAAa,kBAAkBC,QAAQ,UAAU,kBAAkB,oBAAoB,kBAAkB,yBAAyB,gBAAgB,eAAe,gBAAgB,oBAAoB,6BAA6B,8BAA8BE,SAAS,iBAAiBC,OAAO,SAAS,iBAAiB,wBAAwB,eAAe,gBAAgBC,SAAS,aAAa,sBAAsB,2BAA2B,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,sBAAsB,2BAA2B,8CAA8C,6BAA6B,8BAA8B,eAAe,eAAe,oEAAoE,0FAA0F,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,kBAAkBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,0BAA0B,uBAAuB,oCAAoC,yCAAyC,iBAAiB,qBAAqB,eAAe,iBAAiBC,OAAO,QAAQ,aAAa,mBAAmB7H,MAAM,QAAQ,cAAc,qBAAqB,mBAAmB,mBAAmB,gBAAgB,yBAAyB,kBAAkB,mBAAmB8H,OAAO,UAAU,YAAY,gBAAgB,kCAAkC,sCAAsC,qCAAqC,mCAAmCC,SAAS,eAAeC,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,oBAAoBC,OAAO,UAAU,sBAAsB,oBAAoB,gBAAgB,cAAc,8CAA8C,iDAAiD,eAAe,oBAAoBC,KAAK,YAAY,iBAAiB,4BAA4B,aAAa,cAAcC,QAAQ,WAAWC,KAAK,QAAQ,iCAAiC,sCAAsC,kBAAkB,mBAAmB,qBAAqB,iBAAiB,kBAAkB,sBAAsB,gBAAgB,iBAAiB,cAAc,eAAe,yBAAyB,uBAAuB,eAAe,eAAe,cAAc,aAAa,cAAc,cAAc,cAAc,aAAa,gBAAgB,sBAAsB,6BAA6B,wBAAwBC,SAAS,YAAY,oBAAoB,gBAAgBC,OAAO,UAAU,iBAAiB,kBAAkB,eAAe,eAAeC,SAAS,aAAa,sBAAsB,wBAAwB,gBAAgB,eAAe,oBAAoB,gBAAgB,kBAAkB,qBAAqBC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,qBAAqB,2BAA2B,wCAAwC,6BAA6B,8BAA8B,eAAe,uBAAuB,oEAAoE,kGAAkG,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,qBAAqBC,QAAQ,SAASC,WAAW,aAAa,mBAAmB,sBAAsB,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,gBAAgB,eAAe,eAAeC,OAAO,YAAY7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,qBAAqB,gBAAgB,sBAAsB,kBAAkB,oBAAoB8H,OAAO,UAAU,YAAY,eAAe,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,UAAU,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,kBAAkBS,MAAM,SAAS,8CAA8C,yDAAyD,6BAA6B,8BAA8BR,KAAK,UAAU,iBAAiB,+BAA+B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,kBAAkB,oBAAoB,kBAAkB,qBAAqB,gBAAgB,eAAe,gBAAgB,iBAAiB,6BAA6B,mCAAmCC,SAAS,YAAYC,OAAO,WAAW,iBAAiB,qBAAqB,eAAe,mBAAmBC,SAAS,WAAW,sBAAsB,6BAA6B,oBAAoB,mBAAmB,kBAAkB,oBAAoBC,OAAO,WAAWC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,+BAA+B,eAAe,kBAAkB,oEAAoE,iFAAiF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,eAAe,kEAAkE,oEAAoE,0BAA0B,wBAAwB,oCAAoC,kCAAkC,iBAAiB,mBAAmB,eAAe,cAAcC,OAAO,OAAO,aAAa,eAAe7H,MAAM,QAAQ,cAAc,cAAc,mBAAmB,mBAAmB,gBAAgB,kBAAkB,kBAAkB,qBAAqB8H,OAAO,WAAW,YAAY,QAAQ,kCAAkC,wCAAwC,oBAAoB,2BAA2B,qCAAqC,mCAAmCC,SAAS,UAAUC,MAAM,UAAU,eAAe,cAAc,kBAAkB,eAAeC,OAAO,SAAS,sBAAsB,0BAA0B,gBAAgB,kBAAkB,8CAA8C,yCAAyC,eAAe,cAAcC,KAAK,QAAQ,iBAAiB,sBAAsB,aAAa,gBAAgBC,QAAQ,SAASC,KAAK,QAAQ,iCAAiC,oCAAoC,kBAAkB,mBAAmB,qBAAqB,wBAAwB,kBAAkB,mBAAmB,gBAAgB,eAAe,gBAAgB,gBAAgB,6BAA6B,gBAAgBC,SAAS,aAAa,oBAAoB,sBAAsBC,OAAO,MAAM,iBAAiB,cAAc,eAAe,cAAcC,SAAS,gBAAgB,sBAAsB,mBAAmB,gBAAgB,mBAAmB,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,wBAAwB,2BAA2B,8BAA8B,6BAA6B,4BAA4B,eAAe,kBAAkB,gFAAgF,kGAAkG,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,kBAAkBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,oBAAoB,kEAAkE,4DAA4D,0BAA0B,wBAAwB,oCAAoC,kCAAkC,iBAAiB,0BAA0B,eAAe,mBAAmBC,OAAO,QAAQ,aAAa,gBAAgB7H,MAAM,QAAQ,cAAc,8BAA8B,mBAAmB,kBAAkB,gBAAgB,mBAAmB,kBAAkB,wBAAwB8H,OAAO,OAAO,YAAY,gBAAgB,kCAAkC,yCAAyC,oBAAoB,6BAA6B,qCAAqC,4BAA4BC,SAAS,0BAA0BC,MAAM,YAAY,eAAe,eAAe,kBAAkB,oBAAoBC,OAAO,WAAW,sBAAsB,cAAc,gBAAgB,iBAAiB,8CAA8C,2CAA2C,eAAe,gBAAgBC,KAAK,UAAU,iBAAiB,gCAAgC,aAAa,gCAAgCC,QAAQ,WAAWC,KAAK,KAAK,iCAAiC,oCAAoC,kBAAkB,eAAe,qBAAqB,iBAAiB,kBAAkB,0BAA0B,gBAAgB,oBAAoB,gBAAgB,kBAAkB,6BAA6B,gCAAgCC,SAAS,SAAS,oBAAoB,mBAAmBC,OAAO,QAAQ,iBAAiB,kBAAkB,eAAe,mBAAmBC,SAAS,UAAU,sBAAsB,mBAAmB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,wBAAwBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,iBAAiB,2BAA2B,2CAA2C,6BAA6B,0BAA0B,eAAe,yBAAyB,gFAAgF,mFAAmF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,MAAMC,WAAW,aAAa,mBAAmB,qBAAqB,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,mBAAmB,aAAa,iBAAiB7H,MAAM,UAAU,cAAc,iBAAiB,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,oBAAoB8H,OAAO,SAAS,YAAY,qBAAqB,qCAAqC,oCAAoCC,SAAS,YAAYC,MAAM,UAAU,eAAe,eAAe,kBAAkB,aAAaC,OAAO,aAAa,sBAAsB,wBAAwB,gBAAgB,mBAAmBS,MAAM,WAAW,8CAA8C,sDAAsD,6BAA6B,8BAA8BR,KAAK,SAAS,iBAAiB,oBAAoB,aAAa,sBAAsBC,QAAQ,UAAUC,KAAK,WAAW,kBAAkB,qBAAqB,qBAAqB,mBAAmB,kBAAkB,yBAAyB,gBAAgB,gBAAgB,gBAAgB,oBAAoB,6BAA6B,yBAAyBC,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,oBAAoBC,SAAS,eAAe,sBAAsB,4BAA4B,gBAAgB,kBAAkB,oBAAoB,mBAAmB,kBAAkB,uBAAuBC,OAAO,YAAYC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,kCAAkC,6BAA6B,2BAA2B,eAAe,kBAAkB,oEAAoE,+EAA+E,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,cAAc,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,UAAU,kEAAkE,qBAAqB,0BAA0B,mBAAmB,oCAAoC,4BAA4B,iBAAiB,OAAO,eAAe,OAAOC,OAAO,KAAK,aAAa,OAAO7H,MAAM,KAAK,cAAc,OAAO,mBAAmB,OAAO,gBAAgB,QAAQ,kBAAkB,OAAO8H,OAAO,MAAM,YAAY,OAAO,kCAAkC,YAAY,oBAAoB,aAAa,qCAAqC,eAAeC,SAAS,KAAKC,MAAM,KAAK,eAAe,UAAU,kBAAkB,OAAOC,OAAO,KAAK,sBAAsB,QAAQ,gBAAgB,OAAO,8CAA8C,uBAAuB,eAAe,QAAQC,KAAK,MAAM,iBAAiB,QAAQ,aAAa,MAAMC,QAAQ,KAAKC,KAAK,KAAK,iCAAiC,yBAAyB,kBAAkB,OAAO,qBAAqB,OAAO,kBAAkB,QAAQ,gBAAgB,SAAS,gBAAgB,SAAS,6BAA6B,WAAWC,SAAS,MAAM,oBAAoB,OAAOC,OAAO,KAAK,iBAAiB,OAAO,eAAe,SAASC,SAAS,KAAK,sBAAsB,OAAO,gBAAgB,OAAO,oBAAoB,UAAU,kBAAkB,QAAQC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,UAAU,2BAA2B,UAAU,6BAA6B,SAAS,eAAe,OAAO,gFAAgF,uCAAuC,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,QAAQ,kEAAkE,sBAAsB,0BAA0B,oBAAoB,oCAAoC,6BAA6B,iBAAiB,OAAO,eAAe,OAAOC,OAAO,KAAK,aAAa,OAAO7H,MAAM,KAAK,cAAc,OAAO,mBAAmB,OAAO,gBAAgB,QAAQ,kBAAkB,OAAO8H,OAAO,MAAM,YAAY,OAAO,kCAAkC,WAAW,oBAAoB,aAAa,qCAAqC,gBAAgBC,SAAS,KAAKC,MAAM,KAAK,eAAe,QAAQ,kBAAkB,OAAOC,OAAO,MAAM,sBAAsB,OAAO,gBAAgB,OAAO,8CAA8C,uBAAuB,eAAe,SAASC,KAAK,MAAM,iBAAiB,UAAU,aAAa,MAAMC,QAAQ,KAAKC,KAAK,KAAK,iCAAiC,6BAA6B,kBAAkB,OAAO,qBAAqB,SAAS,kBAAkB,QAAQ,gBAAgB,KAAK,gBAAgB,SAAS,6BAA6B,SAASC,SAAS,MAAM,oBAAoB,OAAOC,OAAO,KAAK,iBAAiB,OAAO,eAAe,OAAOC,SAAS,KAAK,sBAAsB,QAAQ,gBAAgB,OAAO,oBAAoB,KAAK,kBAAkB,QAAQC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,QAAQ,2BAA2B,UAAU,6BAA6B,SAAS,eAAe,OAAO,gFAAgF,2CAA2C,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,QAAQC,OAAO,KAAK7H,MAAM,KAAK8H,OAAO,MAAME,MAAM,KAAK,eAAe,QAAQ,kBAAkB,OAAO,8CAA8C,uBAAuBE,KAAK,MAAM,iBAAiB,UAAU,aAAa,MAAMC,QAAQ,KAAK,kBAAkB,QAAQ,gBAAgB,KAAK,gBAAgB,SAASE,SAAS,MAAMC,OAAO,KAAK,iBAAiB,OAAO,eAAe,OAAOC,SAAS,KAAK,sBAAsB,QAAQ,oBAAoB,KAAK,kBAAkB,QAAQE,QAAQ,KAAK,kBAAkB,QAAQ,6BAA6B,SAAS,wCAAwC,yBAAyBE,SAASlV,IAAI,MAAMC,EAAE,CAAC,EAAE,IAAI,MAAMG,KAAKJ,EAAEiU,aAAajU,EAAEiU,aAAa7T,GAAG+U,SAASlV,EAAEG,GAAG,CAACgV,MAAMhV,EAAEiV,aAAarV,EAAEiU,aAAa7T,GAAG+U,SAASG,OAAOtV,EAAEiU,aAAa7T,GAAGkV,QAAQrV,EAAEG,GAAG,CAACgV,MAAMhV,EAAEkV,OAAO,CAACtV,EAAEiU,aAAa7T,KAAKK,EAAE8U,eAAevV,EAAEgU,OAAO,CAACC,aAAa,CAAC,GAAGhU,IAAK,IAAG,MAAMS,EAAED,EAAE+U,QAAQ7U,GAAGD,EAAE+U,SAASpL,KAAK3J,GAAGA,EAAEgV,QAAQrL,KAAK3J,GAAE,EAAG,KAAK,CAACV,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI7C,IAAI,MAAMA,EAAER,GAAGmW,KAAKC,SAASzM,SAAS,IAAI0M,QAAQ,WAAW,IAAIpM,MAAM,EAAEjK,GAAG,EAAC,EAAG,KAAK,CAACA,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoQ,EAAE,IAAI7P,IAAIJ,EAAE,MAAM,MAAMI,EAAE,WAAW,OAAOkC,OAAO+T,OAAO7P,OAAO,CAAC8P,eAAe9P,OAAO8P,gBAAgB,KAAK9P,OAAO8P,cAAc,GAAG,KAAK,CAAC1W,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,woCAAwoC,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,wQAAwQC,eAAe,CAAC,kNAAkN,mmCAAmmCC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,ocAAoc,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,yIAAyIC,eAAe,CAAC,kNAAkN,yfAAyfC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,ggDAAggD,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,2DAA2D,yCAAyCC,MAAM,GAAGC,SAAS,2dAA2dC,eAAe,CAAC,kNAAkN,8vDAA8vD,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,4rIAA4rI,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,mDAAmD,yCAAyCC,MAAM,GAAGC,SAAS,8qCAA8qCC,eAAe,CAAC,kNAAkN,ojKAAojK,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMK,EAAEL,EAAEM,EAAEF,GAAGE,EAAEN,EAAE,MAAMO,EAAEP,EAAEM,EAAEA,EAAJN,GAASK,KAAKE,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,87DAA87D,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,4sBAA4sBC,eAAe,CAAC,kNAAkN,mtEAAmtEC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAKX,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAE,GAAG,OAAOA,EAAE0J,SAAS,WAAW,OAAO1G,KAAKpD,KAAI,SAAUI,GAAG,IAAIG,EAAE,GAAGI,OAAE,IAASP,EAAE,GAAG,OAAOA,EAAE,KAAKG,GAAG,cAAcgD,OAAOnD,EAAE,GAAG,QAAQA,EAAE,KAAKG,GAAG,UAAUgD,OAAOnD,EAAE,GAAG,OAAOO,IAAIJ,GAAG,SAASgD,OAAOnD,EAAE,GAAGmE,OAAO,EAAE,IAAIhB,OAAOnD,EAAE,IAAI,GAAG,OAAOG,GAAGJ,EAAEC,GAAGO,IAAIJ,GAAG,KAAKH,EAAE,KAAKG,GAAG,KAAKH,EAAE,KAAKG,GAAG,KAAKA,CAAE,IAAGL,KAAK,GAAG,EAAEE,EAAEQ,EAAE,SAAST,EAAEI,EAAEI,EAAEC,EAAEC,GAAG,iBAAiBV,IAAIA,EAAE,CAAC,CAAC,KAAKA,OAAE,KAAU,IAAIW,EAAE,CAAC,EAAE,GAAGH,EAAE,IAAI,IAAII,EAAE,EAAEA,EAAEqC,KAAKmB,OAAOxD,IAAI,CAAC,IAAIC,EAAEoC,KAAKrC,GAAG,GAAG,MAAMC,IAAIF,EAAEE,IAAG,EAAG,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAEd,EAAEoE,OAAOtD,IAAI,CAAC,IAAIC,EAAE,GAAGqC,OAAOpD,EAAEc,IAAIN,GAAGG,EAAEI,EAAE,WAAM,IAASL,SAAI,IAASK,EAAE,KAAKA,EAAE,GAAG,SAASqC,OAAOrC,EAAE,GAAGqD,OAAO,EAAE,IAAIhB,OAAOrC,EAAE,IAAI,GAAG,MAAMqC,OAAOrC,EAAE,GAAG,MAAMA,EAAE,GAAGL,GAAGN,IAAIW,EAAE,IAAIA,EAAE,GAAG,UAAUqC,OAAOrC,EAAE,GAAG,MAAMqC,OAAOrC,EAAE,GAAG,KAAKA,EAAE,GAAGX,GAAGW,EAAE,GAAGX,GAAGK,IAAIM,EAAE,IAAIA,EAAE,GAAG,cAAcqC,OAAOrC,EAAE,GAAG,OAAOqC,OAAOrC,EAAE,GAAG,KAAKA,EAAE,GAAGN,GAAGM,EAAE,GAAG,GAAGqC,OAAO3C,IAAIR,EAAEsW,KAAKxV,GAAG,CAAC,EAAEd,CAAC,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAED,EAAE,GAAGI,EAAEJ,EAAE,GAAG,IAAII,EAAE,OAAOH,EAAE,GAAG,mBAAmBgX,KAAK,CAAC,IAAIzW,EAAEyW,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAUhX,MAAMK,EAAE,+DAA+D2C,OAAO5C,GAAGE,EAAE,OAAO0C,OAAO3C,EAAE,OAAO,MAAM,CAACR,GAAGmD,OAAO,CAAC1C,IAAIX,KAAK,KAAK,CAAC,MAAM,CAACE,GAAGF,KAAK,KAAK,GAAG,KAAKC,IAAI,aAAa,IAAIC,EAAE,GAAG,SAASG,EAAEJ,GAAG,IAAI,IAAII,GAAG,EAAEI,EAAE,EAAEA,EAAEP,EAAEmE,OAAO5D,IAAI,GAAGP,EAAEO,GAAG6W,aAAarX,EAAE,CAACI,EAAEI,EAAE,KAAK,CAAC,OAAOJ,CAAC,CAAC,SAASI,EAAER,EAAEQ,GAAG,IAAI,IAAIE,EAAE,CAAC,EAAEC,EAAE,GAAGC,EAAE,EAAEA,EAAEZ,EAAEoE,OAAOxD,IAAI,CAAC,IAAIC,EAAEb,EAAEY,GAAGE,EAAEN,EAAE8W,KAAKzW,EAAE,GAAGL,EAAE8W,KAAKzW,EAAE,GAAGE,EAAEL,EAAEI,IAAI,EAAET,EAAE,GAAG+C,OAAOtC,EAAE,KAAKsC,OAAOrC,GAAGL,EAAEI,GAAGC,EAAE,EAAE,IAAImG,EAAE9G,EAAEC,GAAGW,EAAE,CAACuW,IAAI1W,EAAE,GAAG2W,MAAM3W,EAAE,GAAG4W,UAAU5W,EAAE,GAAG6W,SAAS7W,EAAE,GAAG8W,MAAM9W,EAAE,IAAI,IAAI,IAAIqG,EAAEjH,EAAEiH,GAAG0Q,aAAa3X,EAAEiH,GAAG2Q,QAAQ7W,OAAO,CAAC,IAAIoG,EAAE3G,EAAEO,EAAER,GAAGA,EAAEsX,QAAQlX,EAAEX,EAAE8X,OAAOnX,EAAE,EAAE,CAACyW,WAAWhX,EAAEwX,QAAQzQ,EAAEwQ,WAAW,GAAG,CAACjX,EAAE4V,KAAKlW,EAAE,CAAC,OAAOM,CAAC,CAAC,SAASF,EAAET,EAAEC,GAAG,IAAIG,EAAEH,EAAEqK,OAAOrK,GAAe,OAAZG,EAAE4X,OAAOhY,GAAU,SAASC,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAEsX,MAAMvX,EAAEuX,KAAKtX,EAAEuX,QAAQxX,EAAEwX,OAAOvX,EAAEwX,YAAYzX,EAAEyX,WAAWxX,EAAEyX,WAAW1X,EAAE0X,UAAUzX,EAAE0X,QAAQ3X,EAAE2X,MAAM,OAAOvX,EAAE4X,OAAOhY,EAAEC,EAAE,MAAMG,EAAE2F,QAAQ,CAAC,CAAC/F,EAAEN,QAAQ,SAASM,EAAES,GAAG,IAAIC,EAAEF,EAAER,EAAEA,GAAG,GAAGS,EAAEA,GAAG,CAAC,GAAG,OAAO,SAAST,GAAGA,EAAEA,GAAG,GAAG,IAAI,IAAIW,EAAE,EAAEA,EAAED,EAAE0D,OAAOzD,IAAI,CAAC,IAAIC,EAAER,EAAEM,EAAEC,IAAIV,EAAEW,GAAGgX,YAAY,CAAC,IAAI,IAAI/W,EAAEL,EAAER,EAAES,GAAGK,EAAE,EAAEA,EAAEJ,EAAE0D,OAAOtD,IAAI,CAAC,IAAIC,EAAEX,EAAEM,EAAEI,IAAI,IAAIb,EAAEc,GAAG6W,aAAa3X,EAAEc,GAAG8W,UAAU5X,EAAE8X,OAAOhX,EAAE,GAAG,CAACL,EAAEG,CAAC,CAAC,GAAG,IAAIb,IAAI,aAAa,IAAIC,EAAE,CAAC,EAAED,EAAEN,QAAQ,SAASM,EAAEI,GAAG,IAAII,EAAE,SAASR,GAAG,QAAG,IAASC,EAAED,GAAG,CAAC,IAAII,EAAEmC,SAASC,cAAcxC,GAAG,GAAG4G,OAAOqR,mBAAmB7X,aAAawG,OAAOqR,kBAAkB,IAAI7X,EAAEA,EAAE8X,gBAAgBC,IAAI,CAAC,MAAMnY,GAAGI,EAAE,IAAI,CAACH,EAAED,GAAGI,CAAC,CAAC,OAAOH,EAAED,EAAE,CAAhM,CAAkMA,GAAG,IAAIQ,EAAE,MAAM,IAAI4X,MAAM,2GAA2G5X,EAAEgP,YAAYpP,EAAE,GAAG,KAAKJ,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAEsC,SAAS8V,cAAc,SAAS,OAAOrY,EAAEmK,cAAclK,EAAED,EAAEsY,YAAYtY,EAAEoK,OAAOnK,EAAED,EAAE0T,SAASzT,CAAC,GAAG,KAAK,CAACD,EAAEC,EAAEG,KAAK,aAAaJ,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAEG,EAAEmY,GAAGtY,GAAGD,EAAEwW,aAAa,QAAQvW,EAAE,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,GAAG,oBAAoBuC,SAAS,MAAM,CAACyV,OAAO,WAAW,EAAEjS,OAAO,WAAW,GAAG,IAAI9F,EAAED,EAAEuK,mBAAmBvK,GAAG,MAAM,CAACgY,OAAO,SAAS5X,IAAI,SAASJ,EAAEC,EAAEG,GAAG,IAAII,EAAE,GAAGJ,EAAEsX,WAAWlX,GAAG,cAAc4C,OAAOhD,EAAEsX,SAAS,QAAQtX,EAAEoX,QAAQhX,GAAG,UAAU4C,OAAOhD,EAAEoX,MAAM,OAAO,IAAI/W,OAAE,IAASL,EAAEuX,MAAMlX,IAAID,GAAG,SAAS4C,OAAOhD,EAAEuX,MAAMvT,OAAO,EAAE,IAAIhB,OAAOhD,EAAEuX,OAAO,GAAG,OAAOnX,GAAGJ,EAAEmX,IAAI9W,IAAID,GAAG,KAAKJ,EAAEoX,QAAQhX,GAAG,KAAKJ,EAAEsX,WAAWlX,GAAG,KAAK,IAAIE,EAAEN,EAAEqX,UAAU/W,GAAG,oBAAoBuW,OAAOzW,GAAG,uDAAuD4C,OAAO6T,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAU1W,MAAM,QAAQT,EAAEiK,kBAAkB1J,EAAER,EAAEC,EAAEyT,QAAQ,CAAxe,CAA0ezT,EAAED,EAAEI,EAAE,EAAE2F,OAAO,YAAY,SAAS/F,GAAG,GAAG,OAAOA,EAAEwY,WAAW,OAAM,EAAGxY,EAAEwY,WAAWC,YAAYzY,EAAE,CAAvE,CAAyEC,EAAE,EAAE,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,EAAEC,GAAG,GAAGA,EAAEyY,WAAWzY,EAAEyY,WAAWC,QAAQ3Y,MAAM,CAAC,KAAKC,EAAE2Y,YAAY3Y,EAAEwY,YAAYxY,EAAE2Y,YAAY3Y,EAAEuP,YAAYjN,SAASsW,eAAe7Y,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,CAACA,EAAEC,EAAEG,KAAK,aAAa,SAASI,EAAER,EAAEC,EAAEG,EAAEI,EAAEC,EAAEC,EAAEC,EAAEC,GAAG,IAAIC,EAAEC,EAAE,mBAAmBd,EAAEA,EAAE0T,QAAQ1T,EAAE,GAAGC,IAAIa,EAAEuF,OAAOpG,EAAEa,EAAEgY,gBAAgB1Y,EAAEU,EAAEiY,WAAU,GAAIvY,IAAIM,EAAEkY,YAAW,GAAItY,IAAII,EAAEmY,SAAS,UAAUvY,GAAGC,GAAGE,EAAE,SAASb,IAAIA,EAAEA,GAAGiD,KAAKiW,QAAQjW,KAAKiW,OAAOC,YAAYlW,KAAKmW,QAAQnW,KAAKmW,OAAOF,QAAQjW,KAAKmW,OAAOF,OAAOC,aAAa,oBAAoBE,sBAAsBrZ,EAAEqZ,qBAAqB5Y,GAAGA,EAAE8H,KAAKtF,KAAKjD,GAAGA,GAAGA,EAAEsZ,uBAAuBtZ,EAAEsZ,sBAAsBtT,IAAIrF,EAAE,EAAEG,EAAEyY,aAAa1Y,GAAGJ,IAAII,EAAED,EAAE,WAAWH,EAAE8H,KAAKtF,MAAMnC,EAAEkY,WAAW/V,KAAKmW,OAAOnW,MAAMuW,MAAMC,SAASC,WAAW,EAAEjZ,GAAGI,EAAE,GAAGC,EAAEkY,WAAW,CAAClY,EAAE6Y,cAAc9Y,EAAE,IAAIE,EAAED,EAAEuF,OAAOvF,EAAEuF,OAAO,SAASrG,EAAEC,GAAG,OAAOY,EAAE0H,KAAKtI,GAAGc,EAAEf,EAAEC,EAAE,CAAC,KAAK,CAAC,IAAII,EAAES,EAAE8Y,aAAa9Y,EAAE8Y,aAAavZ,EAAE,GAAG+C,OAAO/C,EAAEQ,GAAG,CAACA,EAAE,CAAC,MAAM,CAACnB,QAAQM,EAAE0T,QAAQ5S,EAAE,CAACV,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI7C,GAAE,EAAG,KAAKR,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAyB,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAc,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAY,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAK,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAA4C,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAA8C,GAAIO,EAAE,CAAC,EAAE,SAASG,EAAEI,GAAG,IAAIC,EAAER,EAAEO,GAAG,QAAG,IAASC,EAAE,OAAOA,EAAEf,QAAQ,IAAIgB,EAAET,EAAEO,GAAG,CAACuJ,GAAGvJ,EAAEd,QAAQ,CAAC,GAAG,OAAOM,EAAEQ,GAAGE,EAAEA,EAAEhB,QAAQU,GAAGM,EAAEhB,OAAO,CAACU,EAAEM,EAAEV,IAAI,IAAIC,EAAED,GAAGA,EAAE6Z,WAAW,IAAI7Z,EAAEM,QAAQ,IAAIN,EAAE,OAAOI,EAAEC,EAAEJ,EAAE,CAACG,EAAEH,IAAIA,GAAGG,EAAEC,EAAE,CAACL,EAAEC,KAAK,IAAI,IAAIO,KAAKP,EAAEG,EAAEI,EAAEP,EAAEO,KAAKJ,EAAEI,EAAER,EAAEQ,IAAIkC,OAAOoX,eAAe9Z,EAAEQ,EAAE,CAACuZ,YAAW,EAAGC,IAAI/Z,EAAEO,IAAG,EAAGJ,EAAEI,EAAE,CAACR,EAAEC,IAAIyC,OAAOuX,UAAUC,eAAe3R,KAAKvI,EAAEC,GAAGG,EAAEO,EAAEX,IAAI,oBAAoBma,QAAQA,OAAOC,aAAa1X,OAAOoX,eAAe9Z,EAAEma,OAAOC,YAAY,CAAC7I,MAAM,WAAW7O,OAAOoX,eAAe9Z,EAAE,aAAa,CAACuR,OAAM,GAAG,EAAGnR,EAAEmY,QAAG,EAAO,IAAI/X,EAAE,CAAC,EAAE,MAAM,MAAM,aAAaJ,EAAEO,EAAEH,GAAGJ,EAAEC,EAAEG,EAAE,CAACF,QAAQ,IAAImI,IAAI,IAAIzI,EAAEI,EAAE,KAAKH,EAAEG,EAAE,MAAMK,EAAEL,EAAE,MAAMM,EAAEN,EAAEM,EAAED,GAAG,MAAME,EAAE,CAACM,KAAK,eAAeC,WAAW,CAACkL,UAAUpM,EAAEM,QAAQgM,aAAa5L,KAAKY,MAAM,CAACL,KAAK,CAACO,KAAKK,OAAOvB,QAAQ,MAAMqI,MAAM,CAACnH,KAAKK,OAAOvB,QAAQ,MAAM0K,GAAG,CAACxJ,KAAK,CAACK,OAAOa,QAAQpC,aAAQ,GAAQ2K,MAAM,CAACzJ,KAAKC,QAAQnB,SAAQ,GAAIoG,KAAK,CAAClF,KAAKK,OAAOvB,aAAQ,GAAQwH,KAAK,CAACtG,KAAKK,OAAOvB,QAAQ,IAAIyb,YAAY,CAACva,KAAKC,QAAQnB,SAAQ,GAAIoB,UAAU,CAACF,KAAKC,QAAQnB,SAAQ,GAAIiB,KAAK,CAACC,KAAKC,QAAQnB,SAAQ,IAAKwC,MAAM,CAAC,cAAc,WAAWC,KAAK,KAAI,CAAEiZ,UAAS,EAAGC,QAAQ,YAAY7Y,QAAO,EAAGnD,EAAEoD,QAAQC,SAAS,CAAC4Y,oBAAoB,OAAO,OAAOjZ,KAAKhC,MAAMiK,EAAQlE,KAAK,sFAAsF/D,KAAK0F,OAAO1F,KAAKhC,IAAI,EAAE6C,MAAM,OAAOb,KAAK+H,GAAG,cAAc,GAAG,EAAEmR,iBAAiB,OAAOlZ,KAAK+H,GAAG,CAACA,GAAG/H,KAAK+H,GAAGC,MAAMhI,KAAKgI,SAAShI,KAAKuI,QAAQ,CAAC9E,KAAKzD,KAAKyD,QAAQzD,KAAKuI,OAAO,GAAG/H,QAAQ,CAAC2Y,aAAapc,GAAGiD,KAAKgB,MAAM,cAAcjE,EAAE,EAAEqc,QAAQrc,GAAG,OAAOiD,KAAK8Y,cAAc9Y,KAAKgB,MAAM,UAAUjE,EAAEiD,KAAK+H,IAAI/H,KAAKyD,MAAMzD,KAAKqZ,QAAQrY,MAAM,UAAUjE,EAAEiD,KAAK+H,IAAI/H,KAAKyD,MAAMzD,KAAK+Y,UAAS,IAAI,CAAE,EAAEO,UAAUvc,GAAGiD,KAAK8Y,cAAc9Y,KAAK+Y,UAAS,EAAG,EAAEQ,UAAUxc,GAAGiD,KAAK8Y,aAAa/b,EAAEiF,OAAOwX,SAASzc,EAAE0c,gBAAgBzZ,KAAKoB,MAAMsY,MAAMF,SAASzc,EAAE0c,iBAAiBzZ,KAAK+Y,UAAS,EAAG,IAAI,IAAIpb,EAAER,EAAE,MAAMS,EAAET,EAAEM,EAAEE,GAAGE,EAAEV,EAAE,MAAMW,EAAEX,EAAEM,EAAEI,GAAGT,EAAED,EAAE,KAAK8G,EAAE9G,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,MAAMgH,EAAEhH,EAAEM,EAAEM,GAAGmG,EAAE/G,EAAE,MAAMiH,EAAEjH,EAAEM,EAAEyG,GAAGF,EAAE7G,EAAE,MAAMkH,EAAElH,EAAEM,EAAEuG,GAAGO,EAAEpH,EAAE,MAAMmH,EAAE,CAAC,EAAEA,EAAE2C,kBAAkB5C,IAAIC,EAAE4C,cAAc/C,IAAIG,EAAE6C,OAAOlD,IAAImD,KAAK,KAAK,QAAQ9C,EAAE+C,OAAOvJ,IAAIwG,EAAEgD,mBAAmBlD,IAAIxG,IAAI2G,EAAEnE,EAAEkE,GAAGC,EAAEnE,GAAGmE,EAAEnE,EAAEmH,QAAQhD,EAAEnE,EAAEmH,OAAO,IAAI/C,EAAErH,EAAE,MAAMsH,EAAEtH,EAAE,MAAMuH,EAAEvH,EAAEM,EAAEgH,GAAGE,GAAE,EAAGH,EAAEpE,GAAG1C,GAAE,WAAY,IAAIX,EAAEiD,KAAKhD,EAAED,EAAEmR,MAAMC,GAAG,OAAOnR,EAAE,KAAKD,EAAEwT,GAAG,CAAC1K,IAAI,QAAQF,YAAY,YAAYb,MAAM,CAAC,qBAAqB/H,EAAEgc,UAAUnT,MAAM,CAAC+T,UAAU,SAAS7T,GAAG,CAAC8T,UAAU,SAAS7c,GAAG,OAAOA,EAAE4F,kBAAiB,KAAO,GAAEgN,MAAM,KAAKzO,UAAU,EAAE2Y,KAAK,SAAS7c,GAAG,OAAOA,EAAE2F,iBAAiB5F,EAAEqc,QAAQzJ,MAAM,KAAKzO,UAAU,EAAE4Y,SAAS,SAAS/c,GAAG,OAAOA,EAAE4F,kBAAiB,KAAO,GAAEgN,MAAM,KAAKzO,UAAU,EAAE6Y,UAAUhd,EAAEuc,UAAUU,UAAUjd,EAAEwc,YAAY,KAAKxc,EAAEkd,GAAG,CAAC,EAAE,CAACld,EAAEic,QAAQ,MAAM,EAAEjc,EAAEkc,oBAAoBlc,EAAE8H,MAAM9H,EAAEsG,OAAOhG,QAAQN,EAAE4R,KAAK3R,EAAED,EAAE8D,IAAI9D,EAAEuT,GAAGvT,EAAEwT,GAAG,CAAC1P,IAAI,YAAY+E,MAAM,CAACF,MAAM3I,EAAE2I,QAAQ,YAAY3I,EAAEmc,gBAAe,GAAInc,EAAEyL,YAAY,CAACzL,EAAEqS,GAAG,QAAO,WAAY,MAAM,CAACrS,EAAE8H,KAAK7H,EAAE,OAAO,CAAC2I,YAAY,OAAOb,MAAM/H,EAAE8H,OAAO7H,EAAE,OAAO,CAACD,EAAE0R,GAAG1R,EAAE2R,GAAG3R,EAAEkc,sBAAuB,KAAI,GAAGlc,EAAE0R,GAAG,KAAK1R,EAAEsG,OAAOhG,QAAQL,EAAE,YAAY,CAAC6I,IAAI,UAAUD,MAAM,CAACrH,KAAK,WAAW,aAAaxB,EAAE0B,UAAUH,KAAKvB,EAAEuB,KAAK,aAAavB,EAAEkc,kBAAkBvT,MAAM3I,EAAE2I,MAAM,eAAc,EAAGlG,UAAU,cAAcW,OAAOpD,EAAEic,QAAQ,MAAMlT,GAAG,CAAC,cAAc/I,EAAEoc,cAAcvU,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAM,CAACxS,EAAEqS,GAAG,aAAa,EAAEI,OAAM,IAAK,MAAK,IAAK,CAACzS,EAAE0R,GAAG,KAAK1R,EAAEqS,GAAG,YAAY,GAAGrS,EAAE4R,KAAK5R,EAAE0R,GAAG,KAAKzR,EAAE,eAAe,CAAC2I,YAAY,uBAAuBC,MAAM,CAACK,KAAK,OAAO,EAAG,GAAE,IAAG,EAAG,KAAK,WAAW,MAAM,mBAAmBvB,KAAKA,IAAIC,GAAG,MAAMa,EAAEb,EAAElI,OAAQ,EAAx4F,GAA44Fc,CAAE,EAAz39H,sCCApS,SAASR,EAAEC,GAAqDC,EAAOR,QAAQO,GAA0M,CAAzR,CAA2RE,MAAK,IAAK,MAAM,IAAIH,EAAE,CAAC,KAAK,CAACA,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIoH,IAAI,MAAMlH,EAAE,CAACS,KAAK,eAAe2L,OAAO,CAACxM,EAAE,MAAMiD,GAAG/B,MAAM,CAACoF,KAAK,CAAClF,KAAKK,OAAOvB,QAAQ,IAAIga,UAAS,EAAGvY,UAAU/B,IAAI,IAAI,OAAO,IAAImd,IAAInd,EAAE,CAAC,MAAMC,GAAG,OAAOD,EAAE2G,WAAW,MAAM3G,EAAE2G,WAAW,IAAI,IAAIoE,SAAS,CAACvJ,KAAKK,OAAOvB,QAAQ,MAAM2E,OAAO,CAACzD,KAAKK,OAAOvB,QAAQ,QAAQyB,UAAU/B,GAAGA,KAAKA,EAAE2G,WAAW,MAAM,CAAC,SAAS,QAAQ,UAAU,QAAQ3E,QAAQhC,IAAI,IAAI2I,MAAM,CAACnH,KAAKK,OAAOvB,QAAQ,MAAM6B,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,QAAQ,IAAII,EAAEN,EAAE,MAAMK,EAAEL,EAAEM,EAAEA,GAAGC,EAAEP,EAAE,MAAMQ,EAAER,EAAEM,EAAEC,GAAGE,EAAET,EAAE,KAAKU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,MAAM8G,EAAE9G,EAAEM,EAAEM,GAAGiG,EAAE7G,EAAE,MAAMgH,EAAEhH,EAAEM,EAAEuG,GAAGE,EAAE/G,EAAE,MAAMiH,EAAE,CAAC,EAAEA,EAAE6C,kBAAkB9C,IAAIC,EAAE8C,cAAcpJ,IAAIsG,EAAE+C,OAAOtJ,IAAIuJ,KAAK,KAAK,QAAQhD,EAAEiD,OAAO1J,IAAIyG,EAAEkD,mBAAmBrD,IAAIzG,IAAI0G,EAAE9D,EAAEgE,GAAGF,EAAE9D,GAAG8D,EAAE9D,EAAEmH,QAAQrD,EAAE9D,EAAEmH,OAAO,IAAIlD,EAAElH,EAAE,MAAMoH,EAAEpH,EAAE,MAAMmH,EAAEnH,EAAEM,EAAE8G,GAAGC,GAAE,EAAGH,EAAEjE,GAAG7C,GAAE,WAAY,IAAIR,EAAEiD,KAAKhD,EAAED,EAAEmR,MAAMC,GAAG,OAAOnR,EAAE,KAAK,CAAC2I,YAAY,UAAU,CAAC3I,EAAE,IAAI,CAAC2I,YAAY,wBAAwBC,MAAM,CAACkC,SAAS/K,EAAE+K,SAASrE,KAAK1G,EAAE0G,KAAK,aAAa1G,EAAEkC,UAAU+C,OAAOjF,EAAEiF,OAAO0D,MAAM3I,EAAE2I,MAAM4C,IAAI,gCAAgCxC,GAAG,CAACb,MAAMlI,EAAEod,UAAU,CAACpd,EAAEqS,GAAG,QAAO,WAAY,MAAM,CAACpS,EAAE,OAAO,CAAC2I,YAAY,oBAAoBb,MAAM,CAAC/H,EAAEqd,UAAU,yBAAyBrd,EAAE8H,MAAM2J,MAAM,CAAC6L,gBAAgBtd,EAAEqd,UAAU,OAAOja,OAAOpD,EAAE8H,KAAK,KAAK,MAAMe,MAAM,CAAC,cAAc7I,EAAEmC,cAAe,IAAGnC,EAAE0R,GAAG,KAAK1R,EAAEkc,kBAAkBjc,EAAE,IAAI,CAACA,EAAE,SAAS,CAAC2I,YAAY,sBAAsB,CAAC5I,EAAE0R,GAAG,aAAa1R,EAAE2R,GAAG3R,EAAEkc,mBAAmB,cAAclc,EAAE0R,GAAG,KAAKzR,EAAE,MAAMD,EAAE0R,GAAG,KAAKzR,EAAE,OAAO,CAAC2I,YAAY,wBAAwB2U,SAAS,CAACC,YAAYxd,EAAE2R,GAAG3R,EAAEqI,WAAWrI,EAAEyd,WAAWxd,EAAE,IAAI,CAAC2I,YAAY,wBAAwB2U,SAAS,CAACC,YAAYxd,EAAE2R,GAAG3R,EAAEqI,SAASpI,EAAE,OAAO,CAAC2I,YAAY,qBAAqB,CAAC5I,EAAE0R,GAAG1R,EAAE2R,GAAG3R,EAAEqI,SAASrI,EAAE0R,GAAG,KAAK1R,EAAE4R,MAAM,IAAK,GAAE,IAAG,EAAG,KAAK,WAAW,MAAM,mBAAmBrK,KAAKA,IAAIE,GAAG,MAAMC,EAAED,EAAE/H,SAAS,KAAK,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIgH,IAAI,MAAM9G,EAAE,CAACS,KAAK,iBAAiB2L,OAAO,CAACxM,EAAE,MAAMiD,GAAG/B,MAAM,CAAC0J,GAAG,CAACxJ,KAAK,CAACK,OAAOa,QAAQpC,QAAQ,GAAGga,UAAS,GAAIrP,MAAM,CAACzJ,KAAKC,QAAQnB,SAAQ,KAAM,IAAII,EAAEN,EAAE,MAAMK,EAAEL,EAAEM,EAAEA,GAAGC,EAAEP,EAAE,MAAMQ,EAAER,EAAEM,EAAEC,GAAGE,EAAET,EAAE,KAAKU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,MAAM8G,EAAE9G,EAAEM,EAAEM,GAAGiG,EAAE7G,EAAE,MAAMgH,EAAEhH,EAAEM,EAAEuG,GAAGE,EAAE/G,EAAE,MAAMiH,EAAE,CAAC,EAAEA,EAAE6C,kBAAkB9C,IAAIC,EAAE8C,cAAcpJ,IAAIsG,EAAE+C,OAAOtJ,IAAIuJ,KAAK,KAAK,QAAQhD,EAAEiD,OAAO1J,IAAIyG,EAAEkD,mBAAmBrD,IAAIzG,IAAI0G,EAAE9D,EAAEgE,GAAGF,EAAE9D,GAAG8D,EAAE9D,EAAEmH,QAAQrD,EAAE9D,EAAEmH,OAAO,MAAMlD,GAAE,EAAGlH,EAAE,MAAMiD,GAAG7C,GAAE,WAAY,IAAIR,EAAEiD,KAAKhD,EAAED,EAAEmR,MAAMC,GAAG,OAAOnR,EAAE,KAAK,CAAC2I,YAAY,UAAU,CAAC3I,EAAE,cAAc,CAAC2I,YAAY,0BAA0BC,MAAM,CAACmC,GAAGhL,EAAEgL,GAAG,aAAahL,EAAEkC,UAAU+I,MAAMjL,EAAEiL,MAAMtC,MAAM3I,EAAE2I,MAAM4C,IAAI,gCAAgCmS,SAAS,CAACxV,MAAM,SAASjI,GAAG,OAAOD,EAAEod,QAAQxK,MAAM,KAAKzO,UAAU,IAAI,CAACnE,EAAEqS,GAAG,QAAO,WAAY,MAAM,CAACpS,EAAE,OAAO,CAAC2I,YAAY,sBAAsBb,MAAM,CAAC/H,EAAEqd,UAAU,2BAA2Brd,EAAE8H,MAAM2J,MAAM,CAAC6L,gBAAgBtd,EAAEqd,UAAU,OAAOja,OAAOpD,EAAE8H,KAAK,KAAK,QAAS,IAAG9H,EAAE0R,GAAG,KAAK1R,EAAEkc,kBAAkBjc,EAAE,IAAI,CAACA,EAAE,SAAS,CAAC2I,YAAY,wBAAwB,CAAC5I,EAAE0R,GAAG,aAAa1R,EAAE2R,GAAG3R,EAAEkc,mBAAmB,cAAclc,EAAE0R,GAAG,KAAKzR,EAAE,MAAMD,EAAE0R,GAAG,KAAKzR,EAAE,OAAO,CAAC2I,YAAY,0BAA0B2U,SAAS,CAACC,YAAYxd,EAAE2R,GAAG3R,EAAEqI,WAAWrI,EAAEyd,WAAWxd,EAAE,IAAI,CAAC2I,YAAY,0BAA0B2U,SAAS,CAACC,YAAYxd,EAAE2R,GAAG3R,EAAEqI,SAASpI,EAAE,OAAO,CAAC2I,YAAY,uBAAuB,CAAC5I,EAAE0R,GAAG1R,EAAE2R,GAAG3R,EAAEqI,SAASrI,EAAE0R,GAAG,KAAK1R,EAAE4R,MAAM,IAAI,EAAG,GAAE,IAAG,EAAG,KAAK,WAAW,MAAMlS,SAAS,IAAI,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIC,IAAI,IAAIC,EAAEJ,EAAE,MAAMM,EAAEN,EAAE,MAAMK,EAAEL,EAAE,MAAMO,EAAEP,EAAE,KAAKQ,EAAER,EAAE,MAAMS,EAAET,EAAEM,EAAEE,GAAGE,EAAEV,EAAE,MAAMC,EAAED,EAAEM,EAAEI,GAAG,MAAMC,EAAE,aAAaC,EAAE,CAACC,KAAK,YAAYC,WAAW,CAACC,SAASX,EAAEF,QAAQc,eAAef,IAAIgB,UAAUX,EAAEJ,SAASgB,MAAM,CAACC,KAAK,CAACC,KAAKC,QAAQnB,SAAQ,GAAIoB,UAAU,CAACF,KAAKC,QAAQnB,SAAQ,GAAIqB,WAAW,CAACH,KAAKC,QAAQnB,SAAQ,GAAIsB,UAAU,CAACJ,KAAKK,OAAOvB,QAAQ,MAAMwB,QAAQ,CAACN,KAAKC,QAAQnB,SAAQ,GAAIkB,KAAK,CAACA,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,yBAAyB,sBAAsB,QAAQ,UAAU,WAAWgC,QAAQhC,GAAGM,QAAQ,MAAM2B,YAAY,CAACT,KAAKK,OAAOvB,QAAQ,IAAI4B,UAAU,CAACV,KAAKK,OAAOvB,SAAQ,EAAGK,EAAEV,GAAG,YAAYkC,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,MAAM8B,UAAU,CAACZ,KAAKK,OAAOvB,QAAQ,UAAU+B,kBAAkB,CAACb,KAAKc,QAAQhC,QAAQ,IAAIiC,SAASC,cAAc,SAASC,UAAU,CAACjB,KAAK,CAACK,OAAOa,OAAOJ,QAAQb,SAASnB,QAAQ,QAAQqC,SAAS,CAACnB,KAAKC,QAAQnB,SAAQ,GAAIsC,OAAO,CAACpB,KAAKqB,OAAOvC,QAAQ,IAAIwC,MAAM,CAAC,cAAc,OAAO,cAAc,QAAQ,QAAQ,QAAQC,OAAO,MAAM,CAACC,OAAOC,KAAK1B,KAAK2B,WAAW,EAAEC,SAAS,QAAQC,QAAO,EAAG3C,EAAE4C,MAAM,EAAEC,SAAS,CAACC,iBAAiB,OAAON,KAAKzB,OAAOyB,KAAKnB,QAAQ,UAAUmB,KAAKrB,UAAU,YAAY,WAAW,GAAG4B,MAAM,CAACjC,KAAKvB,GAAGA,IAAIiD,KAAKD,SAASC,KAAKD,OAAOhD,EAAE,GAAGyD,QAAQ,CAACC,oBAAoB1D,GAAG,IAAIC,EAAEG,EAAEI,EAAEE,EAAED,EAAE,MAAME,EAAE,QAAQV,EAAE,MAAMD,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQE,EAAEF,EAAEqD,qBAAgB,IAASnD,OAAE,EAAOA,EAAEO,YAAO,IAAShB,EAAEA,EAAE,MAAMD,GAAG,QAAQS,EAAET,EAAE2D,wBAAmB,IAASlD,OAAE,EAAOA,EAAEqD,IAAI,MAAM,CAAC,iBAAiB,eAAe,kBAAkBC,SAASpD,EAAE,EAAEqD,SAAShE,GAAGiD,KAAKD,SAASC,KAAKD,QAAO,EAAGC,KAAKgB,MAAM,eAAc,GAAIhB,KAAKgB,MAAM,QAAQ,EAAEC,YAAY,IAAIlE,IAAImE,UAAUC,OAAO,QAAG,IAASD,UAAU,KAAKA,UAAU,GAAGlB,KAAKD,SAASC,KAAKD,QAAO,EAAGC,KAAKoB,MAAMC,QAAQC,eAAe,CAACC,YAAYxE,IAAIiD,KAAKgB,MAAM,eAAc,GAAIhB,KAAKgB,MAAM,SAAShB,KAAKD,QAAO,EAAGC,KAAKC,WAAW,EAAED,KAAKoB,MAAMI,WAAWC,IAAIC,QAAQ,EAAEC,OAAO5E,GAAGiD,KAAK4B,WAAU,KAAM5B,KAAK6B,iBAAiB9E,EAAG,GAAE,EAAE+E,mBAAmB/E,GAAG,GAAGuC,SAASyC,gBAAgBhF,EAAEiF,OAAO,OAAO,MAAMhF,EAAED,EAAEiF,OAAOC,QAAQ,MAAM,GAAGjF,EAAE,CAAC,MAAMD,EAAEC,EAAEuC,cAAczB,GAAG,GAAGf,EAAE,CAAC,MAAMC,EAAE,IAAIgD,KAAKoB,MAAMc,KAAKC,iBAAiBrE,IAAIiB,QAAQhC,GAAGC,GAAG,IAAIgD,KAAKC,WAAWjD,EAAEgD,KAAKoC,cAAc,CAAC,CAAC,EAAEC,UAAUtF,IAAI,KAAKA,EAAEuF,SAAS,IAAIvF,EAAEuF,SAASvF,EAAEwF,WAAWvC,KAAKwC,oBAAoBzF,IAAI,KAAKA,EAAEuF,SAAS,IAAIvF,EAAEuF,UAAUvF,EAAEwF,WAAWvC,KAAKyC,gBAAgB1F,GAAG,KAAKA,EAAEuF,SAAStC,KAAK6B,iBAAiB9E,GAAG,KAAKA,EAAEuF,SAAStC,KAAK0C,gBAAgB3F,GAAG,KAAKA,EAAEuF,UAAUtC,KAAKiB,YAAYlE,EAAE4F,iBAAiB,EAAEC,sBAAsB,MAAM7F,EAAEiD,KAAKoB,MAAMc,KAAK3C,cAAc,aAAaxC,GAAGA,EAAE8F,UAAUC,OAAO,SAAS,EAAEV,cAAc,MAAMrF,EAAEiD,KAAKoB,MAAMc,KAAKC,iBAAiBrE,GAAGkC,KAAKC,YAAY,GAAGlD,EAAE,CAACiD,KAAK4C,sBAAsB,MAAM5F,EAAED,EAAEkF,QAAQ,aAAalF,EAAE2E,QAAQ1E,GAAGA,EAAE6F,UAAUE,IAAI,SAAS,CAAC,EAAEP,oBAAoBzF,GAAGiD,KAAKD,SAAS,IAAIC,KAAKC,WAAWD,KAAKiB,aAAajB,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKC,WAAW,GAAGD,KAAKoC,cAAc,EAAEK,gBAAgB1F,GAAG,GAAGiD,KAAKD,OAAO,CAAC,MAAM/C,EAAEgD,KAAKoB,MAAMc,KAAKC,iBAAiBrE,GAAGqD,OAAO,EAAEnB,KAAKC,aAAajD,EAAEgD,KAAKiB,aAAajB,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKC,WAAW,GAAGD,KAAKoC,aAAa,CAAC,EAAEP,iBAAiB9E,GAAGiD,KAAKD,SAASC,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAW,EAAED,KAAKoC,cAAc,EAAEM,gBAAgB3F,GAAGiD,KAAKD,SAASC,KAAKgD,eAAejG,GAAGiD,KAAKC,WAAWD,KAAKoB,MAAMc,KAAKC,iBAAiBrE,GAAGqD,OAAO,EAAEnB,KAAKoC,cAAc,EAAEY,eAAejG,GAAGA,IAAIA,EAAE4F,iBAAiB5F,EAAEkG,kBAAkB,EAAEC,QAAQnG,GAAGiD,KAAKgB,MAAM,QAAQjE,EAAE,EAAEoG,OAAOpG,GAAGiD,KAAKgB,MAAM,OAAOjE,EAAE,GAAGqG,OAAOrG,GAAG,MAAMC,GAAGgD,KAAKqD,OAAOhG,SAAS,IAAIiG,QAAQvG,IAAI,IAAIC,EAAEG,EAAEI,EAAEE,EAAE,OAAO,MAAMV,GAAG,QAAQC,EAAED,EAAE2D,wBAAmB,IAAS1D,OAAE,EAAOA,EAAE6D,OAAO,MAAM9D,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQE,EAAEF,EAAEqD,qBAAgB,IAASnD,OAAE,EAAOA,EAAEO,KAAM,IAAGb,EAAEH,EAAEuG,OAAOxG,IAAI,IAAIC,EAAEG,EAAEI,EAAEE,EAAED,EAAEE,EAAEC,EAAEC,EAAE,MAAM,kBAAkB,QAAQZ,EAAE,MAAMD,GAAG,QAAQI,EAAEJ,EAAE2D,wBAAmB,IAASvD,GAAG,QAAQI,EAAEJ,EAAEwD,YAAO,IAASpD,GAAG,QAAQE,EAAEF,EAAEqD,qBAAgB,IAASnD,OAAE,EAAOA,EAAEO,YAAO,IAAShB,EAAEA,EAAE,MAAMD,GAAG,QAAQS,EAAET,EAAE2D,wBAAmB,IAASlD,OAAE,EAAOA,EAAEqD,OAAO,MAAM9D,GAAG,QAAQW,EAAEX,EAAE2D,wBAAmB,IAAShD,GAAG,QAAQC,EAAED,EAAE8F,iBAAY,IAAS7F,GAAG,QAAQC,EAAED,EAAE8F,YAAO,IAAS7F,OAAE,EAAOA,EAAE8F,WAAWC,OAAOC,SAASC,QAAS,IAAG,IAAItG,EAAEP,EAAEsG,OAAOtD,KAAKS,qBAAqB,GAAGT,KAAKvB,WAAWlB,EAAE4D,OAAO,GAAGnB,KAAKL,OAAO,IAAI/B,IAAIkG,KAAKC,KAAK,kEAAkExG,EAAE,IAAI,IAAIP,EAAEmE,OAAO,OAAO,MAAM1D,EAAET,IAAI,IAAIG,EAAEI,EAAEE,EAAED,EAAEE,EAAEC,EAAEC,EAAEC,EAAET,EAAEU,EAAEC,EAAEkG,EAAED,EAAEG,EAAED,EAAEE,EAAEC,EAAEE,EAAED,EAAEE,EAAEC,EAAEC,EAAE,MAAMC,GAAG,MAAM3H,GAAG,QAAQG,EAAEH,EAAE8C,YAAO,IAAS3C,GAAG,QAAQI,EAAEJ,EAAEyH,mBAAc,IAASrH,GAAG,QAAQE,EAAEF,EAAEsH,cAAS,IAASpH,OAAE,EAAOA,EAAE,KAAKV,EAAE,OAAO,CAAC+H,MAAM,CAAC,OAAO,MAAM9H,GAAG,QAAQQ,EAAER,EAAE0D,wBAAmB,IAASlD,GAAG,QAAQE,EAAEF,EAAEgG,iBAAY,IAAS9F,OAAE,EAAOA,EAAEmH,QAAQE,EAAE,MAAM/H,GAAG,QAAQW,EAAEX,EAAE0D,wBAAmB,IAAS/C,GAAG,QAAQC,EAAED,EAAEqH,iBAAY,IAASpH,OAAE,EAAOA,EAAEqH,MAAMM,EAAE,MAAMvI,GAAG,QAAQa,EAAEb,EAAE0D,wBAAmB,IAAS7C,GAAG,QAAQT,EAAES,EAAEsH,gBAAW,IAAS/H,GAAG,QAAQU,EAAEV,EAAE,UAAK,IAASU,GAAG,QAAQC,EAAED,EAAEsH,YAAO,IAASrH,GAAG,QAAQkG,EAAElG,EAAEsH,YAAO,IAASpB,OAAE,EAAOA,EAAEqB,KAAKvH,GAAGmH,GAAG,MAAMlI,GAAG,QAAQgH,EAAEhH,EAAE0D,wBAAmB,IAASsD,GAAG,QAAQG,EAAEH,EAAER,iBAAY,IAASW,OAAE,EAAOA,EAAElF,YAAYsG,EAAEC,EAAExF,KAAKtB,WAAW6G,EAAE,GAAG,IAAIE,EAAE,MAAMzI,GAAG,QAAQkH,EAAElH,EAAE0D,wBAAmB,IAASwD,GAAG,QAAQE,EAAEF,EAAEV,iBAAY,IAASY,OAAE,EAAOA,EAAEsB,MAAM,OAAO1F,KAAKtB,YAAY+G,IAAIA,EAAEF,GAAGxI,EAAE,WAAW,CAAC+H,MAAM,CAAC,kCAAkC,MAAM9H,GAAG,QAAQqH,EAAErH,EAAE8C,YAAO,IAASuE,OAAE,EAAOA,EAAEsB,YAAY,MAAM3I,GAAG,QAAQuH,EAAEvH,EAAE8C,YAAO,IAASyE,OAAE,EAAOA,EAAEO,OAAOc,MAAM,CAAC,aAAaV,EAAEQ,MAAMD,GAAGI,IAAI,MAAM7I,GAAG,QAAQsH,EAAEtH,EAAE8C,YAAO,IAASwE,OAAE,EAAOA,EAAEuB,IAAIxH,MAAM,CAACE,KAAKyB,KAAKzB,OAAOiH,EAAE,YAAY,YAAY9F,SAASM,KAAKN,WAAW,MAAM1C,GAAG,QAAQwH,EAAExH,EAAE0D,wBAAmB,IAAS8D,GAAG,QAAQC,EAAED,EAAEhB,iBAAY,IAASiB,OAAE,EAAOA,EAAE/E,UAAUR,WAAWc,KAAKd,cAAc,MAAMlC,GAAG,QAAQ0H,EAAE1H,EAAE0D,wBAAmB,IAASgE,OAAE,EAAOA,EAAElB,WAAWsC,GAAG,CAACpE,MAAM1B,KAAKkD,QAAQ6C,KAAK/F,KAAKmD,YAAY4B,GAAG,CAACE,MAAMlI,IAAIgI,GAAGA,EAAEhI,EAAC,KAAM,CAACA,EAAE,WAAW,CAACiJ,KAAK,QAAQ,CAACrB,IAAIa,GAAE,EAAGhI,EAAER,IAAI,IAAIO,EAAEE,EAAE,MAAMD,GAAG,QAAQD,EAAEyC,KAAKqD,OAAOwB,YAAO,IAAStH,OAAE,EAAOA,EAAE,MAAMyC,KAAKhB,YAAYjC,EAAE,OAAO,CAAC+H,MAAM,CAAC,OAAO9E,KAAKhB,eAAejC,EAAE,iBAAiB,CAACsB,MAAM,CAAC4H,KAAK,OAAO,OAAOlJ,EAAE,YAAY,CAAC8I,IAAI,UAAUxH,MAAM,CAAC6H,MAAM,EAAEC,cAAa,EAAGC,MAAMpG,KAAKD,OAAOZ,UAAUa,KAAKb,UAAUkH,SAASrG,KAAKZ,kBAAkBI,UAAUQ,KAAKR,UAAU8G,iBAAiB,sBAAsBC,eAAe,QAAQ9I,EAAEuC,KAAKoB,MAAMI,kBAAa,IAAS/D,OAAE,EAAOA,EAAEgE,KAAKmE,MAAM,CAACM,MAAM,EAAEC,cAAa,EAAGC,MAAMpG,KAAKD,OAAOZ,UAAUa,KAAKb,UAAUkH,SAASrG,KAAKZ,kBAAkBI,UAAUQ,KAAKR,UAAU8G,iBAAiB,uBAAuBR,GAAG,CAACU,KAAKxG,KAAKe,SAAS,aAAaf,KAAK2B,OAAO8E,KAAKzG,KAAKiB,YAAY,CAAClE,EAAE,WAAW,CAAC+H,MAAM,0BAA0BzG,MAAM,CAACE,KAAKyB,KAAKM,eAAeZ,SAASM,KAAKN,SAASR,WAAWc,KAAKd,YAAY8G,KAAK,UAAUH,IAAI,aAAaD,MAAM,CAAC,gBAAgBzI,EAAE,KAAK,OAAO,aAAa6C,KAAKf,UAAU,gBAAgBe,KAAKD,OAAOC,KAAKE,SAAS,KAAK,gBAAgBF,KAAKD,OAAO2G,YAAYZ,GAAG,CAACpE,MAAM1B,KAAKkD,QAAQ6C,KAAK/F,KAAKmD,SAAS,CAACpG,EAAE,WAAW,CAACiJ,KAAK,QAAQ,CAACxI,IAAIwC,KAAKrB,YAAY5B,EAAE,MAAM,CAAC+H,MAAM,CAACxG,KAAK0B,KAAKD,QAAQ6F,MAAM,CAACe,SAAS,MAAMb,GAAG,CAACc,QAAQ5G,KAAKqC,UAAUwE,UAAU7G,KAAK8B,oBAAoB+D,IAAI,QAAQ,CAAC9I,EAAE,KAAK,CAAC6I,MAAM,CAACkB,GAAG9G,KAAKE,SAASyG,SAAS,KAAKI,KAAK5J,EAAE,KAAK,SAAS,CAACH,OAAM,EAAG,GAAG,IAAIA,EAAEmE,QAAQ,IAAI5D,EAAE4D,SAASnB,KAAKvB,UAAU,OAAOhB,EAAEF,EAAE,IAAI,GAAGA,EAAE4D,OAAO,GAAGnB,KAAKL,OAAO,EAAE,CAAC,MAAMxC,EAAEI,EAAEyJ,MAAM,EAAEhH,KAAKL,QAAQjC,EAAEV,EAAEsG,QAAQvG,IAAII,EAAE2D,SAAS/D,KAAK,OAAOA,EAAE,MAAM,CAAC+H,MAAM,CAAC,eAAe,gBAAgB3E,OAAOH,KAAKM,kBAAkB,IAAInD,EAAEP,IAAIa,GAAGC,EAAEyD,OAAO,EAAEpE,EAAE,MAAM,CAAC+H,MAAM,CAAC,cAAc,CAAC,oBAAoB9E,KAAKD,UAAU,CAACvC,EAAEE,KAAK,MAAM,CAAC,OAAOX,EAAE,MAAM,CAAC+H,MAAM,CAAC,2CAA2C,gBAAgB3E,OAAOH,KAAKM,gBAAgB,CAAC,oBAAoBN,KAAKD,UAAU,CAACvC,EAAER,IAAI,GAAG,IAAIiH,EAAE9G,EAAE,MAAM6G,EAAE7G,EAAEM,EAAEwG,GAAGE,EAAEhH,EAAE,MAAM+G,EAAE/G,EAAEM,EAAE0G,GAAGC,EAAEjH,EAAE,KAAKkH,EAAElH,EAAEM,EAAE2G,GAAGG,EAAEpH,EAAE,MAAMmH,EAAEnH,EAAEM,EAAE8G,GAAGC,EAAErH,EAAE,MAAMsH,EAAEtH,EAAEM,EAAE+G,GAAGE,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAGK,EAAE5H,EAAE,MAAMoI,EAAE,CAAC,EAAEA,EAAE0B,kBAAkBtC,IAAIY,EAAE2B,cAAc5C,IAAIiB,EAAE4B,OAAO9C,IAAI+C,KAAK,KAAK,QAAQ7B,EAAE8B,OAAOnD,IAAIqB,EAAE+B,mBAAmB7C,IAAIT,IAAIe,EAAE3E,EAAEmF,GAAGR,EAAE3E,GAAG2E,EAAE3E,EAAEmH,QAAQxC,EAAE3E,EAAEmH,OAAO,IAAIrC,EAAE/H,EAAE,MAAMqI,EAAE,CAAC,EAAEA,EAAEyB,kBAAkBtC,IAAIa,EAAE0B,cAAc5C,IAAIkB,EAAE2B,OAAO9C,IAAI+C,KAAK,KAAK,QAAQ5B,EAAE6B,OAAOnD,IAAIsB,EAAE8B,mBAAmB7C,IAAIT,IAAIkB,EAAE9E,EAAEoF,GAAGN,EAAE9E,GAAG8E,EAAE9E,EAAEmH,QAAQrC,EAAE9E,EAAEmH,OAAO,IAAI9B,EAAEtI,EAAE,MAAMqK,EAAErK,EAAE,MAAMsK,EAAEtK,EAAEM,EAAE+J,GAAGE,GAAE,EAAGjC,EAAErF,GAAGrC,OAAE4J,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmBF,KAAKA,IAAIC,GAAG,MAAMpK,EAAEoK,EAAEjL,SAAS,KAAK,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIkI,IAAI,IAAIhI,EAAEJ,EAAE,KAAKM,EAAEN,EAAE,MAAMK,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,GAAG,MAAMG,EAAE,CAACK,KAAK,eAAeC,WAAW,CAACkL,UAAU5L,EAAEF,QAAQgM,aAAa3L,KAAKW,MAAM,CAACL,KAAK,CAACO,KAAKK,OAAOvB,QAAQ,MAAMqI,MAAM,CAACnH,KAAKK,OAAOvB,QAAQ,MAAM0K,GAAG,CAACxJ,KAAK,CAACK,OAAOa,QAAQpC,aAAQ,GAAQ2K,MAAM,CAACzJ,KAAKC,QAAQnB,SAAQ,GAAIoG,KAAK,CAAClF,KAAKK,OAAOvB,aAAQ,GAAQwH,KAAK,CAACtG,KAAKK,OAAOvB,QAAQ,IAAIyb,YAAY,CAACva,KAAKC,QAAQnB,SAAQ,GAAIoB,UAAU,CAACF,KAAKC,QAAQnB,SAAQ,GAAIiB,KAAK,CAACC,KAAKC,QAAQnB,SAAQ,IAAKwC,MAAM,CAAC,cAAc,WAAWC,KAAK,KAAI,CAAEiZ,UAAS,EAAGC,QAAQ,YAAY7Y,QAAO,EAAG1C,EAAE2C,QAAQC,SAAS,CAAC4Y,oBAAoB,OAAO,OAAOjZ,KAAKhC,MAAMiK,EAAQlE,KAAK,sFAAsF/D,KAAK0F,OAAO1F,KAAKhC,IAAI,EAAE6C,MAAM,OAAOb,KAAK+H,GAAG,cAAc,GAAG,EAAEmR,iBAAiB,OAAOlZ,KAAK+H,GAAG,CAACA,GAAG/H,KAAK+H,GAAGC,MAAMhI,KAAKgI,SAAShI,KAAKuI,QAAQ,CAAC9E,KAAKzD,KAAKyD,QAAQzD,KAAKuI,OAAO,GAAG/H,QAAQ,CAAC2Y,aAAapc,GAAGiD,KAAKgB,MAAM,cAAcjE,EAAE,EAAEqc,QAAQrc,GAAG,OAAOiD,KAAK8Y,cAAc9Y,KAAKgB,MAAM,UAAUjE,EAAEiD,KAAK+H,IAAI/H,KAAKyD,MAAMzD,KAAKqZ,QAAQrY,MAAM,UAAUjE,EAAEiD,KAAK+H,IAAI/H,KAAKyD,MAAMzD,KAAK+Y,UAAS,IAAI,CAAE,EAAEO,UAAUvc,GAAGiD,KAAK8Y,cAAc9Y,KAAK+Y,UAAS,EAAG,EAAEQ,UAAUxc,GAAGiD,KAAK8Y,aAAa/b,EAAEiF,OAAOwX,SAASzc,EAAE0c,gBAAgBzZ,KAAKoB,MAAMsY,MAAMF,SAASzc,EAAE0c,iBAAiBzZ,KAAK+Y,UAAS,EAAG,IAAI,IAAInb,EAAET,EAAE,MAAMU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,KAAK8G,EAAE9G,EAAEM,EAAEM,GAAGiG,EAAE7G,EAAE,MAAMgH,EAAEhH,EAAEM,EAAEuG,GAAGE,EAAE/G,EAAE,MAAMiH,EAAEjH,EAAEM,EAAEyG,GAAGG,EAAElH,EAAE,MAAMoH,EAAEpH,EAAEM,EAAE4G,GAAGC,EAAEnH,EAAE,MAAMqH,EAAE,CAAC,EAAEA,EAAEyC,kBAAkB1C,IAAIC,EAAE0C,cAAc/C,IAAIK,EAAE2C,OAAOlD,IAAImD,KAAK,KAAK,QAAQ5C,EAAE6C,OAAOvJ,IAAI0G,EAAE8C,mBAAmBlD,IAAIvG,IAAIyG,EAAElE,EAAEoE,GAAGF,EAAElE,GAAGkE,EAAElE,EAAEmH,QAAQjD,EAAElE,EAAEmH,OAAO,IAAI9C,EAAEtH,EAAE,MAAMuH,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAGK,GAAE,EAAGN,EAAErE,GAAGzC,GAAE,WAAY,IAAIZ,EAAEiD,KAAKhD,EAAED,EAAEmR,MAAMC,GAAG,OAAOnR,EAAE,KAAKD,EAAEwT,GAAG,CAAC1K,IAAI,QAAQF,YAAY,YAAYb,MAAM,CAAC,qBAAqB/H,EAAEgc,UAAUnT,MAAM,CAAC+T,UAAU,SAAS7T,GAAG,CAAC8T,UAAU,SAAS7c,GAAG,OAAOA,EAAE4F,kBAAiB,KAAO,GAAEgN,MAAM,KAAKzO,UAAU,EAAE2Y,KAAK,SAAS7c,GAAG,OAAOA,EAAE2F,iBAAiB5F,EAAEqc,QAAQzJ,MAAM,KAAKzO,UAAU,EAAE4Y,SAAS,SAAS/c,GAAG,OAAOA,EAAE4F,kBAAiB,KAAO,GAAEgN,MAAM,KAAKzO,UAAU,EAAE6Y,UAAUhd,EAAEuc,UAAUU,UAAUjd,EAAEwc,YAAY,KAAKxc,EAAEkd,GAAG,CAAC,EAAE,CAACld,EAAEic,QAAQ,MAAM,EAAEjc,EAAEkc,oBAAoBlc,EAAE8H,MAAM9H,EAAEsG,OAAOhG,QAAQN,EAAE4R,KAAK3R,EAAED,EAAE8D,IAAI9D,EAAEuT,GAAGvT,EAAEwT,GAAG,CAAC1P,IAAI,YAAY+E,MAAM,CAACF,MAAM3I,EAAE2I,QAAQ,YAAY3I,EAAEmc,gBAAe,GAAInc,EAAEyL,YAAY,CAACzL,EAAEqS,GAAG,QAAO,WAAY,MAAM,CAACrS,EAAE8H,KAAK7H,EAAE,OAAO,CAAC2I,YAAY,OAAOb,MAAM/H,EAAE8H,OAAO7H,EAAE,OAAO,CAACD,EAAE0R,GAAG1R,EAAE2R,GAAG3R,EAAEkc,sBAAuB,KAAI,GAAGlc,EAAE0R,GAAG,KAAK1R,EAAEsG,OAAOhG,QAAQL,EAAE,YAAY,CAAC6I,IAAI,UAAUD,MAAM,CAACrH,KAAK,WAAW,aAAaxB,EAAE0B,UAAUH,KAAKvB,EAAEuB,KAAK,aAAavB,EAAEkc,kBAAkBvT,MAAM3I,EAAE2I,MAAM,eAAc,EAAGlG,UAAU,cAAcW,OAAOpD,EAAEic,QAAQ,MAAMlT,GAAG,CAAC,cAAc/I,EAAEoc,cAAcvU,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAM,CAACxS,EAAEqS,GAAG,aAAa,EAAEI,OAAM,IAAK,MAAK,IAAK,CAACzS,EAAE0R,GAAG,KAAK1R,EAAEqS,GAAG,YAAY,GAAGrS,EAAE4R,KAAK5R,EAAE0R,GAAG,KAAKzR,EAAE,eAAe,CAAC2I,YAAY,uBAAuBC,MAAM,CAACK,KAAK,OAAO,EAAG,GAAE,IAAG,EAAG,KAAK,WAAW,MAAM,mBAAmBtB,KAAKA,IAAII,GAAG,MAAMQ,EAAER,EAAEtI,SAAS,KAAK,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIoH,IAAI,MAAMlH,EAAE,CAACS,KAAK,WAAWK,MAAM,CAACqB,SAAS,CAACnB,KAAKC,QAAQnB,SAAQ,GAAIkB,KAAK,CAACA,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,yBAAyB,sBAAsB,QAAQ,UAAU,WAAWgC,QAAQhC,GAAGM,QAAQ,aAAauK,WAAW,CAACrJ,KAAKK,OAAOE,UAAU/B,IAAI,IAAI,CAAC,SAAS,QAAQ,UAAUgC,QAAQhC,GAAGM,QAAQ,UAAUwK,KAAK,CAACtJ,KAAKC,QAAQnB,SAAQ,GAAI4B,UAAU,CAACV,KAAKK,OAAOvB,QAAQ,MAAMoG,KAAK,CAAClF,KAAKK,OAAOvB,QAAQ,MAAMyK,SAAS,CAACvJ,KAAKK,OAAOvB,QAAQ,MAAM0K,GAAG,CAACxJ,KAAK,CAACK,OAAOa,QAAQpC,QAAQ,MAAM2K,MAAM,CAACzJ,KAAKC,QAAQnB,SAAQ,GAAI6B,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,OAAO+F,OAAOrG,GAAG,IAAIC,EAAEG,EAAEI,EAAEE,EAAED,EAAEE,EAAEsC,KAAK,MAAMrC,EAAE,QAAQX,EAAEgD,KAAKqD,OAAOhG,eAAU,IAASL,GAAG,QAAQG,EAAEH,EAAE,UAAK,IAASG,GAAG,QAAQI,EAAEJ,EAAEiI,YAAO,IAAS7H,GAAG,QAAQE,EAAEF,EAAE8H,YAAO,IAAS5H,OAAE,EAAOA,EAAE6H,KAAK/H,GAAGK,IAAID,EAAEE,EAAE,QAAQL,EAAEwC,KAAKqD,cAAS,IAAS7F,OAAE,EAAOA,EAAEqH,KAAKlH,GAAGqC,KAAKf,WAAWgJ,EAAQlE,KAAK,mFAAmF,CAACqB,KAAKzH,EAAEsB,UAAUe,KAAKf,WAAWe,MAAM,MAAM5C,EAAE,WAAW,IAAI8K,SAASlL,EAAEmL,SAAShL,EAAEiL,cAAc7K,GAAG2D,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE,OAAOnE,EAAEW,EAAEqK,KAAKrK,EAAE+F,KAAK,SAAS,IAAI,CAACqB,MAAM,CAAC,aAAa,CAAC,wBAAwBjH,IAAID,EAAE,wBAAwBA,IAAIC,EAAE,4BAA4BA,GAAGD,EAAE,CAAC,mBAAmBuC,OAAOzC,EAAEa,OAAOb,EAAEa,KAAK,mBAAmBb,EAAEmK,KAAKQ,OAAOlL,EAAE,2BAA2BI,IAAIqI,MAAM,CAAC,aAAalI,EAAEuB,UAAUS,SAAShC,EAAEgC,SAASnB,KAAKb,EAAE+F,KAAK,KAAK/F,EAAEkK,WAAWb,KAAKrJ,EAAE+F,KAAK,SAAS,KAAKA,MAAM/F,EAAEqK,IAAIrK,EAAE+F,KAAK/F,EAAE+F,KAAK,KAAKzB,QAAQtE,EAAEqK,IAAIrK,EAAE+F,KAAK,QAAQ,KAAK6E,KAAK5K,EAAEqK,IAAIrK,EAAE+F,KAAK,+BAA+B,KAAKqE,UAAUpK,EAAEqK,IAAIrK,EAAE+F,MAAM/F,EAAEoK,SAASpK,EAAEoK,SAAS,QAAQpK,EAAE6K,QAAQzC,GAAG,IAAIpI,EAAE8K,WAAWvD,MAAMlI,IAAI,IAAII,EAAEI,EAAE,QAAQJ,EAAEO,EAAE8K,kBAAa,IAASrL,GAAG,QAAQI,EAAEJ,EAAE8H,aAAQ,IAAS1H,GAAGA,EAAE+H,KAAKnI,EAAEJ,GAAG,MAAMC,GAAGA,EAAED,EAAC,IAAK,CAACA,EAAE,OAAO,CAAC+H,MAAM,uBAAuB,CAACjH,EAAEd,EAAE,OAAO,CAAC+H,MAAM,mBAAmBc,MAAM,CAAC,cAAclI,EAAEwB,aAAa,CAACxB,EAAE2F,OAAOwB,OAAO,KAAKjH,EAAEb,EAAE,OAAO,CAAC+H,MAAM,oBAAoB,CAACnH,IAAI,QAAQ,EAAE,OAAOqC,KAAK+H,GAAGhL,EAAE,cAAc,CAACsB,MAAM,CAACoK,QAAO,EAAGV,GAAG/H,KAAK+H,GAAGC,MAAMhI,KAAKgI,OAAOpD,YAAY,CAACvH,QAAQD,KAAKA,GAAG,GAAG,IAAIK,EAAEN,EAAE,MAAMK,EAAEL,EAAEM,EAAEA,GAAGC,EAAEP,EAAE,MAAMQ,EAAER,EAAEM,EAAEC,GAAGE,EAAET,EAAE,KAAKU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,MAAM8G,EAAE9G,EAAEM,EAAEM,GAAGiG,EAAE7G,EAAE,MAAMgH,EAAEhH,EAAEM,EAAEuG,GAAGE,EAAE/G,EAAE,MAAMiH,EAAE,CAAC,EAAEA,EAAE6C,kBAAkB9C,IAAIC,EAAE8C,cAAcpJ,IAAIsG,EAAE+C,OAAOtJ,IAAIuJ,KAAK,KAAK,QAAQhD,EAAEiD,OAAO1J,IAAIyG,EAAEkD,mBAAmBrD,IAAIzG,IAAI0G,EAAE9D,EAAEgE,GAAGF,EAAE9D,GAAG8D,EAAE9D,EAAEmH,QAAQrD,EAAE9D,EAAEmH,OAAO,IAAIlD,EAAElH,EAAE,MAAMoH,EAAEpH,EAAE,MAAMmH,EAAEnH,EAAEM,EAAE8G,GAAGC,GAAE,EAAGH,EAAEjE,GAAG7C,OAAEoK,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmBrD,KAAKA,IAAIE,GAAG,MAAMC,EAAED,EAAE/H,SAAS,KAAK,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACK,QAAQ,IAAIkI,IAAI,IAAIhI,EAAEJ,EAAE,MAAMM,EAAEN,EAAE,MAAMK,EAAEL,EAAE,MAAM,MAAMO,EAAE,CAACM,KAAK,YAAYC,WAAW,CAAC4R,SAAStS,EAAEsS,UAAUC,cAAa,EAAGzR,MAAM,CAACiI,iBAAiB,CAAC/H,KAAKK,OAAOvB,QAAQ,IAAIyN,UAAU,CAACvM,KAAKC,QAAQnB,SAAQ,GAAIkJ,eAAe,CAAClJ,aAAQ,EAAOkB,KAAK,CAACwR,YAAYC,WAAWpR,OAAOJ,WAAWqB,MAAM,CAAC,aAAa,cAAcgM,gBAAgB7L,KAAKsB,gBAAgB,EAAEd,QAAQ,CAACwM,qBAAqB,IAAIjQ,EAAEC,EAAE,SAASgD,KAAK4B,aAAa5B,KAAK8K,UAAU,OAAO,MAAM3N,EAAE,QAAQJ,EAAEiD,KAAKoB,MAAMC,eAAU,IAAStE,GAAG,QAAQC,EAAED,EAAEqE,MAAM6O,qBAAgB,IAASjT,OAAE,EAAOA,EAAEyE,IAAItE,IAAI6C,KAAKkQ,YAAW,EAAGzS,EAAE4P,iBAAiBlQ,EAAE,CAACgT,mBAAkB,EAAGlD,mBAAkB,EAAG1G,eAAevG,KAAKuG,eAAe4G,WAAU,EAAG3P,EAAE4P,OAAOpN,KAAKkQ,WAAW5C,WAAW,EAAEhM,iBAAiB,IAAIvE,EAAEmE,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE,IAAI,IAAIlE,EAAE,QAAQA,EAAEgD,KAAKkQ,kBAAa,IAASlT,GAAGA,EAAEuQ,WAAWxQ,GAAGiD,KAAKkQ,WAAW,IAAI,CAAC,MAAMnT,GAAGkL,EAAQlE,KAAKhH,EAAE,CAAC,EAAEqT,YAAYpQ,KAAK4B,WAAU,KAAM5B,KAAKgB,MAAM,cAAchB,KAAKkM,cAAe,GAAE,EAAEmE,YAAYrQ,KAAKgB,MAAM,cAAchB,KAAKsB,gBAAgB,IAAI3D,EAAED,EAAE,IAAIE,EAAET,EAAE,MAAMU,EAAEV,EAAEM,EAAEG,GAAGR,EAAED,EAAE,MAAMW,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,KAAK8G,EAAE9G,EAAEM,EAAEM,GAAGiG,EAAE7G,EAAE,MAAMgH,EAAEhH,EAAEM,EAAEuG,GAAGE,EAAE/G,EAAE,MAAMiH,EAAEjH,EAAEM,EAAEyG,GAAGG,EAAElH,EAAE,MAAMoH,EAAEpH,EAAEM,EAAE4G,GAAGC,EAAEnH,EAAE,MAAMqH,EAAE,CAAC,EAAEA,EAAEyC,kBAAkB1C,IAAIC,EAAE0C,cAAc/C,IAAIK,EAAE2C,OAAOlD,IAAImD,KAAK,KAAK,QAAQ5C,EAAE6C,OAAOvJ,IAAI0G,EAAE8C,mBAAmBlD,IAAIvG,IAAIyG,EAAElE,EAAEoE,GAAGF,EAAElE,GAAGkE,EAAElE,EAAEmH,QAAQjD,EAAElE,EAAEmH,OAAO,IAAI9C,EAAEtH,EAAE,MAAMuH,EAAEvH,EAAE,MAAMwH,EAAExH,EAAEM,EAAEiH,GAAGK,GAAE,EAAGN,EAAErE,GAAGzC,GAAE,WAAY,IAAIZ,EAAEiD,KAAK,OAAM,EAAGjD,EAAEmR,MAAMC,IAAI,WAAWpR,EAAEuT,GAAGvT,EAAEwT,GAAG,CAAC1K,IAAI,UAAUD,MAAM,CAAC4K,SAAS,GAAG,gBAAgB,GAAG,iBAAgB,EAAG,eAAezT,EAAEuJ,kBAAkBR,GAAG,CAAC,aAAa/I,EAAEqT,UAAU,aAAarT,EAAEsT,WAAWzL,YAAY7H,EAAEsS,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAM,CAACxS,EAAEqS,GAAG,WAAW,EAAEI,OAAM,IAAK,MAAK,IAAK,WAAWzS,EAAEwL,QAAO,GAAIxL,EAAEyL,YAAY,CAACzL,EAAEqS,GAAG,YAAY,EAAG,GAAE,IAAG,EAAG,KAAK,KAAK,MAAM,mBAAmBzK,KAAKA,IAAII,GAAG,MAAMQ,EAAER,EAAEtI,SAAS,IAAI,CAACM,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACA,EAAE,IAAIU,IAAkB,MAAMD,GAAE,EAAhBN,EAAE,MAAmB0T,qBAAqBC,eAAe,CAAC,CAACC,OAAO,KAAKC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,eAAeC,QAAQ,YAAYC,WAAW,WAAW,mBAAmB,qBAAqB,kEAAkE,iEAAiE,0BAA0B,6BAA6B,oCAAoC,uCAAuC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,SAAS,aAAa,WAAW7H,MAAM,OAAO,cAAc,YAAY,mBAAmB,gBAAgB,gBAAgB,qBAAqB,kBAAkB,kBAAkB8H,OAAO,OAAO,YAAY,aAAa,kCAAkC,6BAA6B,qCAAqC,6BAA6BC,SAAS,QAAQC,MAAM,UAAU,eAAe,iBAAiB,kBAAkB,kBAAkBC,OAAO,QAAQ,sBAAsB,qBAAqB,gBAAgB,kBAAkB,8CAA8C,gEAAgE,eAAe,iBAAiBC,KAAK,SAAS,iBAAiB,kCAAkC,aAAa,qBAAqBC,QAAQ,UAAUC,KAAK,MAAM,iCAAiC,iCAAiC,kBAAkB,cAAc,qBAAqB,oBAAoB,kBAAkB,qBAAqB,gBAAgB,eAAe,gBAAgB,sBAAsB,6BAA6B,gCAAgCC,SAAS,SAAS,oBAAoB,gBAAgBC,OAAO,MAAM,iBAAiB,cAAc,eAAe,aAAaC,SAAS,YAAY,sBAAsB,kBAAkB,gBAAgB,iBAAiB,oBAAoB,4BAA4B,kBAAkB,YAAYC,OAAO,QAAQC,QAAQ,SAAS,kBAAkB,iBAAiB,2BAA2B,4BAA4B,6BAA6B,yBAAyB,eAAe,uBAAuB,oEAAoE,8EAA8E,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,mBAAmBC,QAAQ,UAAUC,WAAW,eAAe,mBAAmB,iBAAiBC,OAAO,QAAQ7H,MAAM,SAAS8H,OAAO,aAAaE,MAAM,YAAY,eAAe,iBAAiB,kBAAkB,iBAAiBE,KAAK,UAAU,iBAAiB,mBAAmB,aAAa,eAAeC,QAAQ,QAAQ,kBAAkB,qBAAqB,gBAAgB,aAAa,gBAAgB,iBAAiBE,SAAS,SAASC,OAAO,QAAQ,iBAAiB,uBAAuB,eAAe,kBAAkBC,SAAS,cAAc,oBAAoB,qBAAqB,kBAAkB,sBAAsBE,QAAQ,YAAY,kBAAkB,kBAAkB,6BAA6B,kCAAkC,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,kEAAkE,4EAA4E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,uBAAuB,eAAe,gBAAgBC,OAAO,OAAO,aAAa,eAAe7H,MAAM,QAAQ,cAAc,iBAAiB,mBAAmB,qBAAqB,gBAAgB,0BAA0B,kBAAkB,uBAAuB8H,OAAO,gBAAgB,YAAY,kBAAkB,kCAAkC,0CAA0C,oBAAoB,6BAA6B,qCAAqC,qCAAqCC,SAAS,WAAWC,MAAM,UAAU,eAAe,mBAAmB,kBAAkB,wBAAwBC,OAAO,SAAS,sBAAsB,oBAAoB,gBAAgB,qBAAqB,8CAA8C,0DAA0D,eAAe,kBAAkBC,KAAK,UAAU,iBAAiB,2BAA2B,aAAa,kBAAkBC,QAAQ,WAAWC,KAAK,QAAQ,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,yBAAyB,kBAAkB,uBAAuB,gBAAgB,iBAAiB,gBAAgB,iBAAiB,6BAA6B,gCAAgCC,SAAS,WAAW,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,qBAAqB,eAAe,2BAA2BC,SAAS,aAAa,sBAAsB,sBAAsB,gBAAgB,sBAAsB,oBAAoB,mBAAmB,kBAAkB,wBAAwBC,OAAO,QAAQC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,sCAAsC,6BAA6B,2BAA2B,eAAe,oBAAoB,gFAAgF,kGAAkG,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,OAAOC,WAAW,WAAW,mBAAmB,oBAAoB,kEAAkE,wDAAwD,0BAA0B,2CAA2C,oCAAoC,qDAAqD,iBAAiB,eAAe,eAAe,gBAAgBC,OAAO,SAAS,aAAa,eAAe7H,MAAM,SAAS,cAAc,wBAAwB,mBAAmB,kBAAkB,gBAAgB,yBAAyB,kBAAkB,iBAAiB8H,OAAO,qBAAqB,YAAY,kBAAkB,kCAAkC,+CAA+C,oBAAoB,6BAA6B,qCAAqC,gCAAgCC,SAAS,WAAWC,MAAM,WAAW,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,qBAAqB,gBAAgB,cAAc,8CAA8C,+CAA+C,eAAe,iBAAiBC,KAAK,cAAc,iBAAiB,yBAAyB,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,UAAU,iCAAiC,qCAAqC,kBAAkB,mBAAmB,qBAAqB,oBAAoB,kBAAkB,wBAAwB,gBAAgB,cAAc,gBAAgB,eAAe,6BAA6B,wBAAwBC,SAAS,YAAY,oBAAoB,yBAAyBC,OAAO,SAAS,iBAAiB,mBAAmB,eAAe,gBAAgBC,SAAS,YAAY,sBAAsB,qBAAqB,gBAAgB,iBAAiB,oBAAoB,iBAAiB,kBAAkB,qBAAqBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,iCAAiC,6BAA6B,2BAA2B,eAAe,kBAAkB,gFAAgF,0KAA0K,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,aAAaC,WAAW,cAAc,mBAAmB,cAAc,kEAAkE,2DAA2D,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,qBAAqB,eAAe,YAAYC,OAAO,OAAO,aAAa,YAAY7H,MAAM,MAAM,cAAc,aAAa,mBAAmB,iBAAiB,gBAAgB,gBAAgB,kBAAkB,oBAAoB8H,OAAO,kBAAkB,YAAY,eAAe,kCAAkC,oCAAoC,oBAAoB,8BAA8B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,OAAO,eAAe,eAAe,kBAAkB,aAAaC,OAAO,SAAS,sBAAsB,qBAAqB,gBAAgB,gBAAgB,8CAA8C,sCAAsC,eAAe,WAAWC,KAAK,SAAS,iBAAiB,qBAAqB,aAAa,mBAAmBC,QAAQ,WAAWC,KAAK,MAAM,iCAAiC,iCAAiC,kBAAkB,iBAAiB,qBAAqB,uBAAuB,kBAAkB,wBAAwB,gBAAgB,8BAA8B,gBAAgB,gBAAgB,6BAA6B,6BAA6BC,SAAS,UAAU,oBAAoB,mBAAmBC,OAAO,MAAM,iBAAiB,iBAAiB,eAAe,gBAAgBC,SAAS,gBAAgB,sBAAsB,0BAA0B,gBAAgB,cAAc,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,OAAOC,QAAQ,WAAW,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,gCAAgC,eAAe,oBAAoB,gFAAgF,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,wBAAwBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,gBAAgB,kEAAkE,iFAAiF,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,uBAAuB,eAAe,eAAeC,OAAO,YAAY,aAAa,WAAW7H,MAAM,YAAY,cAAc,kBAAkB,mBAAmB,uBAAuB,gBAAgB,yBAAyB,kBAAkB,wBAAwB8H,OAAO,oBAAoB,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,+BAA+B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,kBAAkB,kBAAkB,mBAAmBC,OAAO,SAAS,sBAAsB,mBAAmB,gBAAgB,qBAAqB,8CAA8C,gDAAgD,eAAe,qBAAqBC,KAAK,SAAS,iBAAiB,sBAAsB,aAAa,mBAAmBC,QAAQ,cAAcC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,sBAAsB,kBAAkB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,kCAAkCC,SAAS,YAAY,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,iBAAiB,eAAe,uBAAuBC,SAAS,gBAAgB,sBAAsB,mCAAmC,gBAAgB,oBAAoB,oBAAoB,sBAAsB,kBAAkB,kBAAkBC,OAAO,aAAaC,QAAQ,UAAU,kBAAkB,gBAAgB,2BAA2B,gCAAgC,6BAA6B,4CAA4C,eAAe,+BAA+B,gFAAgF,8GAA8G,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,wBAAwBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,gBAAgB,kEAAkE,iFAAiF,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,uBAAuB,eAAe,eAAeC,OAAO,YAAY,aAAa,WAAW7H,MAAM,YAAY,cAAc,kBAAkB,mBAAmB,uBAAuB,gBAAgB,yBAAyB,kBAAkB,wBAAwB8H,OAAO,oBAAoB,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,+BAA+B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,kBAAkB,kBAAkB,mBAAmBC,OAAO,SAAS,sBAAsB,mBAAmB,gBAAgB,qBAAqB,8CAA8C,gDAAgD,eAAe,qBAAqBC,KAAK,SAAS,iBAAiB,sBAAsB,aAAa,mBAAmBC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,oBAAoB,qBAAqB,sBAAsB,kBAAkB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,iCAAiCC,SAAS,YAAY,oBAAoB,uBAAuBC,OAAO,QAAQ,iBAAiB,iBAAiB,eAAe,uBAAuBC,SAAS,gBAAgB,sBAAsB,mCAAmC,gBAAgB,oBAAoB,oBAAoB,sBAAsB,kBAAkB,kBAAkBC,OAAO,aAAaC,QAAQ,UAAU,kBAAkB,gBAAgB,2BAA2B,qCAAqC,6BAA6B,0CAA0C,eAAe,+BAA+B,gFAAgF,8GAA8G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,iBAAiB,qBAAqB,uBAAuBC,QAAQ,YAAYC,WAAW,iBAAiB,mBAAmB,aAAa,kEAAkE,mEAAmE,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,UAAU,aAAa,sBAAsB7H,MAAM,WAAW,cAAc,qBAAqB,mBAAmB,qBAAqB,gBAAgB,4BAA4B,kBAAkB,sBAAsB8H,OAAO,aAAa,YAAY,cAAc,kCAAkC,8BAA8B,oBAAoB,sBAAsB,qCAAqC,mCAAmCC,SAAS,YAAYC,MAAM,UAAU,eAAe,gBAAgB,kBAAkB,yBAAyBC,OAAO,WAAW,sBAAsB,+BAA+B,gBAAgB,6BAA6B,8CAA8C,4DAA4D,eAAe,yBAAyBC,KAAK,UAAU,iBAAiB,oBAAoB,aAAa,oBAAoBC,QAAQ,cAAcC,KAAK,UAAU,iCAAiC,0CAA0C,kBAAkB,oBAAoB,qBAAqB,oCAAoC,kBAAkB,4BAA4B,gBAAgB,kBAAkB,gBAAgB,qBAAqB,6BAA6B,sCAAsCC,SAAS,cAAc,oBAAoB,iBAAiBC,OAAO,YAAY,iBAAiB,0BAA0B,eAAe,mBAAmBC,SAAS,YAAY,sBAAsB,qBAAqB,gBAAgB,6BAA6B,oBAAoB,yBAAyB,kBAAkB,6BAA6BC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,uBAAuB,2BAA2B,0CAA0C,6BAA6B,0CAA0C,eAAe,mBAAmB,gFAAgF,qHAAqH,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,kEAAkE,kEAAkE,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,iBAAiB,eAAe,eAAeC,OAAO,SAAS,aAAa,aAAa7H,MAAM,QAAQ,cAAc,cAAc,mBAAmB,mBAAmB,gBAAgB,gBAAgB,kBAAkB,kBAAkB8H,OAAO,SAAS,YAAY,YAAY,kCAAkC,kCAAkC,oBAAoB,oBAAoB,qCAAqC,qCAAqCC,SAAS,YAAYC,MAAM,QAAQ,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,SAAS,sBAAsB,sBAAsB,gBAAgB,gBAAgB,8CAA8C,8CAA8C,eAAe,eAAeC,KAAK,OAAO,iBAAiB,iBAAiB,aAAa,aAAaC,QAAQ,UAAUC,KAAK,OAAO,iCAAiC,iCAAiC,kBAAkB,kBAAkB,qBAAqB,qBAAqB,kBAAkB,kBAAkB,gBAAgB,gBAAgB,gBAAgB,gBAAgB,6BAA6B,6BAA6BC,SAAS,WAAW,oBAAoB,oBAAoBC,OAAO,SAAS,iBAAiB,iBAAiB,eAAe,eAAeC,SAAS,WAAW,sBAAsB,sBAAsB,gBAAgB,gBAAgB,oBAAoB,oBAAoB,kBAAkB,kBAAkBC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,2BAA2B,6BAA6B,6BAA6B,eAAe,eAAe,gFAAgF,kFAAkF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,iBAAiB,qBAAqB,mBAAmBC,QAAQ,OAAOC,WAAW,WAAW,mBAAmB,kBAAkBC,OAAO,SAAS7H,MAAM,QAAQ8H,OAAO,SAASE,MAAM,SAAS,eAAe,qBAAqB,kBAAkB,cAAc,8CAA8C,yCAAyCE,KAAK,QAAQ,iBAAiB,qBAAqB,aAAa,sBAAsBC,QAAQ,WAAW,kBAAkB,sBAAsB,gBAAgB,gBAAgB,gBAAgB,kBAAkBE,SAAS,SAASC,OAAO,QAAQ,iBAAiB,eAAe,eAAe,kBAAkBC,SAAS,SAAS,sBAAsB,kBAAkB,oBAAoB,oBAAoB,kBAAkB,wBAAwBE,QAAQ,SAAS,kBAAkB,kBAAkB,6BAA6B,6BAA6B,wCAAwC,qCAAqC,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,sBAAsBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,wBAAwB,kEAAkE,oFAAoF,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,mBAAmB,eAAe,iBAAiBC,OAAO,SAAS,aAAa,gBAAgB7H,MAAM,SAAS,cAAc,eAAe,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,oBAAoB8H,OAAO,gBAAgB,YAAY,kBAAkB,kCAAkC,4DAA4D,oBAAoB,uBAAuB,qCAAqC,mCAAmCC,SAAS,WAAWC,MAAM,WAAW,eAAe,kBAAkB,kBAAkB,sBAAsBC,OAAO,SAAS,sBAAsB,oBAAoB,gBAAgB,qBAAqB,8CAA8C,0DAA0D,eAAe,eAAeC,KAAK,YAAY,iBAAiB,sBAAsB,aAAa,oBAAoBC,QAAQ,UAAUC,KAAK,QAAQ,iCAAiC,mCAAmC,kBAAkB,mBAAmB,qBAAqB,0BAA0B,kBAAkB,0BAA0B,gBAAgB,qBAAqB,gBAAgB,kBAAkB,6BAA6B,sCAAsCC,SAAS,WAAW,oBAAoB,wBAAwBC,OAAO,SAAS,iBAAiB,4BAA4B,eAAe,0BAA0BC,SAAS,UAAU,sBAAsB,yBAAyB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,0BAA0BC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,mBAAmB,2BAA2B,yCAAyC,6BAA6B,mCAAmC,eAAe,mBAAmB,gFAAgF,0GAA0G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,kBAAkBC,QAAQ,WAAWC,WAAW,YAAY,mBAAmB,uBAAuB,kEAAkE,kEAAkE,0BAA0B,4BAA4B,oCAAoC,uCAAuC,iBAAiB,qBAAqB,eAAe,iBAAiBC,OAAO,WAAW,aAAa,iBAAiB7H,MAAM,OAAO,cAAc,cAAc,mBAAmB,kBAAkB,gBAAgB,kBAAkB,kBAAkB,sBAAsB8H,OAAO,kBAAkB,YAAY,oBAAoB,kCAAkC,mDAAmD,oBAAoB,2CAA2C,qCAAqC,yCAAyCC,SAAS,UAAUC,MAAM,WAAW,eAAe,sBAAsB,kBAAkB,mBAAmBC,OAAO,UAAU,sBAAsB,sBAAsB,gBAAgB,qBAAqB,8CAA8C,kDAAkD,eAAe,qBAAqBC,KAAK,YAAY,iBAAiB,yBAAyB,aAAa,gBAAgBC,QAAQ,YAAYC,KAAK,QAAQ,iCAAiC,kCAAkC,kBAAkB,mBAAmB,qBAAqB,uBAAuB,kBAAkB,oBAAoB,gBAAgB,sBAAsB,gBAAgB,oBAAoB,6BAA6B,iCAAiCC,SAAS,WAAW,oBAAoB,8BAA8BC,OAAO,SAAS,iBAAiB,oBAAoB,eAAe,sBAAsBC,SAAS,YAAY,sBAAsB,sBAAsB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,iBAAiBC,OAAO,SAASC,QAAQ,YAAY,kBAAkB,qBAAqB,2BAA2B,iCAAiC,6BAA6B,6BAA6B,eAAe,oBAAoB,gFAAgF,8FAA8F,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,YAAYC,WAAW,eAAe,mBAAmB,mBAAmB,0BAA0B,iCAAiC,oCAAoC,2CAA2C,iBAAiB,oBAAoBC,OAAO,UAAU7H,MAAM,QAAQ,mBAAmB,mBAAmB,kBAAkB,qBAAqB8H,OAAO,aAAa,YAAY,mBAAmB,qCAAqC,2CAA2CE,MAAM,QAAQ,eAAe,gBAAgB,kBAAkB,iBAAiBC,OAAO,UAAU,sBAAsB,0BAA0B,8CAA8C,iDAAiDC,KAAK,WAAW,iBAAiB,qBAAqB,aAAa,cAAcC,QAAQ,kBAAkB,kBAAkB,kBAAkB,kBAAkB,qBAAqB,gBAAgB,iBAAiB,gBAAgB,gBAAgB,6BAA6B,uBAAuBE,SAAS,YAAYC,OAAO,OAAO,iBAAiB,eAAe,eAAe,eAAeC,SAAS,YAAY,sBAAsB,mBAAmB,oBAAoB,mBAAmB,kBAAkB,mBAAmBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,sBAAsB,2BAA2B,kCAAkC,6BAA6B,sBAAsB,eAAe,kBAAkB,oEAAoE,iFAAiF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,UAAUC,WAAW,YAAY,mBAAmB,mBAAmB,kEAAkE,0EAA0E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,4BAA4B,eAAe,oBAAoBC,OAAO,UAAU,aAAa,mBAAmB7H,MAAM,SAAS,cAAc,oBAAoB,mBAAmB,uBAAuB,gBAAgB,2BAA2B,kBAAkB,8BAA8B8H,OAAO,eAAe,YAAY,mBAAmB,kCAAkC,gDAAgD,oBAAoB,uBAAuB,qCAAqC,qCAAqCC,SAAS,SAASC,MAAM,WAAW,eAAe,wBAAwB,kBAAkB,uBAAuBC,OAAO,SAAS,sBAAsB,uBAAuB,gBAAgB,yBAAyB,8CAA8C,oDAAoD,eAAe,qBAAqBC,KAAK,UAAU,iBAAiB,qBAAqB,aAAa,iBAAiBC,QAAQ,SAASC,KAAK,SAAS,iCAAiC,wCAAwC,kBAAkB,uBAAuB,qBAAqB,+BAA+B,kBAAkB,+BAA+B,gBAAgB,oBAAoB,gBAAgB,sBAAsB,6BAA6B,oCAAoCC,SAAS,YAAY,oBAAoB,mBAAmBC,OAAO,WAAW,iBAAiB,yBAAyB,eAAe,0BAA0BC,SAAS,aAAa,sBAAsB,iCAAiC,gBAAgB,2BAA2B,oBAAoB,qBAAqB,kBAAkB,wBAAwBC,OAAO,UAAUC,QAAQ,WAAW,kBAAkB,iBAAiB,2BAA2B,mEAAmE,6BAA6B,mCAAmC,eAAe,0BAA0B,gFAAgF,2GAA2G,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,sBAAsBC,QAAQ,UAAUC,WAAW,cAAc,mBAAmB,qBAAqB,iBAAiB,sBAAsBC,OAAO,WAAW7H,MAAM,SAAS,kBAAkB,sBAAsB8H,OAAO,gBAAgB,qCAAqC,qCAAqCE,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,uBAAuB,8CAA8C,sDAAsDE,KAAK,WAAW,iBAAiB,+BAA+B,aAAa,iBAAiBC,QAAQ,WAAW,kBAAkB,qBAAqB,gBAAgB,kBAAkB,gBAAgB,qBAAqBE,SAAS,UAAUC,OAAO,SAAS,iBAAiB,sBAAsB,eAAe,2BAA2BC,SAAS,UAAU,sBAAsB,2BAA2B,oBAAoB,sBAAsB,kBAAkB,sBAAsBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,mBAAmB,6BAA6B,iCAAiC,wCAAwC,kDAAkD,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,eAAe,qBAAqB,gBAAgBC,QAAQ,SAASC,WAAW,WAAW,mBAAmB,YAAYC,OAAO,QAAQ7H,MAAM,QAAQ8H,OAAO,eAAeE,MAAM,QAAQ,eAAe,eAAe,kBAAkB,cAAcE,KAAK,MAAM,iBAAiB,iBAAiB,aAAa,aAAaC,QAAQ,QAAQ,kBAAkB,cAAc,gBAAgB,aAAa,gBAAgB,kBAAkBE,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,eAAe,eAAe,aAAaC,SAAS,SAAS,oBAAoB,mBAAmB,kBAAkB,cAAcE,QAAQ,QAAQ,kBAAkB,iBAAiB,6BAA6B,wBAAwB,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,sBAAsBC,QAAQ,YAAYC,WAAW,gBAAgB,mBAAmB,uBAAuB,kEAAkE,oEAAoE,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,yBAAyB,eAAe,sBAAsBC,OAAO,aAAa,aAAa,iBAAiB7H,MAAM,UAAU,cAAc,iBAAiB,mBAAmB,qBAAqB,gBAAgB,oBAAoB,kBAAkB,6BAA6B8H,OAAO,SAAS,YAAY,oBAAoB,kCAAkC,4CAA4C,oBAAoB,8BAA8B,qCAAqC,oCAAoCC,SAAS,UAAUC,MAAM,UAAU,eAAe,eAAe,kBAAkB,mBAAmBC,OAAO,WAAW,sBAAsB,0BAA0B,gBAAgB,mBAAmB,8CAA8C,yCAAyC,eAAe,oBAAoBC,KAAK,YAAY,iBAAiB,wBAAwB,aAAa,gBAAgBC,QAAQ,UAAUC,KAAK,YAAY,iCAAiC,mDAAmD,kBAAkB,uBAAuB,qBAAqB,uBAAuB,kBAAkB,4BAA4B,gBAAgB,kBAAkB,gBAAgB,yBAAyB,6BAA6B,sBAAsBC,SAAS,QAAQ,oBAAoB,yBAAyBC,OAAO,UAAU,iBAAiB,YAAY,eAAe,mBAAmBC,SAAS,cAAc,sBAAsB,6BAA6B,gBAAgB,uBAAuB,oBAAoB,uBAAuB,kBAAkB,sBAAsBC,OAAO,WAAWC,QAAQ,cAAc,kBAAkB,mBAAmB,2BAA2B,kCAAkC,6BAA6B,0BAA0B,eAAe,6BAA6B,gFAAgF,4HAA4H,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,WAAWC,WAAW,WAAW,mBAAmB,iBAAiBC,OAAO,QAAQ7H,MAAM,OAAO8H,OAAO,YAAYE,MAAM,QAAQ,eAAe,mBAAmB,kBAAkB,eAAeE,KAAK,QAAQ,iBAAiB,8BAA8B,aAAa,oBAAoBC,QAAQ,SAAS,kBAAkB,4BAA4B,gBAAgB,iBAAiB,gBAAgB,sBAAsBE,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,cAAcC,SAAS,aAAa,oBAAoB,6BAA6B,kBAAkB,uBAAuBE,QAAQ,OAAO,kBAAkB,qBAAqB,6BAA6B,6BAA6B,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,mBAAmBC,QAAQ,SAASC,WAAW,WAAW,mBAAmB,mBAAmB,kEAAkE,yFAAyF,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,oBAAoB,eAAe,qBAAqBC,OAAO,SAAS,aAAa,oBAAoB7H,MAAM,SAAS,cAAc,6BAA6B,mBAAmB,wBAAwB,gBAAgB,2BAA2B,kBAAkB,qBAAqB8H,OAAO,iBAAiB,YAAY,sBAAsB,kCAAkC,yCAAyC,oBAAoB,+BAA+B,qCAAqC,qCAAqCC,SAAS,YAAYC,MAAM,WAAW,eAAe,iBAAiB,kBAAkB,qBAAqBC,OAAO,UAAU,sBAAsB,mBAAmB,gBAAgB,uBAAuB,8CAA8C,qDAAqD,eAAe,mBAAmBC,KAAK,aAAa,iBAAiB,uBAAuB,aAAa,mBAAmBC,QAAQ,UAAUC,KAAK,OAAO,iCAAiC,mCAAmC,kBAAkB,sBAAsB,qBAAqB,uBAAuB,kBAAkB,yBAAyB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,6BAA6B,0CAA0CC,SAAS,aAAa,oBAAoB,oBAAoBC,OAAO,QAAQ,iBAAiB,uBAAuB,eAAe,yBAAyBC,SAAS,eAAe,sBAAsB,iCAAiC,gBAAgB,qBAAqB,oBAAoB,sBAAsB,kBAAkB,sBAAsBC,OAAO,QAAQC,QAAQ,UAAU,kBAAkB,kBAAkB,2BAA2B,oCAAoC,6BAA6B,gCAAgC,eAAe,yBAAyB,gFAAgF,0GAA0G,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,UAAU,mBAAmB,QAAQ,kEAAkE,+BAA+B,0BAA0B,sBAAsB,oCAAoC,gCAAgC,iBAAiB,WAAW,eAAe,UAAUC,OAAO,KAAK,aAAa,WAAW7H,MAAM,MAAM,cAAc,WAAW,mBAAmB,cAAc,gBAAgB,YAAY,kBAAkB,QAAQ8H,OAAO,OAAO,YAAY,KAAK,kCAAkC,eAAe,oBAAoB,YAAY,qCAAqC,mBAAmBC,SAAS,QAAQC,MAAM,KAAK,eAAe,UAAU,kBAAkB,SAASC,OAAO,KAAK,sBAAsB,SAAS,gBAAgB,YAAY,8CAA8C,4BAA4B,eAAe,SAASC,KAAK,IAAI,iBAAiB,cAAc,aAAa,KAAKC,QAAQ,IAAIC,KAAK,KAAK,iCAAiC,2BAA2B,kBAAkB,aAAa,qBAAqB,iBAAiB,kBAAkB,eAAe,gBAAgB,YAAY,gBAAgB,SAAS,6BAA6B,iBAAiBC,SAAS,IAAI,oBAAoB,SAASC,OAAO,KAAK,iBAAiB,OAAO,eAAe,QAAQC,SAAS,KAAK,sBAAsB,YAAY,gBAAgB,WAAW,oBAAoB,OAAO,kBAAkB,aAAaC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,QAAQ,2BAA2B,sBAAsB,6BAA6B,eAAe,eAAe,UAAU,gFAAgF,wCAAwC,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,mBAAmBC,QAAQ,WAAWC,WAAW,UAAU,mBAAmB,mBAAmBC,OAAO,aAAa7H,MAAM,UAAU8H,OAAO,WAAW,qCAAqC,gCAAgCE,MAAM,WAAW,eAAe,qBAAqB,kBAAkB,sBAAsB,8CAA8C,yCAAyCE,KAAK,QAAQ,iBAAiB,mBAAmB,aAAa,iBAAiBC,QAAQ,WAAW,kBAAkB,8BAA8B,gBAAgB,kBAAkB,gBAAgB,sBAAsBE,SAAS,aAAaC,OAAO,UAAU,iBAAiB,sBAAsB,eAAe,kBAAkBC,SAAS,aAAa,sBAAsB,wBAAwB,oBAAoB,uBAAuB,kBAAkB,0BAA0BC,OAAO,WAAWC,QAAQ,YAAY,kBAAkB,qBAAqB,6BAA6B,mCAAmC,wCAAwC,0DAA0D,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBG,OAAO,aAAa7H,MAAM,UAAUkI,KAAK,WAAW,aAAa,gBAAgB,kBAAkB,mBAAmBG,SAAS,gBAAgB,eAAe,mBAAmBE,SAAS,cAAc,kBAAkB,mBAAmB,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,qBAAqBC,QAAQ,QAAQC,WAAW,aAAa,mBAAmB,oBAAoB,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,sBAAsB,eAAe,iBAAiBC,OAAO,SAAS7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,qBAAqB,kBAAkB,uBAAuB8H,OAAO,cAAc,YAAY,QAAQ,qCAAqC,sCAAsCC,SAAS,WAAWC,MAAM,UAAU,eAAe,mBAAmB,kBAAkB,qBAAqBC,OAAO,WAAW,sBAAsB,sBAAsBS,MAAM,SAAS,8CAA8C,2EAA2E,6BAA6B,+BAA+BR,KAAK,SAAS,iBAAiB,6BAA6B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,kBAAkB,oBAAoB,kBAAkB,mBAAmB,gBAAgB,cAAc,gBAAgB,kBAAkB,6BAA6B,2BAA2BC,SAAS,YAAYC,OAAO,QAAQ,iBAAiB,0BAA0B,eAAe,gBAAgBC,SAAS,YAAY,sBAAsB,0BAA0B,oBAAoB,wBAAwB,kBAAkB,qBAAqBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,0CAA0C,6BAA6B,gCAAgC,eAAe,qBAAqB,oEAAoE,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,oBAAoBC,WAAW,qBAAqB,mBAAmB,0BAA0B,0BAA0B,4BAA4B,iBAAiB,8BAA8BC,OAAO,cAAc7H,MAAM,UAAU,kBAAkB,8BAA8B8H,OAAO,oBAAoB,qCAAqC,mCAAmCE,MAAM,UAAU,eAAe,aAAa,kBAAkB,oBAAoBC,OAAO,mBAAmB,8CAA8C,2CAA2CC,KAAK,kBAAkB,iBAAiB,8BAA8B,aAAa,aAAaC,QAAQ,eAAe,kBAAkB,0BAA0B,gBAAgB,kCAAkC,gBAAgB,kBAAkB,6BAA6B,+BAA+BE,SAAS,OAAOC,OAAO,YAAY,iBAAiB,qBAAqB,eAAe,kBAAkBC,SAAS,mBAAmB,sBAAsB,sBAAsB,oBAAoB,+BAA+B,kBAAkB,yBAAyBC,OAAO,cAAcC,QAAQ,cAAc,kBAAkB,gCAAgC,2BAA2B,yCAAyC,6BAA6B,6BAA6B,wCAAwC,4DAA4D,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,aAAaC,WAAW,cAAc,mBAAmB,eAAe,kEAAkE,sDAAsD,0BAA0B,6BAA6B,oCAAoC,mCAAmC,iBAAiB,mBAAmB,eAAe,eAAeC,OAAO,OAAO,aAAa,cAAc7H,MAAM,OAAO,cAAc,aAAa,mBAAmB,kBAAkB,gBAAgB,iBAAiB,kBAAkB,oBAAoB8H,OAAO,YAAY,YAAY,UAAU,kCAAkC,0CAA0C,oBAAoB,0BAA0B,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,QAAQ,eAAe,gBAAgB,kBAAkB,aAAaC,OAAO,SAAS,sBAAsB,wBAAwB,gBAAgB,gBAAgB,8CAA8C,6CAA6C,eAAe,uBAAuBC,KAAK,QAAQ,iBAAiB,mBAAmB,aAAa,mBAAmBC,QAAQ,WAAWC,KAAK,OAAO,iCAAiC,kCAAkC,kBAAkB,kBAAkB,qBAAqB,uBAAuB,kBAAkB,4BAA4B,gBAAgB,qBAAqB,gBAAgB,gBAAgB,6BAA6B,0BAA0BC,SAAS,UAAU,oBAAoB,sBAAsBC,OAAO,MAAM,iBAAiB,iBAAiB,eAAe,oBAAoBC,SAAS,gBAAgB,sBAAsB,0BAA0B,gBAAgB,cAAc,oBAAoB,wBAAwB,kBAAkB,4BAA4BC,OAAO,OAAOC,QAAQ,WAAW,kBAAkB,kBAAkB,2BAA2B,iCAAiC,6BAA6B,4BAA4B,eAAe,yBAAyB,gFAAgF,sFAAsF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,kBAAkBC,QAAQ,SAASC,WAAW,eAAe,mBAAmB,kBAAkB,0BAA0B,2BAA2B,oCAAoC,qCAAqC,iBAAiB,wBAAwBC,OAAO,OAAO7H,MAAM,UAAU,mBAAmB,oBAAoB,kBAAkB,yBAAyB8H,OAAO,YAAY,YAAY,gBAAgB,qCAAqC,oCAAoCE,MAAM,UAAU,eAAe,iBAAiB,kBAAkB,gBAAgBC,OAAO,UAAU,sBAAsB,yBAAyB,8CAA8C,8CAA8CC,KAAK,WAAW,iBAAiB,sBAAsB,aAAa,kBAAkBC,QAAQ,WAAW,kBAAkB,mBAAmB,kBAAkB,0BAA0B,gBAAgB,mBAAmB,gBAAgB,iBAAiB,6BAA6B,0BAA0BE,SAAS,SAASC,OAAO,SAAS,iBAAiB,iBAAiB,eAAe,sBAAsBC,SAAS,eAAe,sBAAsB,yBAAyB,oBAAoB,mBAAmB,kBAAkB,wBAAwBC,OAAO,YAAYC,QAAQ,WAAW,kBAAkB,oBAAoB,2BAA2B,gCAAgC,6BAA6B,8BAA8B,eAAe,6BAA6B,oEAAoE,4EAA4E,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,gBAAgBC,QAAQ,UAAUE,OAAO,SAAS7H,MAAM,SAASkI,KAAK,UAAU,aAAa,kBAAkB,kBAAkB,8BAA8BG,SAAS,YAAY,eAAe,2BAA2BE,SAAS,aAAa,kBAAkB,wBAAwB,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,sBAAsBC,QAAQ,YAAYC,WAAW,YAAY,mBAAmB,qBAAqB,kEAAkE,2EAA2E,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,gBAAgB,eAAe,cAAcC,OAAO,UAAU,aAAa,gBAAgB7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,mBAAmB8H,OAAO,YAAY,YAAY,iBAAiB,kCAAkC,8CAA8C,oBAAoB,gCAAgC,qCAAqC,sCAAsCC,SAAS,WAAWC,MAAM,QAAQ,eAAe,mBAAmB,kBAAkB,iBAAiBC,OAAO,YAAY,sBAAsB,kBAAkB,gBAAgB,cAAc,8CAA8C,yDAAyD,eAAe,kBAAkBC,KAAK,WAAW,iBAAiB,uBAAuB,aAAa,eAAeC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,mCAAmC,kBAAkB,mBAAmB,qBAAqB,wBAAwB,kBAAkB,0BAA0B,gBAAgB,iBAAiB,gBAAgB,gBAAgB,6BAA6B,0BAA0BC,SAAS,YAAY,oBAAoB,mBAAmBC,OAAO,SAAS,iBAAiB,sBAAsB,eAAe,mBAAmBC,SAAS,aAAa,sBAAsB,uBAAuB,gBAAgB,cAAc,oBAAoB,oBAAoB,kBAAkB,2BAA2BC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,6BAA6B,eAAe,gBAAgB,gFAAgF,gFAAgF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,QAAQC,WAAW,aAAa,mBAAmB,qBAAqB,kEAAkE,2EAA2E,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,sBAAsB,eAAe,iBAAiBC,OAAO,WAAW,aAAa,eAAe7H,MAAM,SAAS,cAAc,eAAe,mBAAmB,mBAAmB,gBAAgB,uBAAuB,kBAAkB,uBAAuB8H,OAAO,gBAAgB,YAAY,cAAc,kCAAkC,sCAAsC,oBAAoB,uBAAuB,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,cAAcC,OAAO,SAAS,sBAAsB,qBAAqB,gBAAgB,kBAAkB,8CAA8C,oDAAoD,eAAe,eAAeC,KAAK,UAAU,iBAAiB,0BAA0B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,iCAAiC,oCAAoC,kBAAkB,kBAAkB,qBAAqB,mBAAmB,kBAAkB,gCAAgC,gBAAgB,kBAAkB,gBAAgB,mBAAmB,6BAA6B,8BAA8BC,SAAS,WAAW,oBAAoB,wBAAwBC,OAAO,YAAY,iBAAiB,yBAAyB,eAAe,qBAAqBC,SAAS,gBAAgB,sBAAsB,6BAA6B,gBAAgB,gBAAgB,oBAAoB,mBAAmB,kBAAkB,iCAAiCC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,wCAAwC,6BAA6B,qCAAqC,eAAe,wBAAwB,gFAAgF,uFAAuF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,mBAAmBC,QAAQ,QAAQE,OAAO,WAAW7H,MAAM,SAASkI,KAAK,WAAW,aAAa,iBAAiB,kBAAkB,mBAAmBG,SAAS,WAAW,eAAe,0BAA0BE,SAAS,aAAa,kBAAkB,oBAAoB,6BAA6B,qCAAqC,CAACd,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,wBAAwBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,oBAAoB,kEAAkE,0EAA0E,0BAA0B,6BAA6B,oCAAoC,uCAAuC,iBAAiB,wBAAwB,eAAe,oBAAoBC,OAAO,UAAU,aAAa,gBAAgB7H,MAAM,YAAY,cAAc,oBAAoB,mBAAmB,sBAAsB,gBAAgB,wBAAwB,kBAAkB,0BAA0B8H,OAAO,eAAe,YAAY,oBAAoB,kCAAkC,0CAA0C,oBAAoB,4BAA4B,qCAAqC,sCAAsCC,SAAS,UAAUC,MAAM,UAAU,eAAe,sBAAsB,kBAAkB,qBAAqBC,OAAO,SAAS,sBAAsB,yBAAyB,gBAAgB,iBAAiB,8CAA8C,sDAAsD,eAAe,yBAAyBC,KAAK,YAAY,iBAAiB,4BAA4B,aAAa,sBAAsBC,QAAQ,UAAUC,KAAK,aAAa,iCAAiC,yCAAyC,kBAAkB,uBAAuB,qBAAqB,qBAAqB,kBAAkB,kCAAkC,gBAAgB,iBAAiB,gBAAgB,iBAAiB,6BAA6B,qCAAqCC,SAAS,WAAW,oBAAoB,iBAAiBC,OAAO,UAAU,iBAAiB,uBAAuB,eAAe,uBAAuBC,SAAS,SAAS,sBAAsB,kBAAkB,gBAAgB,eAAe,oBAAoB,oBAAoB,kBAAkB,sCAAsCC,OAAO,YAAYC,QAAQ,YAAY,kBAAkB,sBAAsB,2BAA2B,oCAAoC,6BAA6B,qCAAqC,eAAe,yBAAyB,gFAAgF,iHAAiH,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,uBAAuBC,QAAQ,YAAYC,WAAW,UAAU,mBAAmB,sBAAsB,0BAA0B,uBAAuB,oCAAoC,qCAAqC,iBAAiB,qBAAqBC,OAAO,WAAW7H,MAAM,UAAU,cAAc,yBAAyB,mBAAmB,oBAAoB,kBAAkB,wBAAwB8H,OAAO,mBAAmB,YAAY,mBAAmB,qCAAqC,mCAAmCE,MAAM,QAAQ,eAAe,eAAe,kBAAkB,qBAAqBC,OAAO,aAAa,sBAAsB,qBAAqBS,MAAM,YAAY,8CAA8C,0DAA0D,6BAA6B,+BAA+BR,KAAK,YAAY,iBAAiB,oBAAoB,aAAa,wBAAwBC,QAAQ,UAAUC,KAAK,UAAU,kBAAkB,oBAAoB,kBAAkB,6BAA6B,gBAAgB,cAAc,gBAAgB,kBAAkB,6BAA6B,qCAAqCC,SAAS,aAAaC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,iBAAiBC,SAAS,YAAY,sBAAsB,0BAA0B,oBAAoB,oBAAoB,kBAAkB,uBAAuBC,OAAO,YAAYC,QAAQ,UAAU,kBAAkB,sBAAsB,2BAA2B,oCAAoC,6BAA6B,0BAA0B,eAAe,qBAAqB,oEAAoE,qFAAqF,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,sBAAsB,qBAAqB,oBAAoBC,QAAQ,QAAQC,WAAW,WAAW,mBAAmB,qBAAqB,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,eAAeC,OAAO,SAAS7H,MAAM,WAAW,mBAAmB,oBAAoB,kBAAkB,iBAAiB8H,OAAO,OAAO,YAAY,kBAAkB,qCAAqC,mCAAmCE,MAAM,SAAS,eAAe,iBAAiB,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,mBAAmB,8CAA8C,4CAA4CC,KAAK,QAAQ,iBAAiB,2BAA2B,aAAa,kBAAkBC,QAAQ,UAAU,kBAAkB,oBAAoB,kBAAkB,yBAAyB,gBAAgB,eAAe,gBAAgB,oBAAoB,6BAA6B,8BAA8BE,SAAS,iBAAiBC,OAAO,SAAS,iBAAiB,wBAAwB,eAAe,gBAAgBC,SAAS,aAAa,sBAAsB,2BAA2B,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,UAAUC,QAAQ,UAAU,kBAAkB,sBAAsB,2BAA2B,8CAA8C,6BAA6B,8BAA8B,eAAe,eAAe,oEAAoE,0FAA0F,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,kBAAkBC,QAAQ,UAAUC,WAAW,aAAa,mBAAmB,mBAAmB,0BAA0B,uBAAuB,oCAAoC,yCAAyC,iBAAiB,qBAAqB,eAAe,iBAAiBC,OAAO,QAAQ,aAAa,mBAAmB7H,MAAM,QAAQ,cAAc,qBAAqB,mBAAmB,mBAAmB,gBAAgB,yBAAyB,kBAAkB,mBAAmB8H,OAAO,UAAU,YAAY,gBAAgB,kCAAkC,sCAAsC,qCAAqC,mCAAmCC,SAAS,eAAeC,MAAM,YAAY,eAAe,kBAAkB,kBAAkB,oBAAoBC,OAAO,UAAU,sBAAsB,oBAAoB,gBAAgB,cAAc,8CAA8C,iDAAiD,eAAe,oBAAoBC,KAAK,YAAY,iBAAiB,4BAA4B,aAAa,cAAcC,QAAQ,WAAWC,KAAK,QAAQ,iCAAiC,sCAAsC,kBAAkB,mBAAmB,qBAAqB,iBAAiB,kBAAkB,sBAAsB,gBAAgB,iBAAiB,cAAc,eAAe,yBAAyB,uBAAuB,eAAe,eAAe,cAAc,aAAa,cAAc,cAAc,cAAc,aAAa,gBAAgB,sBAAsB,6BAA6B,wBAAwBC,SAAS,YAAY,oBAAoB,gBAAgBC,OAAO,UAAU,iBAAiB,kBAAkB,eAAe,eAAeC,SAAS,aAAa,sBAAsB,wBAAwB,gBAAgB,eAAe,oBAAoB,gBAAgB,kBAAkB,qBAAqBC,OAAO,SAASC,QAAQ,UAAU,kBAAkB,qBAAqB,2BAA2B,wCAAwC,6BAA6B,8BAA8B,eAAe,uBAAuB,oEAAoE,kGAAkG,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,qBAAqB,qBAAqB,qBAAqBC,QAAQ,SAASC,WAAW,aAAa,mBAAmB,sBAAsB,0BAA0B,0BAA0B,oCAAoC,oCAAoC,iBAAiB,gBAAgB,eAAe,eAAeC,OAAO,YAAY7H,MAAM,UAAU,cAAc,gBAAgB,mBAAmB,qBAAqB,gBAAgB,sBAAsB,kBAAkB,oBAAoB8H,OAAO,UAAU,YAAY,eAAe,qCAAqC,oCAAoCC,SAAS,WAAWC,MAAM,UAAU,eAAe,eAAe,kBAAkB,kBAAkBC,OAAO,WAAW,sBAAsB,kBAAkBS,MAAM,SAAS,8CAA8C,yDAAyD,6BAA6B,8BAA8BR,KAAK,UAAU,iBAAiB,+BAA+B,aAAa,iBAAiBC,QAAQ,UAAUC,KAAK,SAAS,kBAAkB,oBAAoB,kBAAkB,qBAAqB,gBAAgB,eAAe,gBAAgB,iBAAiB,6BAA6B,mCAAmCC,SAAS,YAAYC,OAAO,WAAW,iBAAiB,qBAAqB,eAAe,mBAAmBC,SAAS,WAAW,sBAAsB,6BAA6B,oBAAoB,mBAAmB,kBAAkB,oBAAoBC,OAAO,WAAWC,QAAQ,UAAU,kBAAkB,oBAAoB,2BAA2B,qCAAqC,6BAA6B,+BAA+B,eAAe,kBAAkB,oEAAoE,iFAAiF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,kBAAkB,qBAAqB,oBAAoBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,eAAe,kEAAkE,oEAAoE,0BAA0B,wBAAwB,oCAAoC,kCAAkC,iBAAiB,mBAAmB,eAAe,cAAcC,OAAO,OAAO,aAAa,eAAe7H,MAAM,QAAQ,cAAc,cAAc,mBAAmB,mBAAmB,gBAAgB,kBAAkB,kBAAkB,qBAAqB8H,OAAO,WAAW,YAAY,QAAQ,kCAAkC,wCAAwC,oBAAoB,2BAA2B,qCAAqC,mCAAmCC,SAAS,UAAUC,MAAM,UAAU,eAAe,cAAc,kBAAkB,eAAeC,OAAO,SAAS,sBAAsB,0BAA0B,gBAAgB,kBAAkB,8CAA8C,yCAAyC,eAAe,cAAcC,KAAK,QAAQ,iBAAiB,sBAAsB,aAAa,gBAAgBC,QAAQ,SAASC,KAAK,QAAQ,iCAAiC,oCAAoC,kBAAkB,mBAAmB,qBAAqB,wBAAwB,kBAAkB,mBAAmB,gBAAgB,eAAe,gBAAgB,gBAAgB,6BAA6B,gBAAgBC,SAAS,aAAa,oBAAoB,sBAAsBC,OAAO,MAAM,iBAAiB,cAAc,eAAe,cAAcC,SAAS,gBAAgB,sBAAsB,mBAAmB,gBAAgB,mBAAmB,oBAAoB,oBAAoB,kBAAkB,oBAAoBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,wBAAwB,2BAA2B,8BAA8B,6BAA6B,4BAA4B,eAAe,kBAAkB,gFAAgF,kGAAkG,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,mBAAmB,qBAAqB,kBAAkBC,QAAQ,WAAWC,WAAW,cAAc,mBAAmB,oBAAoB,kEAAkE,4DAA4D,0BAA0B,wBAAwB,oCAAoC,kCAAkC,iBAAiB,0BAA0B,eAAe,mBAAmBC,OAAO,QAAQ,aAAa,gBAAgB7H,MAAM,QAAQ,cAAc,8BAA8B,mBAAmB,kBAAkB,gBAAgB,mBAAmB,kBAAkB,wBAAwB8H,OAAO,OAAO,YAAY,gBAAgB,kCAAkC,yCAAyC,oBAAoB,6BAA6B,qCAAqC,4BAA4BC,SAAS,0BAA0BC,MAAM,YAAY,eAAe,eAAe,kBAAkB,oBAAoBC,OAAO,WAAW,sBAAsB,cAAc,gBAAgB,iBAAiB,8CAA8C,2CAA2C,eAAe,gBAAgBC,KAAK,UAAU,iBAAiB,gCAAgC,aAAa,gCAAgCC,QAAQ,WAAWC,KAAK,KAAK,iCAAiC,oCAAoC,kBAAkB,eAAe,qBAAqB,iBAAiB,kBAAkB,0BAA0B,gBAAgB,oBAAoB,gBAAgB,kBAAkB,6BAA6B,gCAAgCC,SAAS,SAAS,oBAAoB,mBAAmBC,OAAO,QAAQ,iBAAiB,kBAAkB,eAAe,mBAAmBC,SAAS,UAAU,sBAAsB,mBAAmB,gBAAgB,qBAAqB,oBAAoB,uBAAuB,kBAAkB,wBAAwBC,OAAO,SAASC,QAAQ,WAAW,kBAAkB,iBAAiB,2BAA2B,2CAA2C,6BAA6B,0BAA0B,eAAe,yBAAyB,gFAAgF,mFAAmF,CAAChB,OAAO,KAAKC,aAAa,CAAC,oBAAoB,oBAAoB,qBAAqB,oBAAoBC,QAAQ,MAAMC,WAAW,aAAa,mBAAmB,qBAAqB,0BAA0B,uBAAuB,oCAAoC,iCAAiC,iBAAiB,kBAAkB,eAAe,gBAAgBC,OAAO,mBAAmB,aAAa,iBAAiB7H,MAAM,UAAU,cAAc,iBAAiB,mBAAmB,oBAAoB,gBAAgB,uBAAuB,kBAAkB,oBAAoB8H,OAAO,SAAS,YAAY,qBAAqB,qCAAqC,oCAAoCC,SAAS,YAAYC,MAAM,UAAU,eAAe,eAAe,kBAAkB,aAAaC,OAAO,aAAa,sBAAsB,wBAAwB,gBAAgB,mBAAmBS,MAAM,WAAW,8CAA8C,sDAAsD,6BAA6B,8BAA8BR,KAAK,SAAS,iBAAiB,oBAAoB,aAAa,sBAAsBC,QAAQ,UAAUC,KAAK,WAAW,kBAAkB,qBAAqB,qBAAqB,mBAAmB,kBAAkB,yBAAyB,gBAAgB,gBAAgB,gBAAgB,oBAAoB,6BAA6B,yBAAyBC,SAAS,QAAQC,OAAO,QAAQ,iBAAiB,oBAAoB,eAAe,oBAAoBC,SAAS,eAAe,sBAAsB,4BAA4B,gBAAgB,kBAAkB,oBAAoB,mBAAmB,kBAAkB,uBAAuBC,OAAO,YAAYC,QAAQ,UAAU,kBAAkB,mBAAmB,2BAA2B,kCAAkC,6BAA6B,2BAA2B,eAAe,kBAAkB,oEAAoE,+EAA+E,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,cAAc,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,UAAU,kEAAkE,qBAAqB,0BAA0B,mBAAmB,oCAAoC,4BAA4B,iBAAiB,OAAO,eAAe,OAAOC,OAAO,KAAK,aAAa,OAAO7H,MAAM,KAAK,cAAc,OAAO,mBAAmB,OAAO,gBAAgB,QAAQ,kBAAkB,OAAO8H,OAAO,MAAM,YAAY,OAAO,kCAAkC,YAAY,oBAAoB,aAAa,qCAAqC,eAAeC,SAAS,KAAKC,MAAM,KAAK,eAAe,UAAU,kBAAkB,OAAOC,OAAO,KAAK,sBAAsB,QAAQ,gBAAgB,OAAO,8CAA8C,uBAAuB,eAAe,QAAQC,KAAK,MAAM,iBAAiB,QAAQ,aAAa,MAAMC,QAAQ,KAAKC,KAAK,KAAK,iCAAiC,yBAAyB,kBAAkB,OAAO,qBAAqB,OAAO,kBAAkB,QAAQ,gBAAgB,SAAS,gBAAgB,SAAS,6BAA6B,WAAWC,SAAS,MAAM,oBAAoB,OAAOC,OAAO,KAAK,iBAAiB,OAAO,eAAe,SAASC,SAAS,KAAK,sBAAsB,OAAO,gBAAgB,OAAO,oBAAoB,UAAU,kBAAkB,QAAQC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,UAAU,2BAA2B,UAAU,6BAA6B,SAAS,eAAe,OAAO,gFAAgF,uCAAuC,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,QAAQ,kEAAkE,sBAAsB,0BAA0B,oBAAoB,oCAAoC,6BAA6B,iBAAiB,OAAO,eAAe,OAAOC,OAAO,KAAK,aAAa,OAAO7H,MAAM,KAAK,cAAc,OAAO,mBAAmB,OAAO,gBAAgB,QAAQ,kBAAkB,OAAO8H,OAAO,MAAM,YAAY,OAAO,kCAAkC,WAAW,oBAAoB,aAAa,qCAAqC,gBAAgBC,SAAS,KAAKC,MAAM,KAAK,eAAe,QAAQ,kBAAkB,OAAOC,OAAO,MAAM,sBAAsB,OAAO,gBAAgB,OAAO,8CAA8C,uBAAuB,eAAe,SAASC,KAAK,MAAM,iBAAiB,UAAU,aAAa,MAAMC,QAAQ,KAAKC,KAAK,KAAK,iCAAiC,6BAA6B,kBAAkB,OAAO,qBAAqB,SAAS,kBAAkB,QAAQ,gBAAgB,KAAK,gBAAgB,SAAS,6BAA6B,SAASC,SAAS,MAAM,oBAAoB,OAAOC,OAAO,KAAK,iBAAiB,OAAO,eAAe,OAAOC,SAAS,KAAK,sBAAsB,QAAQ,gBAAgB,OAAO,oBAAoB,KAAK,kBAAkB,QAAQC,OAAO,KAAKC,QAAQ,KAAK,kBAAkB,QAAQ,2BAA2B,UAAU,6BAA6B,SAAS,eAAe,OAAO,gFAAgF,2CAA2C,CAAChB,OAAO,QAAQC,aAAa,CAAC,oBAAoB,aAAa,qBAAqB,aAAaC,QAAQ,KAAKC,WAAW,KAAK,mBAAmB,QAAQC,OAAO,KAAK7H,MAAM,KAAK8H,OAAO,MAAME,MAAM,KAAK,eAAe,QAAQ,kBAAkB,OAAO,8CAA8C,uBAAuBE,KAAK,MAAM,iBAAiB,UAAU,aAAa,MAAMC,QAAQ,KAAK,kBAAkB,QAAQ,gBAAgB,KAAK,gBAAgB,SAASE,SAAS,MAAMC,OAAO,KAAK,iBAAiB,OAAO,eAAe,OAAOC,SAAS,KAAK,sBAAsB,QAAQ,oBAAoB,KAAK,kBAAkB,QAAQE,QAAQ,KAAK,kBAAkB,QAAQ,6BAA6B,SAAS,wCAAwC,yBAAyBE,SAASlV,IAAI,MAAMC,EAAE,CAAC,EAAE,IAAI,MAAMG,KAAKJ,EAAEiU,aAAajU,EAAEiU,aAAa7T,GAAG+U,SAASlV,EAAEG,GAAG,CAACgV,MAAMhV,EAAEiV,aAAarV,EAAEiU,aAAa7T,GAAG+U,SAASG,OAAOtV,EAAEiU,aAAa7T,GAAGkV,QAAQrV,EAAEG,GAAG,CAACgV,MAAMhV,EAAEkV,OAAO,CAACtV,EAAEiU,aAAa7T,KAAKM,EAAE6U,eAAevV,EAAEgU,OAAO,CAACC,aAAa,CAAC,GAAGhU,IAAK,IAAG,MAAMQ,EAAEC,EAAE8U,QAAQ7U,GAAGF,EAAEgV,SAASpL,KAAK5J,GAAGA,EAAEiV,QAAQrL,KAAK5J,GAAE,EAAG,IAAI,CAACT,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI5C,IAAI,IAAID,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAG,MAAMC,EAAE,CAACkd,SAAS1a,KAAKqD,OAAOhG,SAAS,KAAK2C,KAAKoF,KAAKC,SAAS5H,IAAIqG,KAAKC,KAAK,GAAG5D,OAAOH,KAAKwW,SAASxY,KAAK,2DAA2DgC,MAAMA,KAAK2a,WAAW3a,KAAKyB,IAAIqB,SAAS,EAAE8X,eAAe5a,KAAKoF,KAAKpF,KAAK6a,SAAS,EAAE/a,OAAO,MAAM,CAACsF,KAAKpF,KAAK6a,UAAU,EAAExa,SAAS,CAACma,aAAa,OAAOxa,KAAKoF,MAAMpF,KAAKoF,KAAKC,OAAOlE,OAAO,EAAE,GAAGX,QAAQ,CAACqa,UAAU,OAAO7a,KAAKqD,OAAOhG,QAAQ2C,KAAKqD,OAAOhG,QAAQ,GAAG+H,KAAKC,OAAO,EAAE,GAAE,EAAG,KAAK,CAACtI,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI5C,IAAiB,MAA6FA,EAAE,CAACmM,OAAO,CAA9GxM,EAAE,KAA+GiD,GAAG/B,MAAM,CAACwG,KAAK,CAACtG,KAAKK,OAAOvB,QAAQ,IAAIW,KAAK,CAACO,KAAKK,OAAOvB,QAAQ,MAAMqI,MAAM,CAACnH,KAAKK,OAAOvB,QAAQ,IAAIyd,gBAAgB,CAACvc,KAAKC,QAAQnB,SAAQ,GAAI4B,UAAU,CAACV,KAAKK,OAAOvB,QAAQ,IAAI6B,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,OAAOwC,MAAM,CAAC,SAASQ,SAAS,CAAC4Y,oBAAoB,OAAO,OAAOjZ,KAAKhC,MAAMgC,KAAK0F,OAAOuC,EAAQlE,KAAK,gHAAgH/D,KAAK0F,OAAO1F,KAAKhC,IAAI,EAAEoc,YAAY,IAAI,OAAO,IAAIF,IAAIla,KAAK6E,KAAK,CAAC,MAAM9H,GAAG,OAAM,CAAE,CAAC,GAAGyD,QAAQ,CAAC2Z,QAAQpd,GAAG,GAAGiD,KAAKgB,MAAM,QAAQjE,GAAGiD,KAAK8a,gBAAgB,CAAC,MAAM/d,EAA7qB,SAASA,EAAEC,GAAG,IAAIG,EAAEJ,EAAEsc,QAAQ,KAAKlc,GAAG,CAAC,GAA+oB,cAA5oBA,EAAEqZ,SAASxY,KAAS,OAAOb,EAAEA,EAAEA,EAAEkc,OAAO,CAAC,CAA4lB5b,CAAEuC,MAAkBjD,GAAGA,EAAEkE,WAAWlE,EAAEkE,WAAU,EAAG,CAAC,GAAE,EAAG,KAAK,CAAClE,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI7C,IAAI,MAAMA,EAAER,GAAGmW,KAAKC,SAASzM,SAAS,IAAI0M,QAAQ,WAAW,IAAIpM,MAAM,EAAEjK,GAAG,EAAC,EAAG,KAAK,CAACA,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoQ,EAAE,IAAI7P,IAAIJ,EAAE,MAAM,MAAMI,EAAE,WAAW,OAAOkC,OAAO+T,OAAO7P,OAAO,CAAC8P,eAAe9P,OAAO8P,gBAAgB,KAAK9P,OAAO8P,cAAc,GAAG,KAAK,CAAC1W,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAGC,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,EAAJL,GAASM,KAAKC,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,81CAA81C,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,qCAAqC,yCAAyCC,MAAM,GAAGC,SAAS,goBAAgoBC,eAAe,CAAC,kNAAkN,usGAAusG,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAGC,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,EAAJL,GAASM,KAAKC,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,slDAAslD,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,qCAAqC,yCAAyCC,MAAM,GAAGC,SAAS,2sBAA2sBC,eAAe,CAAC,kNAAkN,usGAAusG,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAGC,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,EAAJL,GAASM,KAAKC,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,woCAAwoC,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,wQAAwQC,eAAe,CAAC,kNAAkN,mmCAAmmCC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAGC,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,EAAJL,GAASM,KAAKC,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,ocAAoc,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,yIAAyIC,eAAe,CAAC,kNAAkN,yfAAyfC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAGC,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,EAAJL,GAASM,KAAKC,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,ggDAAggD,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,2DAA2D,yCAAyCC,MAAM,GAAGC,SAAS,2dAA2dC,eAAe,CAAC,kNAAkN,8vDAA8vD,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAGC,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,EAAJL,GAASM,KAAKC,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,gjBAAgjB,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,8DAA8DC,MAAM,GAAGC,SAAS,kMAAkMC,eAAe,CAAC,kNAAkN,opBAAopBC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAGC,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,EAAJL,GAASM,KAAKC,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,4rIAA4rI,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,mDAAmD,yCAAyCC,MAAM,GAAGC,SAAS,8qCAA8qCC,eAAe,CAAC,kNAAkN,ojKAAojK,q7DAAq7DC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAK,CAACX,EAAEC,EAAEG,KAAK,aAAaA,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAIJ,EAAEJ,EAAE,MAAMM,EAAEN,EAAEM,EAAEF,GAAGC,EAAEL,EAAE,MAAMO,EAAEP,EAAEM,EAAED,EAAJL,GAASM,KAAKC,EAAE4V,KAAK,CAACvW,EAAE+J,GAAG,87DAA87D,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,sDAAsDC,MAAM,GAAGC,SAAS,4sBAA4sBC,eAAe,CAAC,kNAAkN,mtEAAmtEC,WAAW,MAAM,MAAMpW,EAAED,GAAG,KAAKX,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAE,GAAG,OAAOA,EAAE0J,SAAS,WAAW,OAAO1G,KAAKpD,KAAI,SAAUI,GAAG,IAAIG,EAAE,GAAGI,OAAE,IAASP,EAAE,GAAG,OAAOA,EAAE,KAAKG,GAAG,cAAcgD,OAAOnD,EAAE,GAAG,QAAQA,EAAE,KAAKG,GAAG,UAAUgD,OAAOnD,EAAE,GAAG,OAAOO,IAAIJ,GAAG,SAASgD,OAAOnD,EAAE,GAAGmE,OAAO,EAAE,IAAIhB,OAAOnD,EAAE,IAAI,GAAG,OAAOG,GAAGJ,EAAEC,GAAGO,IAAIJ,GAAG,KAAKH,EAAE,KAAKG,GAAG,KAAKH,EAAE,KAAKG,GAAG,KAAKA,CAAE,IAAGL,KAAK,GAAG,EAAEE,EAAEQ,EAAE,SAAST,EAAEI,EAAEI,EAAEE,EAAED,GAAG,iBAAiBT,IAAIA,EAAE,CAAC,CAAC,KAAKA,OAAE,KAAU,IAAIW,EAAE,CAAC,EAAE,GAAGH,EAAE,IAAI,IAAII,EAAE,EAAEA,EAAEqC,KAAKmB,OAAOxD,IAAI,CAAC,IAAIC,EAAEoC,KAAKrC,GAAG,GAAG,MAAMC,IAAIF,EAAEE,IAAG,EAAG,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAEd,EAAEoE,OAAOtD,IAAI,CAAC,IAAIT,EAAE,GAAG+C,OAAOpD,EAAEc,IAAIN,GAAGG,EAAEN,EAAE,WAAM,IAASI,SAAI,IAASJ,EAAE,KAAKA,EAAE,GAAG,SAAS+C,OAAO/C,EAAE,GAAG+D,OAAO,EAAE,IAAIhB,OAAO/C,EAAE,IAAI,GAAG,MAAM+C,OAAO/C,EAAE,GAAG,MAAMA,EAAE,GAAGI,GAAGL,IAAIC,EAAE,IAAIA,EAAE,GAAG,UAAU+C,OAAO/C,EAAE,GAAG,MAAM+C,OAAO/C,EAAE,GAAG,KAAKA,EAAE,GAAGD,GAAGC,EAAE,GAAGD,GAAGM,IAAIL,EAAE,IAAIA,EAAE,GAAG,cAAc+C,OAAO/C,EAAE,GAAG,OAAO+C,OAAO/C,EAAE,GAAG,KAAKA,EAAE,GAAGK,GAAGL,EAAE,GAAG,GAAG+C,OAAO1C,IAAIT,EAAEsW,KAAKlW,GAAG,CAAC,EAAEJ,CAAC,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAED,EAAE,GAAGI,EAAEJ,EAAE,GAAG,IAAII,EAAE,OAAOH,EAAE,GAAG,mBAAmBgX,KAAK,CAAC,IAAIzW,EAAEyW,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAUhX,MAAMM,EAAE,+DAA+D0C,OAAO5C,GAAGC,EAAE,OAAO2C,OAAO1C,EAAE,OAAO,MAAM,CAACT,GAAGmD,OAAO,CAAC3C,IAAIV,KAAK,KAAK,CAAC,MAAM,CAACE,GAAGF,KAAK,KAAK,GAAG,KAAKC,IAAI,aAAa,IAAIC,EAAE,GAAG,SAASG,EAAEJ,GAAG,IAAI,IAAII,GAAG,EAAEI,EAAE,EAAEA,EAAEP,EAAEmE,OAAO5D,IAAI,GAAGP,EAAEO,GAAG6W,aAAarX,EAAE,CAACI,EAAEI,EAAE,KAAK,CAAC,OAAOJ,CAAC,CAAC,SAASI,EAAER,EAAEQ,GAAG,IAAI,IAAIC,EAAE,CAAC,EAAEE,EAAE,GAAGC,EAAE,EAAEA,EAAEZ,EAAEoE,OAAOxD,IAAI,CAAC,IAAIC,EAAEb,EAAEY,GAAGE,EAAEN,EAAE8W,KAAKzW,EAAE,GAAGL,EAAE8W,KAAKzW,EAAE,GAAGR,EAAEI,EAAEK,IAAI,EAAEC,EAAE,GAAGqC,OAAOtC,EAAE,KAAKsC,OAAO/C,GAAGI,EAAEK,GAAGT,EAAE,EAAE,IAAIW,EAAEZ,EAAEW,GAAGmG,EAAE,CAACqQ,IAAI1W,EAAE,GAAG2W,MAAM3W,EAAE,GAAG4W,UAAU5W,EAAE,GAAG6W,SAAS7W,EAAE,GAAG8W,MAAM9W,EAAE,IAAI,IAAI,IAAIG,EAAEf,EAAEe,GAAG4W,aAAa3X,EAAEe,GAAG6W,QAAQ3Q,OAAO,CAAC,IAAID,EAAEvG,EAAEwG,EAAE1G,GAAGA,EAAEsX,QAAQlX,EAAEX,EAAE8X,OAAOnX,EAAE,EAAE,CAACyW,WAAWtW,EAAE8W,QAAQ5Q,EAAE2Q,WAAW,GAAG,CAACjX,EAAE4V,KAAKxV,EAAE,CAAC,OAAOJ,CAAC,CAAC,SAASD,EAAEV,EAAEC,GAAG,IAAIG,EAAEH,EAAEqK,OAAOrK,GAAe,OAAZG,EAAE4X,OAAOhY,GAAU,SAASC,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAEsX,MAAMvX,EAAEuX,KAAKtX,EAAEuX,QAAQxX,EAAEwX,OAAOvX,EAAEwX,YAAYzX,EAAEyX,WAAWxX,EAAEyX,WAAW1X,EAAE0X,UAAUzX,EAAE0X,QAAQ3X,EAAE2X,MAAM,OAAOvX,EAAE4X,OAAOhY,EAAEC,EAAE,MAAMG,EAAE2F,QAAQ,CAAC,CAAC/F,EAAEN,QAAQ,SAASM,EAAEU,GAAG,IAAID,EAAED,EAAER,EAAEA,GAAG,GAAGU,EAAEA,GAAG,CAAC,GAAG,OAAO,SAASV,GAAGA,EAAEA,GAAG,GAAG,IAAI,IAAIW,EAAE,EAAEA,EAAEF,EAAE2D,OAAOzD,IAAI,CAAC,IAAIC,EAAER,EAAEK,EAAEE,IAAIV,EAAEW,GAAGgX,YAAY,CAAC,IAAI,IAAI/W,EAAEL,EAAER,EAAEU,GAAGI,EAAE,EAAEA,EAAEL,EAAE2D,OAAOtD,IAAI,CAAC,IAAIT,EAAED,EAAEK,EAAEK,IAAI,IAAIb,EAAEI,GAAGuX,aAAa3X,EAAEI,GAAGwX,UAAU5X,EAAE8X,OAAO1X,EAAE,GAAG,CAACI,EAAEI,CAAC,CAAC,GAAG,IAAIb,IAAI,aAAa,IAAIC,EAAE,CAAC,EAAED,EAAEN,QAAQ,SAASM,EAAEI,GAAG,IAAII,EAAE,SAASR,GAAG,QAAG,IAASC,EAAED,GAAG,CAAC,IAAII,EAAEmC,SAASC,cAAcxC,GAAG,GAAG4G,OAAOqR,mBAAmB7X,aAAawG,OAAOqR,kBAAkB,IAAI7X,EAAEA,EAAE8X,gBAAgBC,IAAI,CAAC,MAAMnY,GAAGI,EAAE,IAAI,CAACH,EAAED,GAAGI,CAAC,CAAC,OAAOH,EAAED,EAAE,CAAhM,CAAkMA,GAAG,IAAIQ,EAAE,MAAM,IAAI4X,MAAM,2GAA2G5X,EAAEgP,YAAYpP,EAAE,GAAG,KAAKJ,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAEsC,SAAS8V,cAAc,SAAS,OAAOrY,EAAEmK,cAAclK,EAAED,EAAEsY,YAAYtY,EAAEoK,OAAOnK,EAAED,EAAE0T,SAASzT,CAAC,GAAG,KAAK,CAACD,EAAEC,EAAEG,KAAK,aAAaJ,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAEG,EAAEmY,GAAGtY,GAAGD,EAAEwW,aAAa,QAAQvW,EAAE,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,GAAG,oBAAoBuC,SAAS,MAAM,CAACyV,OAAO,WAAW,EAAEjS,OAAO,WAAW,GAAG,IAAI9F,EAAED,EAAEuK,mBAAmBvK,GAAG,MAAM,CAACgY,OAAO,SAAS5X,IAAI,SAASJ,EAAEC,EAAEG,GAAG,IAAII,EAAE,GAAGJ,EAAEsX,WAAWlX,GAAG,cAAc4C,OAAOhD,EAAEsX,SAAS,QAAQtX,EAAEoX,QAAQhX,GAAG,UAAU4C,OAAOhD,EAAEoX,MAAM,OAAO,IAAI9W,OAAE,IAASN,EAAEuX,MAAMjX,IAAIF,GAAG,SAAS4C,OAAOhD,EAAEuX,MAAMvT,OAAO,EAAE,IAAIhB,OAAOhD,EAAEuX,OAAO,GAAG,OAAOnX,GAAGJ,EAAEmX,IAAI7W,IAAIF,GAAG,KAAKJ,EAAEoX,QAAQhX,GAAG,KAAKJ,EAAEsX,WAAWlX,GAAG,KAAK,IAAIC,EAAEL,EAAEqX,UAAUhX,GAAG,oBAAoBwW,OAAOzW,GAAG,uDAAuD4C,OAAO6T,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAU3W,MAAM,QAAQR,EAAEiK,kBAAkB1J,EAAER,EAAEC,EAAEyT,QAAQ,CAAxe,CAA0ezT,EAAED,EAAEI,EAAE,EAAE2F,OAAO,YAAY,SAAS/F,GAAG,GAAG,OAAOA,EAAEwY,WAAW,OAAM,EAAGxY,EAAEwY,WAAWC,YAAYzY,EAAE,CAAvE,CAAyEC,EAAE,EAAE,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,EAAEC,GAAG,GAAGA,EAAEyY,WAAWzY,EAAEyY,WAAWC,QAAQ3Y,MAAM,CAAC,KAAKC,EAAE2Y,YAAY3Y,EAAEwY,YAAYxY,EAAE2Y,YAAY3Y,EAAEuP,YAAYjN,SAASsW,eAAe7Y,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,CAACA,EAAEC,EAAEG,KAAK,aAAa,SAASI,EAAER,EAAEC,EAAEG,EAAEI,EAAEE,EAAED,EAAEE,EAAEC,GAAG,IAAIC,EAAEC,EAAE,mBAAmBd,EAAEA,EAAE0T,QAAQ1T,EAAE,GAAGC,IAAIa,EAAEuF,OAAOpG,EAAEa,EAAEgY,gBAAgB1Y,EAAEU,EAAEiY,WAAU,GAAIvY,IAAIM,EAAEkY,YAAW,GAAIvY,IAAIK,EAAEmY,SAAS,UAAUxY,GAAGE,GAAGE,EAAE,SAASb,IAAIA,EAAEA,GAAGiD,KAAKiW,QAAQjW,KAAKiW,OAAOC,YAAYlW,KAAKmW,QAAQnW,KAAKmW,OAAOF,QAAQjW,KAAKmW,OAAOF,OAAOC,aAAa,oBAAoBE,sBAAsBrZ,EAAEqZ,qBAAqB3Y,GAAGA,EAAE6H,KAAKtF,KAAKjD,GAAGA,GAAGA,EAAEsZ,uBAAuBtZ,EAAEsZ,sBAAsBtT,IAAIrF,EAAE,EAAEG,EAAEyY,aAAa1Y,GAAGH,IAAIG,EAAED,EAAE,WAAWF,EAAE6H,KAAKtF,MAAMnC,EAAEkY,WAAW/V,KAAKmW,OAAOnW,MAAMuW,MAAMC,SAASC,WAAW,EAAEhZ,GAAGG,EAAE,GAAGC,EAAEkY,WAAW,CAAClY,EAAE6Y,cAAc9Y,EAAE,IAAIR,EAAES,EAAEuF,OAAOvF,EAAEuF,OAAO,SAASrG,EAAEC,GAAG,OAAOY,EAAE0H,KAAKtI,GAAGI,EAAEL,EAAEC,EAAE,CAAC,KAAK,CAAC,IAAIc,EAAED,EAAE8Y,aAAa9Y,EAAE8Y,aAAa7Y,EAAE,GAAGqC,OAAOrC,EAAEF,GAAG,CAACA,EAAE,CAAC,MAAM,CAACnB,QAAQM,EAAE0T,QAAQ5S,EAAE,CAACV,EAAEC,EAAEJ,EAAE,CAACoD,EAAE,IAAI7C,GAAE,EAAG,IAAIR,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAsB,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAyB,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAU,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAc,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAY,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAAK,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAA4C,EAAG,KAAKM,IAAI,aAAaA,EAAEN,QAAQ,EAAQ,MAA8C,GAAIO,EAAE,CAAC,EAAE,SAASG,EAAEI,GAAG,IAAIE,EAAET,EAAEO,GAAG,QAAG,IAASE,EAAE,OAAOA,EAAEhB,QAAQ,IAAIe,EAAER,EAAEO,GAAG,CAACuJ,GAAGvJ,EAAEd,QAAQ,CAAC,GAAG,OAAOM,EAAEQ,GAAGC,EAAEA,EAAEf,QAAQU,GAAGK,EAAEf,OAAO,CAACU,EAAEM,EAAEV,IAAI,IAAIC,EAAED,GAAGA,EAAE6Z,WAAW,IAAI7Z,EAAEM,QAAQ,IAAIN,EAAE,OAAOI,EAAEC,EAAEJ,EAAE,CAACG,EAAEH,IAAIA,GAAGG,EAAEC,EAAE,CAACL,EAAEC,KAAK,IAAI,IAAIO,KAAKP,EAAEG,EAAEI,EAAEP,EAAEO,KAAKJ,EAAEI,EAAER,EAAEQ,IAAIkC,OAAOoX,eAAe9Z,EAAEQ,EAAE,CAACuZ,YAAW,EAAGC,IAAI/Z,EAAEO,IAAG,EAAGJ,EAAEI,EAAE,CAACR,EAAEC,IAAIyC,OAAOuX,UAAUC,eAAe3R,KAAKvI,EAAEC,GAAGG,EAAEO,EAAEX,IAAI,oBAAoBma,QAAQA,OAAOC,aAAa1X,OAAOoX,eAAe9Z,EAAEma,OAAOC,YAAY,CAAC7I,MAAM,WAAW7O,OAAOoX,eAAe9Z,EAAE,aAAa,CAACuR,OAAM,GAAG,EAAGnR,EAAEmY,QAAG,EAAO,IAAI/X,EAAE,CAAC,EAAE,MAAM,MAAM,aAAaJ,EAAEO,EAAEH,GAAGJ,EAAEC,EAAEG,EAAE,CAACF,QAAQ,IAAImQ,IAAI,IAAIzQ,EAAEI,EAAE,KAAKH,EAAEG,EAAE,MAAMM,EAAEN,EAAE,MAAMK,EAAEL,EAAE,MAAMO,EAAEP,EAAE,MAAMQ,EAAER,EAAEM,EAAEC,GAAG,MAAME,EAAE,CAACb,EAAEC,EAAEG,KAAK,QAAG,IAASJ,EAAE,IAAI,IAAIQ,EAAER,EAAEoE,OAAO,EAAE5D,GAAG,EAAEA,IAAI,CAAC,MAAME,EAAEV,EAAEQ,GAAGC,GAAGC,EAAEiD,kBAAkBjD,EAAEoD,MAAM,IAAI7D,EAAE+B,QAAQtB,EAAEoD,KAAKnD,IAAID,EAAEiD,kBAAkB,iBAAiBjD,EAAEiD,iBAAiBG,IAAIjD,EAAEF,IAAI,IAAIV,EAAE+B,QAAQtB,EAAEiD,iBAAiBG,MAAMrD,IAAIE,GAAGE,MAAMJ,GAAGI,IAAID,IAAImG,KAAKC,KAAK,GAAG5D,OAAO3C,EAAEC,EAAEoD,IAAIpD,EAAEiD,iBAAiBG,IAAI,+BAA+BV,OAAOhD,EAAEqZ,SAASxY,KAAK,cAAcb,GAAGJ,EAAE+X,OAAOvX,EAAE,GAAG,GAAG,IAAIM,EAAEV,EAAE,KAAK,MAAMC,EAAE,EAAQ,OAAwC,IAAIU,EAAEX,EAAEM,EAAEL,GAAGW,EAAEZ,EAAE,MAAM8G,EAAE9G,EAAEM,EAAEM,GAAG,MAAMiG,EAAE,YAAYG,EAAE,CAACnG,KAAK,gBAAgBC,WAAW,CAACkL,UAAUpM,EAAEM,QAAQ0d,eAAe/d,EAAEK,QAAQ2d,aAAavd,EAAEJ,QAAQ4d,aAAazd,EAAEH,QAAQ6d,WAAWpd,KAAKO,MAAM,CAAC8c,SAAS,CAAC5c,KAAKK,OAAOvB,QAAQ,cAAcwC,MAAM,CAAC,WAAWC,KAAK,KAAI,CAAEsb,aAAa,GAAGC,cAAc,GAAGC,oBAAoB,CAACtd,KAAK,GAAGS,WAAU,EAAGqa,aAAY,EAAGxa,MAAK,KAAMoN,cAAc9N,EAAEoC,KAAKqD,OAAOhG,QAAQ,CAAC,gBAAgB2C,KAAK,EAAE4a,eAAehd,EAAEoC,KAAKqD,OAAOhG,QAAQ,CAAC,gBAAgB2C,KAAK,EAAE2S,UAAUhP,OAAOgI,iBAAiB,SAAS1H,KAAI,KAAMjE,KAAK4S,oBAAqB,GAAE,OAAM,EAAG/U,EAAE0d,WAAW,qBAAqBvb,KAAKwb,cAAc,EAAEvP,UAAUjM,KAAK4S,oBAAoB,EAAEiF,UAAU7X,KAAKwb,gBAAgBxb,KAAKyb,mBAAmB,EAAE5P,gBAAgBlI,OAAOmI,oBAAoB,SAAS9L,KAAK4S,qBAAoB,EAAG/U,EAAE6d,aAAa,qBAAqB1b,KAAKwb,cAAc,EAAEhb,QAAQ,CAACib,oBAAoBzb,KAAK4B,WAAU,KAAM,MAAM7E,EAAEiD,KAAKqD,OAAOhG,SAAS,GAAG2C,KAAK2b,WAAW5e,EAAG,GAAE,EAAE6e,aAAa7e,GAAGiD,KAAKoB,MAAMya,kBAAkBpa,IAAI+X,SAASzc,EAAE0c,iBAAiBzZ,KAAKsb,oBAAoBhd,MAAK,EAAG,EAAEkd,gBAAgBxb,KAAK4B,WAAU,KAAM5B,KAAK4S,oBAAqB,GAAE,EAAEA,qBAAqB,MAAM7V,EAAEiD,KAAKqD,OAAOhG,SAAS,GAAG,GAAG2C,KAAKoB,MAAM5B,UAAU,CAAC,MAAMxC,EAAED,EAAEoE,OAAOhE,EAAE,GAAGI,EAAEyC,KAAKoB,MAAM5B,UAAUsc,YAAY,IAAIre,EAAEuC,KAAK+b,cAAchf,GAAGiD,KAAKoB,MAAM4a,sBAAsBve,GAAGuC,KAAKoB,MAAM4a,oBAAoBF,aAAa,IAAIte,EAAEC,EAAEF,EAAEC,GAAGA,EAAE,EAAE,GAAG,EAAE,IAAIE,EAAE,EAAE,MAAMC,EAAEuV,KAAK+I,MAAMjf,EAAE,GAAG,KAAKQ,EAAE,GAAGE,EAAEV,EAAE,GAAG,CAAC,MAAMO,EAAEI,GAAGD,EAAE,EAAEA,EAAE,EAAEA,GAAG,EAAEwV,KAAKgJ,KAAK,EAAExe,EAAEV,EAAE,GAAGQ,GAAGwC,KAAKmc,SAASpf,EAAEQ,GAAG6e,KAAKjf,EAAEmW,KAAK/V,GAAGG,GAAG,CAACsC,KAAKqc,YAAYrc,KAAKqb,cAAcle,EAAEmf,MAAK,CAAEvf,EAAEC,IAAID,EAAEC,OAAOgD,KAAKob,aAAaje,EAAEP,KAAKI,GAAGD,EAAEC,KAAKgD,KAAKqb,cAAcle,EAAE,CAAC,EAAEkf,YAAYtf,EAAEC,GAAG,GAAGD,EAAEoE,SAASnE,EAAEmE,OAAO,OAAM,EAAG,GAAGpE,IAAIC,EAAE,OAAM,EAAG,GAAG,OAAOD,GAAG,OAAOC,EAAE,OAAM,EAAG,IAAI,IAAIG,EAAE,EAAEA,EAAEJ,EAAEoE,SAAShE,EAAE,GAAGJ,EAAEI,KAAKH,EAAEG,GAAG,OAAM,EAAG,OAAM,CAAE,EAAE4e,cAAchf,GAAG,OAAOA,EAAEwf,QAAO,CAAExf,EAAEC,EAAEG,IAAIJ,EAAEiD,KAAKmc,SAASnf,EAAEof,MAAM,EAAE,EAAED,SAASpf,GAAG,IAAIA,EAAE8F,UAAU,OAAO,EAAE,MAAM7F,EAAED,EAAE8F,UAAU2W,SAAS,GAAGrZ,OAAO6D,EAAE,aAAajH,EAAEyR,MAAMgO,SAAS,OAAOzf,EAAE8F,UAAUC,OAAO,GAAG3C,OAAO6D,EAAE,aAAa,MAAM7G,EAAEJ,EAAE+e,YAAY,OAAO9e,GAAGD,EAAE8F,UAAUE,IAAI,GAAG5C,OAAO6D,EAAE,aAAajH,EAAEyR,MAAMgO,SAAS,GAAGrf,CAAC,EAAEwF,eAAe5F,IAAIA,EAAE4F,gBAAgB5F,EAAE4F,kBAAiB,GAAI8Z,UAAU1f,GAAG,OAAOiD,KAAK2C,eAAe5F,EAAE,EAAEqc,QAAQrc,EAAEC,EAAEG,GAAiE,OAA9DA,GAAG6C,KAAKgB,MAAM,UAAUjE,EAAEC,GAAGgD,KAAKsb,oBAAoBhd,MAAK,EAAUgB,SAAS6C,iBAAiB,IAAIhC,OAAO6D,IAAIiO,SAASlV,IAAIA,EAAE8F,UAAUC,OAAO,GAAG3C,OAAO6D,EAAE,aAAc,IAAGhE,KAAK2C,eAAe5F,EAAE,EAAE2f,SAAS3f,GAAG,OAAOiD,KAAK2C,eAAe5F,EAAE,EAAEuc,UAAUvc,EAAEC,GAAG,IAAIA,GAAGD,EAAEiF,OAAOC,QAAQ,CAAC,MAAMjF,EAAED,EAAEiF,OAAOC,QAAQ,IAAI9B,OAAO6D,IAAOhH,EAAE6F,WAAW7F,EAAE6F,UAAU2W,SAASxV,KAAI1E,SAAS6C,iBAAiB,IAAIhC,OAAO6D,IAAIiO,SAASlV,IAAIA,EAAE8F,UAAUC,OAAO,GAAG3C,OAAO6D,EAAE,aAAc,IAAGhH,EAAE6F,UAAUE,IAAI,GAAG5C,OAAO6D,EAAE,cAAc,CAAC,EAAEuV,UAAUxc,EAAEC,GAAG,IAAIA,IAAID,EAAEiF,OAAOwX,SAASzc,EAAE0c,gBAAgB1c,EAAEiF,OAAOC,QAAQ,CAAC,MAAMjF,EAAED,EAAEiF,OAAOC,QAAQ,IAAI9B,OAAO6D,IAAI,GAAGhH,EAAEwc,SAASzc,EAAE0c,eAAe,OAAOzc,EAAE6F,WAAW7F,EAAE6F,UAAU2W,SAASxV,IAAIhH,EAAE6F,UAAUC,OAAO,GAAG3C,OAAO6D,EAAE,aAAa,CAAC,EAAE2X,WAAW5e,GAAG,IAAIC,EAAEkE,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,EAAEnE,EAAEkV,SAAQ,CAAElV,EAAEI,KAAK,IAAII,EAAE,MAAMR,GAAG,QAAQQ,EAAER,EAAEqf,WAAM,IAAS7e,GAAGA,EAAEsF,YAAY7C,KAAKqb,cAAcva,SAAS3D,EAAEH,GAAGD,EAAEqf,IAAIvZ,UAAUE,IAAI,GAAG5C,OAAO6D,EAAE,aAAajH,EAAEqf,IAAIvZ,UAAUC,OAAO,GAAG3C,OAAO6D,EAAE,aAAc,GAAE,GAAGZ,OAAOrG,GAAG,MAAMC,EAAEgD,KAAKqD,OAAOhG,SAAS,GAAG,GAAG,IAAIL,EAAEmE,OAAO,OAAOxD,IAAIgf,IAAI3f,EAAE,GAAG0D,iBAAiB8C,UAAU,OAAOxD,KAAKmb,UAAU,IAAIhe,EAAE,GAAG,GAAG6C,KAAKob,aAAaja,OAAO,CAAChE,EAAEH,EAAEgK,MAAM,EAAEkM,KAAK0J,MAAM5f,EAAEmE,OAAO,IAAInB,KAAK2b,WAAWxe,GAAGA,EAAEmW,KAAKvW,EAAE,eAAe,CAAC+H,MAAM,WAAWzG,MAAM2B,KAAKsb,oBAAoB1V,MAAM,CAAC,eAAc,GAAIC,IAAI,oBAAoByJ,IAAI,uBAAuBmL,SAAS,CAACb,UAAU5Z,KAAKyc,UAAU1C,UAAU,KAAK/Z,KAAKsb,oBAAoBhd,MAAK,CAAC,EAAG0b,UAAUha,KAAK4b,cAAc9V,GAAG,CAAC,cAAc/I,IAAIiD,KAAKsb,oBAAoBhd,KAAKvB,KAAKiD,KAAKob,aAAaxe,KAAKI,IAAI,MAAMG,EAAEH,EAAE0D,iBAAiB8C,UAAUuE,GAAGxK,EAAEP,EAAE0D,iBAAiB8C,UAAUC,KAAKhG,EAAET,EAAE0D,iBAAiB8C,UAAUsV,YAAYtb,EAAER,EAAE0D,iBAAiB8C,UAAUkC,MAAMhI,EAAEV,EAAE0D,iBAAiB8C,UAAUxF,MAAMR,EAAE,IAAIG,EAAE,eAAeC,EAAEL,EAAEJ,IAAIQ,EAAE,iBAAiBC,EAAET,GAAG,MAAMU,EAAEd,EAAE,aAAa,CAACsB,MAAM,CAAC4H,KAAK,IAAID,KAAK,SAAS,OAAOjJ,EAAEY,EAAE,CAACmH,MAAMd,EAAE3F,MAAM,CAACoF,KAAKlG,EAAEmI,MAAMlI,EAAEQ,KAAK,GAAG+J,GAAG5K,GAAGyI,MAAM,CAAC+T,WAAU,GAAIc,SAAS,CAACb,UAAU5Z,KAAKyc,UAAU5C,KAAK9c,GAAGiD,KAAKoZ,QAAQrc,EAAEa,EAAEH,GAAGqc,SAAS9Z,KAAK0c,SAAS3C,UAAUhd,GAAGiD,KAAKsZ,UAAUvc,EAAEU,GAAGuc,UAAUjd,GAAGiD,KAAKuZ,UAAUxc,EAAEU,KAAK,CAACI,EAAEH,GAAI,MAAK,MAAMH,EAAEP,EAAEgK,MAAMkM,KAAK0J,MAAM5f,EAAEmE,OAAO,IAAIhE,EAAEA,EAAEgD,OAAO5C,GAAGyC,KAAK2b,WAAWpe,EAAEJ,EAAEgE,OAAO,EAAE,MAAMhE,EAAEH,EAAEgD,KAAK2b,WAAWxe,GAAG,MAAMI,EAAE,CAACR,EAAE,MAAM,CAAC,EAAE,CAACA,EAAE,KAAK,CAAC+H,MAAM,sBAAsB3H,MAAM,OAAO6C,KAAKqD,OAAOwZ,SAAStf,EAAE+V,KAAKvW,EAAE,MAAM,CAAC+H,MAAM,sBAAsBe,IAAI,uBAAuB7F,KAAKqD,OAAOwZ,UAAU9f,EAAE,MAAM,CAAC+H,MAAM,CAAC,aAAa,CAAC,wBAAwB9E,KAAKob,aAAaja,SAASnE,EAAEmE,OAAO,IAAI0E,IAAI,aAAatI,EAAE,GAAG,IAAI2G,EAAE/G,EAAE,MAAMiH,EAAEjH,EAAEM,EAAEyG,GAAGG,EAAElH,EAAE,MAAMoH,EAAEpH,EAAEM,EAAE4G,GAAGC,EAAEnH,EAAE,KAAKqH,EAAErH,EAAEM,EAAE6G,GAAGG,EAAEtH,EAAE,MAAMuH,EAAEvH,EAAEM,EAAEgH,GAAGE,EAAExH,EAAE,MAAM4H,EAAE5H,EAAEM,EAAEkH,GAAGY,EAAEpI,EAAE,MAAM+H,EAAE/H,EAAEM,EAAE8H,GAAGC,EAAErI,EAAE,MAAMsI,EAAE,CAAC,EAAEA,EAAEwB,kBAAkB/B,IAAIO,EAAEyB,cAAcxC,IAAIe,EAAE0B,OAAO3C,IAAI4C,KAAK,KAAK,QAAQ3B,EAAE4B,OAAO9C,IAAIkB,EAAE6B,mBAAmBvC,IAAIX,IAAIoB,EAAEpF,EAAEqF,GAAGD,EAAEpF,GAAGoF,EAAEpF,EAAEmH,QAAQ/B,EAAEpF,EAAEmH,OAAO,IAAIC,EAAErK,EAAE,MAAMsK,EAAEtK,EAAE,MAAMuK,EAAEvK,EAAEM,EAAEgK,GAAGnK,GAAE,EAAGkK,EAAEpH,GAAG+D,OAAEwD,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmBD,KAAKA,IAAIpK,GAAG,MAAMkQ,EAAElQ,EAAEb,OAAQ,EAA9sL,GAAktLc,CAAE,EAApo1J,uBCArS,SAASR,EAAEC,GAAqDC,EAAOR,QAAQO,GAA6M,CAA5R,CAA8RE,MAAK,IAAK,MAAM,IAAIH,EAAE,CAAC,KAAK,CAACA,EAAEC,EAAES,KAAK,aAAaA,EAAEL,EAAEJ,EAAE,CAACoD,EAAE,IAAIzC,IAAI,IAAID,EAAED,EAAE,MAAMF,EAAEE,EAAEA,EAAEC,GAAGF,EAAEC,EAAE,MAAMN,EAAEM,EAAEA,EAAED,EAAJC,GAASF,KAAKJ,EAAEmW,KAAK,CAACvW,EAAE+J,GAAG,kVAAkV,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,oEAAoEC,MAAM,GAAGC,SAAS,uKAAuKC,eAAe,CAAC,kNAAkN,gVAAgVC,WAAW,MAAM,MAAMpW,EAAER,GAAG,KAAKJ,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAE,GAAG,OAAOA,EAAE0J,SAAS,WAAW,OAAO1G,KAAKpD,KAAI,SAAUI,GAAG,IAAIS,EAAE,GAAGC,OAAE,IAASV,EAAE,GAAG,OAAOA,EAAE,KAAKS,GAAG,cAAc0C,OAAOnD,EAAE,GAAG,QAAQA,EAAE,KAAKS,GAAG,UAAU0C,OAAOnD,EAAE,GAAG,OAAOU,IAAID,GAAG,SAAS0C,OAAOnD,EAAE,GAAGmE,OAAO,EAAE,IAAIhB,OAAOnD,EAAE,IAAI,GAAG,OAAOS,GAAGV,EAAEC,GAAGU,IAAID,GAAG,KAAKT,EAAE,KAAKS,GAAG,KAAKT,EAAE,KAAKS,GAAG,KAAKA,CAAE,IAAGX,KAAK,GAAG,EAAEE,EAAEQ,EAAE,SAAST,EAAEU,EAAEC,EAAEH,EAAEC,GAAG,iBAAiBT,IAAIA,EAAE,CAAC,CAAC,KAAKA,OAAE,KAAU,IAAII,EAAE,CAAC,EAAE,GAAGO,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAEqC,KAAKmB,OAAOxD,IAAI,CAAC,IAAIE,EAAEmC,KAAKrC,GAAG,GAAG,MAAME,IAAIV,EAAEU,IAAG,EAAG,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAEf,EAAEoE,OAAOrD,IAAI,CAAC,IAAIF,EAAE,GAAGuC,OAAOpD,EAAEe,IAAIJ,GAAGP,EAAES,EAAE,WAAM,IAASJ,SAAI,IAASI,EAAE,KAAKA,EAAE,GAAG,SAASuC,OAAOvC,EAAE,GAAGuD,OAAO,EAAE,IAAIhB,OAAOvC,EAAE,IAAI,GAAG,MAAMuC,OAAOvC,EAAE,GAAG,MAAMA,EAAE,GAAGJ,GAAGC,IAAIG,EAAE,IAAIA,EAAE,GAAG,UAAUuC,OAAOvC,EAAE,GAAG,MAAMuC,OAAOvC,EAAE,GAAG,KAAKA,EAAE,GAAGH,GAAGG,EAAE,GAAGH,GAAGF,IAAIK,EAAE,IAAIA,EAAE,GAAG,cAAcuC,OAAOvC,EAAE,GAAG,OAAOuC,OAAOvC,EAAE,GAAG,KAAKA,EAAE,GAAGL,GAAGK,EAAE,GAAG,GAAGuC,OAAO5C,IAAIP,EAAEsW,KAAK1V,GAAG,CAAC,EAAEZ,CAAC,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAED,EAAE,GAAGU,EAAEV,EAAE,GAAG,IAAIU,EAAE,OAAOT,EAAE,GAAG,mBAAmBgX,KAAK,CAAC,IAAItW,EAAEsW,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAU1W,MAAMF,EAAE,+DAA+D4C,OAAOzC,GAAGF,EAAE,OAAO2C,OAAO5C,EAAE,OAAO,MAAM,CAACP,GAAGmD,OAAO,CAAC3C,IAAIV,KAAK,KAAK,CAAC,MAAM,CAACE,GAAGF,KAAK,KAAK,GAAG,KAAKC,IAAI,aAAa,IAAIC,EAAE,GAAG,SAASS,EAAEV,GAAG,IAAI,IAAIU,GAAG,EAAEC,EAAE,EAAEA,EAAEV,EAAEmE,OAAOzD,IAAI,GAAGV,EAAEU,GAAG0W,aAAarX,EAAE,CAACU,EAAEC,EAAE,KAAK,CAAC,OAAOD,CAAC,CAAC,SAASC,EAAEX,EAAEW,GAAG,IAAI,IAAIF,EAAE,CAAC,EAAEL,EAAE,GAAGQ,EAAE,EAAEA,EAAEZ,EAAEoE,OAAOxD,IAAI,CAAC,IAAIE,EAAEd,EAAEY,GAAGG,EAAEJ,EAAE2W,KAAKxW,EAAE,GAAGH,EAAE2W,KAAKxW,EAAE,GAAGD,EAAEJ,EAAEM,IAAI,EAAEC,EAAE,GAAGoC,OAAOrC,EAAE,KAAKqC,OAAOvC,GAAGJ,EAAEM,GAAGF,EAAE,EAAE,IAAIR,EAAEK,EAAEM,GAAGwG,EAAE,CAAC+P,IAAIzW,EAAE,GAAG0W,MAAM1W,EAAE,GAAG2W,UAAU3W,EAAE,GAAG4W,SAAS5W,EAAE,GAAG6W,MAAM7W,EAAE,IAAI,IAAI,IAAIT,EAAEJ,EAAEI,GAAGuX,aAAa3X,EAAEI,GAAGwX,QAAQrQ,OAAO,CAAC,IAAIH,EAAE7G,EAAEgH,EAAE7G,GAAGA,EAAEmX,QAAQlX,EAAEX,EAAE8X,OAAOnX,EAAE,EAAE,CAACyW,WAAWrW,EAAE6W,QAAQxQ,EAAEuQ,WAAW,GAAG,CAACxX,EAAEmW,KAAKvV,EAAE,CAAC,OAAOZ,CAAC,CAAC,SAASI,EAAER,EAAEC,GAAG,IAAIS,EAAET,EAAEqK,OAAOrK,GAAe,OAAZS,EAAEsX,OAAOhY,GAAU,SAASC,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAEsX,MAAMvX,EAAEuX,KAAKtX,EAAEuX,QAAQxX,EAAEwX,OAAOvX,EAAEwX,YAAYzX,EAAEyX,WAAWxX,EAAEyX,WAAW1X,EAAE0X,UAAUzX,EAAE0X,QAAQ3X,EAAE2X,MAAM,OAAOjX,EAAEsX,OAAOhY,EAAEC,EAAE,MAAMS,EAAEqF,QAAQ,CAAC,CAAC/F,EAAEN,QAAQ,SAASM,EAAEQ,GAAG,IAAIC,EAAEE,EAAEX,EAAEA,GAAG,GAAGQ,EAAEA,GAAG,CAAC,GAAG,OAAO,SAASR,GAAGA,EAAEA,GAAG,GAAG,IAAI,IAAII,EAAE,EAAEA,EAAEK,EAAE2D,OAAOhE,IAAI,CAAC,IAAIQ,EAAEF,EAAED,EAAEL,IAAIH,EAAEW,GAAGgX,YAAY,CAAC,IAAI,IAAI9W,EAAEH,EAAEX,EAAEQ,GAAGO,EAAE,EAAEA,EAAEN,EAAE2D,OAAOrD,IAAI,CAAC,IAAIF,EAAEH,EAAED,EAAEM,IAAI,IAAId,EAAEY,GAAG+W,aAAa3X,EAAEY,GAAGgX,UAAU5X,EAAE8X,OAAOlX,EAAE,GAAG,CAACJ,EAAEK,CAAC,CAAC,GAAG,IAAId,IAAI,aAAa,IAAIC,EAAE,CAAC,EAAED,EAAEN,QAAQ,SAASM,EAAEU,GAAG,IAAIC,EAAE,SAASX,GAAG,QAAG,IAASC,EAAED,GAAG,CAAC,IAAIU,EAAE6B,SAASC,cAAcxC,GAAG,GAAG4G,OAAOqR,mBAAmBvX,aAAakG,OAAOqR,kBAAkB,IAAIvX,EAAEA,EAAEwX,gBAAgBC,IAAI,CAAC,MAAMnY,GAAGU,EAAE,IAAI,CAACT,EAAED,GAAGU,CAAC,CAAC,OAAOT,EAAED,EAAE,CAAhM,CAAkMA,GAAG,IAAIW,EAAE,MAAM,IAAIyX,MAAM,2GAA2GzX,EAAE6O,YAAY9O,EAAE,GAAG,KAAKV,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAEsC,SAAS8V,cAAc,SAAS,OAAOrY,EAAEmK,cAAclK,EAAED,EAAEsY,YAAYtY,EAAEoK,OAAOnK,EAAED,EAAE0T,SAASzT,CAAC,GAAG,KAAK,CAACD,EAAEC,EAAES,KAAK,aAAaV,EAAEN,QAAQ,SAASM,GAAG,IAAIC,EAAES,EAAE6X,GAAGtY,GAAGD,EAAEwW,aAAa,QAAQvW,EAAE,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,GAAG,GAAG,oBAAoBuC,SAAS,MAAM,CAACyV,OAAO,WAAW,EAAEjS,OAAO,WAAW,GAAG,IAAI9F,EAAED,EAAEuK,mBAAmBvK,GAAG,MAAM,CAACgY,OAAO,SAAStX,IAAI,SAASV,EAAEC,EAAES,GAAG,IAAIC,EAAE,GAAGD,EAAEgX,WAAW/W,GAAG,cAAcyC,OAAO1C,EAAEgX,SAAS,QAAQhX,EAAE8W,QAAQ7W,GAAG,UAAUyC,OAAO1C,EAAE8W,MAAM,OAAO,IAAIhX,OAAE,IAASE,EAAEiX,MAAMnX,IAAIG,GAAG,SAASyC,OAAO1C,EAAEiX,MAAMvT,OAAO,EAAE,IAAIhB,OAAO1C,EAAEiX,OAAO,GAAG,OAAOhX,GAAGD,EAAE6W,IAAI/W,IAAIG,GAAG,KAAKD,EAAE8W,QAAQ7W,GAAG,KAAKD,EAAEgX,WAAW/W,GAAG,KAAK,IAAIF,EAAEC,EAAE+W,UAAUhX,GAAG,oBAAoBwW,OAAOtW,GAAG,uDAAuDyC,OAAO6T,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAU3W,MAAM,QAAQR,EAAEiK,kBAAkBvJ,EAAEX,EAAEC,EAAEyT,QAAQ,CAAxe,CAA0ezT,EAAED,EAAEU,EAAE,EAAEqF,OAAO,YAAY,SAAS/F,GAAG,GAAG,OAAOA,EAAEwY,WAAW,OAAM,EAAGxY,EAAEwY,WAAWC,YAAYzY,EAAE,CAAvE,CAAyEC,EAAE,EAAE,GAAG,KAAKD,IAAI,aAAaA,EAAEN,QAAQ,SAASM,EAAEC,GAAG,GAAGA,EAAEyY,WAAWzY,EAAEyY,WAAWC,QAAQ3Y,MAAM,CAAC,KAAKC,EAAE2Y,YAAY3Y,EAAEwY,YAAYxY,EAAE2Y,YAAY3Y,EAAEuP,YAAYjN,SAASsW,eAAe7Y,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK,CAACA,EAAEC,EAAES,KAAK,aAAa,SAASC,EAAEX,EAAEC,EAAES,EAAEC,EAAEH,EAAEC,EAAEL,EAAEQ,GAAG,IAAIE,EAAEC,EAAE,mBAAmBf,EAAEA,EAAE0T,QAAQ1T,EAAE,GAAGC,IAAIc,EAAEsF,OAAOpG,EAAEc,EAAE+X,gBAAgBpY,EAAEK,EAAEgY,WAAU,GAAIpY,IAAII,EAAEiY,YAAW,GAAIvY,IAAIM,EAAEkY,SAAS,UAAUxY,GAAGL,GAAGU,EAAE,SAASd,IAAIA,EAAEA,GAAGiD,KAAKiW,QAAQjW,KAAKiW,OAAOC,YAAYlW,KAAKmW,QAAQnW,KAAKmW,OAAOF,QAAQjW,KAAKmW,OAAOF,OAAOC,aAAa,oBAAoBE,sBAAsBrZ,EAAEqZ,qBAAqB7Y,GAAGA,EAAE+H,KAAKtF,KAAKjD,GAAGA,GAAGA,EAAEsZ,uBAAuBtZ,EAAEsZ,sBAAsBtT,IAAI5F,EAAE,EAAEW,EAAEwY,aAAazY,GAAGN,IAAIM,EAAEF,EAAE,WAAWJ,EAAE+H,KAAKtF,MAAMlC,EAAEiY,WAAW/V,KAAKmW,OAAOnW,MAAMuW,MAAMC,SAASC,WAAW,EAAElZ,GAAGM,EAAE,GAAGC,EAAEiY,WAAW,CAACjY,EAAE4Y,cAAc7Y,EAAE,IAAID,EAAEE,EAAEsF,OAAOtF,EAAEsF,OAAO,SAASrG,EAAEC,GAAG,OAAOa,EAAEyH,KAAKtI,GAAGY,EAAEb,EAAEC,EAAE,CAAC,KAAK,CAAC,IAAIe,EAAED,EAAE6Y,aAAa7Y,EAAE6Y,aAAa5Y,EAAE,GAAGoC,OAAOpC,EAAEF,GAAG,CAACA,EAAE,CAAC,MAAM,CAACpB,QAAQM,EAAE0T,QAAQ3S,EAAE,CAACL,EAAEL,EAAEJ,EAAE,CAACoD,EAAE,IAAI1C,GAAE,GAAIV,EAAE,CAAC,EAAE,SAASS,EAAEC,GAAG,IAAIH,EAAEP,EAAEU,GAAG,QAAG,IAASH,EAAE,OAAOA,EAAEd,QAAQ,IAAIe,EAAER,EAAEU,GAAG,CAACoJ,GAAGpJ,EAAEjB,QAAQ,CAAC,GAAG,OAAOM,EAAEW,GAAGF,EAAEA,EAAEf,QAAQgB,GAAGD,EAAEf,OAAO,CAACgB,EAAEA,EAAEV,IAAI,IAAIC,EAAED,GAAGA,EAAE6Z,WAAW,IAAI7Z,EAAEM,QAAQ,IAAIN,EAAE,OAAOU,EAAEL,EAAEJ,EAAE,CAACG,EAAEH,IAAIA,GAAGS,EAAEL,EAAE,CAACL,EAAEC,KAAK,IAAI,IAAIU,KAAKV,EAAES,EAAEF,EAAEP,EAAEU,KAAKD,EAAEF,EAAER,EAAEW,IAAI+B,OAAOoX,eAAe9Z,EAAEW,EAAE,CAACoZ,YAAW,EAAGC,IAAI/Z,EAAEU,IAAG,EAAGD,EAAEF,EAAE,CAACR,EAAEC,IAAIyC,OAAOuX,UAAUC,eAAe3R,KAAKvI,EAAEC,GAAGS,EAAEC,EAAEX,IAAI,oBAAoBma,QAAQA,OAAOC,aAAa1X,OAAOoX,eAAe9Z,EAAEma,OAAOC,YAAY,CAAC7I,MAAM,WAAW7O,OAAOoX,eAAe9Z,EAAE,aAAa,CAACuR,OAAM,GAAG,EAAG7Q,EAAE6X,QAAG,EAAO,IAAI5X,EAAE,CAAC,EAAE,MAAM,MAAM,aAAaD,EAAEC,EAAEA,GAAGD,EAAEL,EAAEM,EAAE,CAACL,QAAQ,IAAIgH,IAAI,MAAMtH,EAAE,EAAQ,OAA0BC,EAAE,CAACgB,KAAK,mBAAmBK,MAAM,CAACye,IAAI,CAACve,KAAKK,OAAOvB,QAAQ,IAAIqI,MAAM,CAACnH,KAAKK,OAAOvB,QAAQ,KAAKyC,KAAK,KAAI,CAAEid,SAAS,KAAK/P,0BAA0BhN,KAAKgd,aAAa,EAAExc,QAAQ,CAACwM,oBAAoBhN,KAAK8c,MAAM9c,KAAK+c,eAAc,EAAGhgB,EAAEigB,aAAahd,KAAK8c,KAAK,IAAI,IAAIvf,EAAEE,EAAE,MAAMD,EAAEC,EAAEA,EAAEF,GAAGJ,EAAEM,EAAE,MAAME,EAAEF,EAAEA,EAAEN,GAAGU,EAAEJ,EAAE,KAAKK,EAAEL,EAAEA,EAAEI,GAAGD,EAAEH,EAAE,MAAMM,EAAEN,EAAEA,EAAEG,GAAGR,EAAEK,EAAE,MAAM8G,EAAE9G,EAAEA,EAAEL,GAAGgH,EAAE3G,EAAE,MAAMuG,EAAEvG,EAAEA,EAAE2G,GAAGH,EAAExG,EAAE,MAAMyG,EAAE,CAAC,EAAEA,EAAE+C,kBAAkBjD,IAAIE,EAAEgD,cAAcnJ,IAAImG,EAAEiD,OAAOrJ,IAAIsJ,KAAK,KAAK,QAAQlD,EAAEmD,OAAO1J,IAAIuG,EAAEoD,mBAAmB/C,IAAI/G,IAAIyG,EAAE7D,EAAE8D,GAAGD,EAAE7D,GAAG6D,EAAE7D,EAAEmH,QAAQtD,EAAE7D,EAAEmH,OAAO,IAAI/C,EAAE/G,EAAE,MAAM0G,EAAE1G,EAAE,MAAM6G,EAAE7G,EAAEA,EAAE0G,GAAGY,GAAE,EAAGP,EAAEpE,GAAGpD,GAAE,WAAY,IAAID,EAAEiD,KAAK,OAAM,EAAGjD,EAAEmR,MAAMC,IAAI,OAAO,CAACxI,YAAY,WAAWC,MAAM,CAACmB,KAAK,MAAM,eAAehK,EAAE2I,MAAM,aAAa3I,EAAE2I,OAAO4U,SAAS,CAAC2C,UAAUlgB,EAAE2R,GAAG3R,EAAEggB,YAAa,GAAE,IAAG,EAAG,KAAK,WAAW,MAAM,mBAAmBzY,KAAKA,IAAIS,GAAG,MAAMV,EAAEU,EAAEtI,OAAQ,EAAt6B,GAA06BiB,CAAE,EAA7tO,0BCA7RX,aAA+QG,KAA/QH,EAAoR,IAAK,MAAM,IAAIC,EAAE,CAAC,KAAK,CAACA,EAAED,EAAEU,KAAK,aAAaA,EAAEL,EAAEL,EAAE,CAACM,QAAQ,IAAImH,IAAI,MAAM9G,EAAE,CAACM,KAAK,WAAWK,MAAM,CAACqB,SAAS,CAACnB,KAAKC,QAAQnB,SAAQ,GAAIkB,KAAK,CAACA,KAAKK,OAAOE,UAAU9B,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,yBAAyB,sBAAsB,QAAQ,UAAU,WAAW+B,QAAQ/B,GAAGK,QAAQ,aAAauK,WAAW,CAACrJ,KAAKK,OAAOE,UAAU9B,IAAI,IAAI,CAAC,SAAS,QAAQ,UAAU+B,QAAQ/B,GAAGK,QAAQ,UAAUwK,KAAK,CAACtJ,KAAKC,QAAQnB,SAAQ,GAAI4B,UAAU,CAACV,KAAKK,OAAOvB,QAAQ,MAAMoG,KAAK,CAAClF,KAAKK,OAAOvB,QAAQ,MAAMyK,SAAS,CAACvJ,KAAKK,OAAOvB,QAAQ,MAAM0K,GAAG,CAACxJ,KAAK,CAACK,OAAOa,QAAQpC,QAAQ,MAAM2K,MAAM,CAACzJ,KAAKC,QAAQnB,SAAQ,GAAI6B,WAAW,CAACX,KAAKC,QAAQnB,QAAQ,OAAO+F,OAAOpG,GAAG,IAAID,EAAEU,EAAEC,EAAEH,EAAEJ,EAAEK,EAAEwC,KAAK,MAAMpC,EAAE,QAAQb,EAAEiD,KAAKqD,OAAOhG,eAAU,IAASN,GAAG,QAAQU,EAAEV,EAAE,UAAK,IAASU,GAAG,QAAQC,EAAED,EAAE2H,YAAO,IAAS1H,GAAG,QAAQH,EAAEG,EAAE2H,YAAO,IAAS9H,OAAE,EAAOA,EAAE+H,KAAK5H,GAAGG,IAAID,EAAED,EAAE,QAAQR,EAAE6C,KAAKqD,cAAS,IAASlG,OAAE,EAAOA,EAAE0H,KAAKjH,GAAGoC,KAAKf,WAAWgJ,EAAQlE,KAAK,mFAAmF,CAACqB,KAAKxH,EAAEqB,UAAUe,KAAKf,WAAWe,MAAM,MAAMgE,EAAE,WAAW,IAAIkE,SAASnL,EAAEoL,SAAS1K,EAAE2K,cAAc1K,GAAGwD,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE,OAAOlE,EAAEQ,EAAEuK,KAAKvK,EAAEiG,KAAK,SAAS,IAAI,CAACqB,MAAM,CAAC,aAAa,CAAC,wBAAwBnH,IAAIE,EAAE,wBAAwBA,IAAIF,EAAE,4BAA4BA,GAAGE,EAAE,CAAC,mBAAmBsC,OAAO3C,EAAEe,OAAOf,EAAEe,KAAK,mBAAmBf,EAAEqK,KAAKQ,OAAO5K,EAAE,2BAA2BC,IAAIkI,MAAM,CAAC,aAAapI,EAAEyB,UAAUS,SAASlC,EAAEkC,SAASnB,KAAKf,EAAEiG,KAAK,KAAKjG,EAAEoK,WAAWb,KAAKvJ,EAAEiG,KAAK,SAAS,KAAKA,MAAMjG,EAAEuK,IAAIvK,EAAEiG,KAAKjG,EAAEiG,KAAK,KAAKzB,QAAQxE,EAAEuK,IAAIvK,EAAEiG,KAAK,QAAQ,KAAK6E,KAAK9K,EAAEuK,IAAIvK,EAAEiG,KAAK,+BAA+B,KAAKqE,UAAUtK,EAAEuK,IAAIvK,EAAEiG,MAAMjG,EAAEsK,SAAStK,EAAEsK,SAAS,QAAQtK,EAAE+K,QAAQzC,GAAG,IAAItI,EAAEgL,WAAWvD,MAAMjI,IAAI,IAAIS,EAAEC,EAAE,QAAQD,EAAED,EAAEgL,kBAAa,IAAS/K,GAAG,QAAQC,EAAED,EAAEwH,aAAQ,IAASvH,GAAGA,EAAE4H,KAAK7H,EAAET,GAAG,MAAMD,GAAGA,EAAEC,EAAC,IAAK,CAACA,EAAE,OAAO,CAAC8H,MAAM,uBAAuB,CAACnH,EAAEX,EAAE,OAAO,CAAC8H,MAAM,mBAAmBc,MAAM,CAAC,cAAcpI,EAAE0B,aAAa,CAAC1B,EAAE6F,OAAOwB,OAAO,KAAKhH,EAAEb,EAAE,OAAO,CAAC8H,MAAM,oBAAoB,CAAClH,IAAI,QAAQ,EAAE,OAAOoC,KAAK+H,GAAG/K,EAAE,cAAc,CAACqB,MAAM,CAACoK,QAAO,EAAGV,GAAG/H,KAAK+H,GAAGC,MAAMhI,KAAKgI,OAAOpD,YAAY,CAACvH,QAAQ2G,KAAKA,GAAG,GAAG,IAAIzG,EAAEE,EAAE,MAAMN,EAAEM,EAAEA,EAAEF,GAAGC,EAAEC,EAAE,MAAMG,EAAEH,EAAEA,EAAED,GAAGK,EAAEJ,EAAE,KAAKE,EAAEF,EAAEA,EAAEI,GAAGmG,EAAEvG,EAAE,MAAML,EAAEK,EAAEA,EAAEuG,GAAGlG,EAAEL,EAAE,MAAMM,EAAEN,EAAEA,EAAEK,GAAGwG,EAAE7G,EAAE,MAAM2G,EAAE3G,EAAEA,EAAE6G,GAAGC,EAAE9G,EAAE,MAAM4G,EAAE,CAAC,EAAEA,EAAE4C,kBAAkB7C,IAAIC,EAAE6C,cAAc9J,IAAIiH,EAAE8C,OAAOxJ,IAAIyJ,KAAK,KAAK,QAAQ/C,EAAEgD,OAAOzJ,IAAIyG,EAAEiD,mBAAmBvJ,IAAIZ,IAAIoH,EAAEnE,EAAEiE,GAAGE,EAAEnE,GAAGmE,EAAEnE,EAAEmH,QAAQhD,EAAEnE,EAAEmH,OAAO,IAAIrD,EAAEzG,EAAE,MAAM0G,EAAE1G,EAAE,MAAMwG,EAAExG,EAAEA,EAAE0G,GAAGY,GAAE,EAAGb,EAAE9D,GAAG1C,OAAEiK,OAAUA,GAAU,EAAG,KAAK,WAAW,MAAM,mBAAmB1D,KAAKA,IAAIc,GAAG,MAAMP,EAAEO,EAAEtI,SAAS,KAAK,CAACO,EAAED,EAAEU,KAAK,aAAaA,EAAEL,EAAEL,EAAE,CAACqD,EAAE,IAAIxC,IAAI,IAAIF,EAAED,EAAE,MAAMF,EAAEE,EAAEA,EAAEC,GAAGP,EAAEM,EAAE,MAAMD,EAAEC,EAAEA,EAAEN,EAAJM,GAASF,KAAKC,EAAE8V,KAAK,CAACtW,EAAE8J,GAAG,4rIAA4rI,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,mDAAmD,yCAAyCC,MAAM,GAAGC,SAAS,8qCAA8qCC,eAAe,CAAC,kNAAkN,ojKAAojK,q7DAAq7DC,WAAW,MAAM,MAAMnW,EAAEJ,GAAG,KAAK,CAACR,EAAED,EAAEU,KAAK,aAAaA,EAAEL,EAAEL,EAAE,CAACqD,EAAE,IAAIxC,IAAI,IAAIF,EAAED,EAAE,MAAMF,EAAEE,EAAEA,EAAEC,GAAGP,EAAEM,EAAE,MAAMD,EAAEC,EAAEA,EAAEN,EAAJM,GAASF,KAAKC,EAAE8V,KAAK,CAACtW,EAAE8J,GAAG,gtFAAgtF,GAAG,CAAC4M,QAAQ,EAAEC,QAAQ,CAAC,4CAA4C,4DAA4DC,MAAM,GAAGC,SAAS,+0BAA+0BC,eAAe,CAAC,kNAAkN,+wFAA+wFC,WAAW,MAAM,MAAMnW,EAAEJ,GAAG,KAAKR,IAAI,aAAaA,EAAEP,QAAQ,SAASO,GAAG,IAAID,EAAE,GAAG,OAAOA,EAAE2J,SAAS,WAAW,OAAO1G,KAAKpD,KAAI,SAAUG,GAAG,IAAIU,EAAE,GAAGC,OAAE,IAASX,EAAE,GAAG,OAAOA,EAAE,KAAKU,GAAG,cAAc0C,OAAOpD,EAAE,GAAG,QAAQA,EAAE,KAAKU,GAAG,UAAU0C,OAAOpD,EAAE,GAAG,OAAOW,IAAID,GAAG,SAAS0C,OAAOpD,EAAE,GAAGoE,OAAO,EAAE,IAAIhB,OAAOpD,EAAE,IAAI,GAAG,OAAOU,GAAGT,EAAED,GAAGW,IAAID,GAAG,KAAKV,EAAE,KAAKU,GAAG,KAAKV,EAAE,KAAKU,GAAG,KAAKA,CAAE,IAAGX,KAAK,GAAG,EAAEC,EAAES,EAAE,SAASR,EAAES,EAAEC,EAAEH,EAAEJ,GAAG,iBAAiBH,IAAIA,EAAE,CAAC,CAAC,KAAKA,OAAE,KAAU,IAAIQ,EAAE,CAAC,EAAE,GAAGE,EAAE,IAAI,IAAIE,EAAE,EAAEA,EAAEoC,KAAKmB,OAAOvD,IAAI,CAAC,IAAIC,EAAEmC,KAAKpC,GAAG,GAAG,MAAMC,IAAIL,EAAEK,IAAG,EAAG,CAAC,IAAI,IAAIF,EAAE,EAAEA,EAAEX,EAAEmE,OAAOxD,IAAI,CAAC,IAAIqG,EAAE,GAAG7D,OAAOnD,EAAEW,IAAID,GAAGF,EAAEwG,EAAE,WAAM,IAAS7G,SAAI,IAAS6G,EAAE,KAAKA,EAAE,GAAG,SAAS7D,OAAO6D,EAAE,GAAG7C,OAAO,EAAE,IAAIhB,OAAO6D,EAAE,IAAI,GAAG,MAAM7D,OAAO6D,EAAE,GAAG,MAAMA,EAAE,GAAG7G,GAAGM,IAAIuG,EAAE,IAAIA,EAAE,GAAG,UAAU7D,OAAO6D,EAAE,GAAG,MAAM7D,OAAO6D,EAAE,GAAG,KAAKA,EAAE,GAAGvG,GAAGuG,EAAE,GAAGvG,GAAGF,IAAIyG,EAAE,IAAIA,EAAE,GAAG,cAAc7D,OAAO6D,EAAE,GAAG,OAAO7D,OAAO6D,EAAE,GAAG,KAAKA,EAAE,GAAGzG,GAAGyG,EAAE,GAAG,GAAG7D,OAAO5C,IAAIR,EAAEuW,KAAKtP,GAAG,CAAC,EAAEjH,CAAC,GAAG,KAAKC,IAAI,aAAaA,EAAEP,QAAQ,SAASO,GAAG,IAAID,EAAEC,EAAE,GAAGS,EAAET,EAAE,GAAG,IAAIS,EAAE,OAAOV,EAAE,GAAG,mBAAmBiX,KAAK,CAAC,IAAItW,EAAEsW,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAU1W,MAAMF,EAAE,+DAA+D4C,OAAOzC,GAAGP,EAAE,OAAOgD,OAAO5C,EAAE,OAAO,MAAM,CAACR,GAAGoD,OAAO,CAAChD,IAAIL,KAAK,KAAK,CAAC,MAAM,CAACC,GAAGD,KAAK,KAAK,GAAG,KAAKE,IAAI,aAAa,IAAID,EAAE,GAAG,SAASU,EAAET,GAAG,IAAI,IAAIS,GAAG,EAAEC,EAAE,EAAEA,EAAEX,EAAEoE,OAAOzD,IAAI,GAAGX,EAAEW,GAAG0W,aAAapX,EAAE,CAACS,EAAEC,EAAE,KAAK,CAAC,OAAOD,CAAC,CAAC,SAASC,EAAEV,EAAEU,GAAG,IAAI,IAAIP,EAAE,CAAC,EAAEK,EAAE,GAAGI,EAAE,EAAEA,EAAEZ,EAAEmE,OAAOvD,IAAI,CAAC,IAAIC,EAAEb,EAAEY,GAAGD,EAAED,EAAE2W,KAAKxW,EAAE,GAAGH,EAAE2W,KAAKxW,EAAE,GAAGmG,EAAE7G,EAAEQ,IAAI,EAAEP,EAAE,GAAG+C,OAAOxC,EAAE,KAAKwC,OAAO6D,GAAG7G,EAAEQ,GAAGqG,EAAE,EAAE,IAAIlG,EAAEL,EAAEL,GAAGW,EAAE,CAACuW,IAAIzW,EAAE,GAAG0W,MAAM1W,EAAE,GAAG2W,UAAU3W,EAAE,GAAG4W,SAAS5W,EAAE,GAAG6W,MAAM7W,EAAE,IAAI,IAAI,IAAIC,EAAEf,EAAEe,GAAG6W,aAAa5X,EAAEe,GAAG8W,QAAQ7W,OAAO,CAAC,IAAIuG,EAAE/G,EAAEQ,EAAEL,GAAGA,EAAEmX,QAAQjX,EAAEb,EAAE+X,OAAOlX,EAAE,EAAE,CAACwW,WAAWhX,EAAEwX,QAAQtQ,EAAEqQ,WAAW,GAAG,CAACnX,EAAE8V,KAAKlW,EAAE,CAAC,OAAOI,CAAC,CAAC,SAASD,EAAEP,EAAED,GAAG,IAAIU,EAAEV,EAAEsK,OAAOtK,GAAe,OAAZU,EAAEsX,OAAO/X,GAAU,SAASD,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAEuX,MAAMtX,EAAEsX,KAAKvX,EAAEwX,QAAQvX,EAAEuX,OAAOxX,EAAEyX,YAAYxX,EAAEwX,WAAWzX,EAAE0X,WAAWzX,EAAEyX,UAAU1X,EAAE2X,QAAQ1X,EAAE0X,MAAM,OAAOjX,EAAEsX,OAAO/X,EAAED,EAAE,MAAMU,EAAEqF,QAAQ,CAAC,CAAC9F,EAAEP,QAAQ,SAASO,EAAEO,GAAG,IAAIJ,EAAEO,EAAEV,EAAEA,GAAG,GAAGO,EAAEA,GAAG,CAAC,GAAG,OAAO,SAASP,GAAGA,EAAEA,GAAG,GAAG,IAAI,IAAIQ,EAAE,EAAEA,EAAEL,EAAEgE,OAAO3D,IAAI,CAAC,IAAII,EAAEH,EAAEN,EAAEK,IAAIT,EAAEa,GAAG+W,YAAY,CAAC,IAAI,IAAI9W,EAAEH,EAAEV,EAAEO,GAAGI,EAAE,EAAEA,EAAER,EAAEgE,OAAOxD,IAAI,CAAC,IAAIqG,EAAEvG,EAAEN,EAAEQ,IAAI,IAAIZ,EAAEiH,GAAG2Q,aAAa5X,EAAEiH,GAAG4Q,UAAU7X,EAAE+X,OAAO9Q,EAAE,GAAG,CAAC7G,EAAEU,CAAC,CAAC,GAAG,IAAIb,IAAI,aAAa,IAAID,EAAE,CAAC,EAAEC,EAAEP,QAAQ,SAASO,EAAES,GAAG,IAAIC,EAAE,SAASV,GAAG,QAAG,IAASD,EAAEC,GAAG,CAAC,IAAIS,EAAE6B,SAASC,cAAcvC,GAAG,GAAG2G,OAAOqR,mBAAmBvX,aAAakG,OAAOqR,kBAAkB,IAAIvX,EAAEA,EAAEwX,gBAAgBC,IAAI,CAAC,MAAMlY,GAAGS,EAAE,IAAI,CAACV,EAAEC,GAAGS,CAAC,CAAC,OAAOV,EAAEC,EAAE,CAAhM,CAAkMA,GAAG,IAAIU,EAAE,MAAM,IAAIyX,MAAM,2GAA2GzX,EAAE6O,YAAY9O,EAAE,GAAG,KAAKT,IAAI,aAAaA,EAAEP,QAAQ,SAASO,GAAG,IAAID,EAAEuC,SAAS8V,cAAc,SAAS,OAAOpY,EAAEkK,cAAcnK,EAAEC,EAAEqY,YAAYrY,EAAEmK,OAAOpK,EAAEC,EAAEyT,SAAS1T,CAAC,GAAG,KAAK,CAACC,EAAED,EAAEU,KAAK,aAAaT,EAAEP,QAAQ,SAASO,GAAG,IAAID,EAAEU,EAAE6X,GAAGvY,GAAGC,EAAEuW,aAAa,QAAQxW,EAAE,GAAG,KAAKC,IAAI,aAAaA,EAAEP,QAAQ,SAASO,GAAG,GAAG,oBAAoBsC,SAAS,MAAM,CAACyV,OAAO,WAAW,EAAEjS,OAAO,WAAW,GAAG,IAAI/F,EAAEC,EAAEsK,mBAAmBtK,GAAG,MAAM,CAAC+X,OAAO,SAAStX,IAAI,SAAST,EAAED,EAAEU,GAAG,IAAIC,EAAE,GAAGD,EAAEgX,WAAW/W,GAAG,cAAcyC,OAAO1C,EAAEgX,SAAS,QAAQhX,EAAE8W,QAAQ7W,GAAG,UAAUyC,OAAO1C,EAAE8W,MAAM,OAAO,IAAIhX,OAAE,IAASE,EAAEiX,MAAMnX,IAAIG,GAAG,SAASyC,OAAO1C,EAAEiX,MAAMvT,OAAO,EAAE,IAAIhB,OAAO1C,EAAEiX,OAAO,GAAG,OAAOhX,GAAGD,EAAE6W,IAAI/W,IAAIG,GAAG,KAAKD,EAAE8W,QAAQ7W,GAAG,KAAKD,EAAEgX,WAAW/W,GAAG,KAAK,IAAIP,EAAEM,EAAE+W,UAAUrX,GAAG,oBAAoB6W,OAAOtW,GAAG,uDAAuDyC,OAAO6T,KAAKC,SAASpX,mBAAmBqX,KAAKC,UAAUhX,MAAM,QAAQJ,EAAEkK,kBAAkBvJ,EAAEV,EAAED,EAAE0T,QAAQ,CAAxe,CAA0e1T,EAAEC,EAAES,EAAE,EAAEqF,OAAO,YAAY,SAAS9F,GAAG,GAAG,OAAOA,EAAEuY,WAAW,OAAM,EAAGvY,EAAEuY,WAAWC,YAAYxY,EAAE,CAAvE,CAAyED,EAAE,EAAE,GAAG,KAAKC,IAAI,aAAaA,EAAEP,QAAQ,SAASO,EAAED,GAAG,GAAGA,EAAE0Y,WAAW1Y,EAAE0Y,WAAWC,QAAQ1Y,MAAM,CAAC,KAAKD,EAAE4Y,YAAY5Y,EAAEyY,YAAYzY,EAAE4Y,YAAY5Y,EAAEwP,YAAYjN,SAASsW,eAAe5Y,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,CAACA,EAAED,EAAEU,KAAK,aAAa,SAASC,EAAEV,EAAED,EAAEU,EAAEC,EAAEH,EAAEJ,EAAEK,EAAEI,GAAG,IAAIC,EAAEF,EAAE,mBAAmBX,EAAEA,EAAEyT,QAAQzT,EAAE,GAAGD,IAAIY,EAAEyF,OAAOrG,EAAEY,EAAEkY,gBAAgBpY,EAAEE,EAAEmY,WAAU,GAAIpY,IAAIC,EAAEoY,YAAW,GAAI5Y,IAAIQ,EAAEqY,SAAS,UAAU7Y,GAAGK,GAAGK,EAAE,SAASb,IAAIA,EAAEA,GAAGgD,KAAKiW,QAAQjW,KAAKiW,OAAOC,YAAYlW,KAAKmW,QAAQnW,KAAKmW,OAAOF,QAAQjW,KAAKmW,OAAOF,OAAOC,aAAa,oBAAoBE,sBAAsBpZ,EAAEoZ,qBAAqB7Y,GAAGA,EAAE+H,KAAKtF,KAAKhD,GAAGA,GAAGA,EAAEqZ,uBAAuBrZ,EAAEqZ,sBAAsBtT,IAAIvF,EAAE,EAAEG,EAAE2Y,aAAazY,GAAGN,IAAIM,EAAED,EAAE,WAAWL,EAAE+H,KAAKtF,MAAMrC,EAAEoY,WAAW/V,KAAKmW,OAAOnW,MAAMuW,MAAMC,SAASC,WAAW,EAAElZ,GAAGM,EAAE,GAAGF,EAAEoY,WAAW,CAACpY,EAAE+Y,cAAc7Y,EAAE,IAAImG,EAAErG,EAAEyF,OAAOzF,EAAEyF,OAAO,SAASpG,EAAED,GAAG,OAAOc,EAAEyH,KAAKvI,GAAGiH,EAAEhH,EAAED,EAAE,CAAC,KAAK,CAAC,IAAIK,EAAEO,EAAEgZ,aAAahZ,EAAEgZ,aAAavZ,EAAE,GAAG+C,OAAO/C,EAAES,GAAG,CAACA,EAAE,CAAC,MAAM,CAACpB,QAAQO,EAAEyT,QAAQ9S,EAAE,CAACF,EAAEL,EAAEL,EAAE,CAACqD,EAAE,IAAI1C,GAAE,GAAIX,EAAE,CAAC,EAAE,SAASU,EAAEC,GAAG,IAAIH,EAAER,EAAEW,GAAG,QAAG,IAASH,EAAE,OAAOA,EAAEd,QAAQ,IAAIU,EAAEJ,EAAEW,GAAG,CAACoJ,GAAGpJ,EAAEjB,QAAQ,CAAC,GAAG,OAAOO,EAAEU,GAAGP,EAAEA,EAAEV,QAAQgB,GAAGN,EAAEV,OAAO,CAACgB,EAAEA,EAAET,IAAI,IAAID,EAAEC,GAAGA,EAAE4Z,WAAW,IAAI5Z,EAAEK,QAAQ,IAAIL,EAAE,OAAOS,EAAEL,EAAEL,EAAE,CAACI,EAAEJ,IAAIA,GAAGU,EAAEL,EAAE,CAACJ,EAAED,KAAK,IAAI,IAAIW,KAAKX,EAAEU,EAAEF,EAAER,EAAEW,KAAKD,EAAEF,EAAEP,EAAEU,IAAI+B,OAAOoX,eAAe7Z,EAAEU,EAAE,CAACoZ,YAAW,EAAGC,IAAIha,EAAEW,IAAG,EAAGD,EAAEF,EAAE,CAACP,EAAED,IAAI0C,OAAOuX,UAAUC,eAAe3R,KAAKtI,EAAED,GAAGU,EAAEC,EAAEV,IAAI,oBAAoBka,QAAQA,OAAOC,aAAa1X,OAAOoX,eAAe7Z,EAAEka,OAAOC,YAAY,CAAC7I,MAAM,WAAW7O,OAAOoX,eAAe7Z,EAAE,aAAa,CAACsR,OAAM,GAAG,EAAG7Q,EAAE6X,QAAG,EAAO,IAAI5X,EAAE,CAAC,EAAE,MAAM,MAAM,aAAaD,EAAEC,EAAEA,GAAGD,EAAEL,EAAEM,EAAE,CAACL,QAAQ,IAAImQ,IAAI,IAAIxQ,EAAES,EAAE,MAAM,MAA2EF,EAAE,EAAQ,OAAoD,IAAIJ,EAAEM,EAAEA,EAAEF,GAAG,MAAMC,EAAE,EAAQ,OAAuC,IAAII,EAAEH,EAAEA,EAAED,GAAG,MAAMK,EAAE,CAACG,KAAK,eAAeC,WAAW,CAACC,SAASlB,EAAEK,QAAQ6f,YAAY/f,IAAIggB,MAAMvf,KAAKkS,cAAa,EAAGzR,MAAM,CAACiQ,MAAM,CAAC/P,KAAKK,OAAOyY,UAAS,GAAI9Y,KAAK,CAACA,KAAKK,OAAOvB,QAAQ,OAAOyB,UAAU9B,GAAG,CAAC,OAAO,WAAW,QAAQ,MAAM,MAAM,SAAS,UAAU8D,SAAS9D,IAAIogB,MAAM,CAAC7e,KAAKK,OAAOvB,aAAQ,GAAQggB,aAAa,CAAC9e,KAAKC,QAAQnB,SAAQ,GAAIigB,aAAa,CAAC/e,KAAKC,QAAQnB,SAAQ,GAAIkgB,YAAY,CAAChf,KAAKK,OAAOvB,aAAQ,GAAQmgB,mBAAmB,CAACjf,KAAKC,QAAQnB,SAAQ,GAAIogB,oBAAoB,CAAClf,KAAKK,OAAOvB,QAAQ,IAAIqgB,QAAQ,CAACnf,KAAKC,QAAQnB,SAAQ,GAAIsgB,MAAM,CAACpf,KAAKC,QAAQnB,SAAQ,GAAIugB,WAAW,CAACrf,KAAKK,OAAOvB,QAAQ,IAAIqC,SAAS,CAACnB,KAAKC,QAAQnB,SAAQ,GAAIwgB,WAAW,CAACtf,KAAK,CAACkB,OAAOb,QAAQvB,QAAQ,KAAKwC,MAAM,CAAC,eAAe,yBAAyBQ,SAAS,CAACyd,aAAa,OAAO9d,KAAKuI,OAAOzB,IAAI,KAAK9G,KAAKuI,OAAOzB,GAAG9G,KAAKuI,OAAOzB,GAAG9G,KAAK+d,SAAS,EAAEA,UAAU,IAAI,QAA3hC7K,KAAKC,SAASzM,SAAS,IAAI0M,QAAQ,WAAW,IAAIpM,MAAM,EAAK,GAA0+BgX,iBAAiB,OAAOhe,KAAKqD,OAAOhG,OAAO,EAAE4gB,kBAAkB,OAAOje,KAAK0d,OAAO,EAAEQ,iBAAiB,MAAM,KAAKle,KAAKud,kBAAa,IAASvd,KAAKud,WAAW,EAAEY,sBAAsB,OAAOne,KAAKsd,aAAatd,KAAKke,eAAele,KAAKud,YAAY,GAAGvd,KAAKke,eAAele,KAAKud,YAAYvd,KAAKod,KAAK,EAAEgB,eAAe,MAAMphB,EAAEgD,KAAKod,OAAOpd,KAAKqd,aAAa,OAAOrgB,GAAGiL,EAAQlE,KAAK,qJAAqJ/G,CAAC,GAAGwD,QAAQ,CAACkB,QAAQ1B,KAAKoB,MAAMid,MAAM3c,OAAO,EAAE4c,SAASte,KAAKoB,MAAMid,MAAMC,QAAQ,EAAEC,YAAYvhB,GAAGgD,KAAKgB,MAAM,eAAehE,EAAEgF,OAAOsM,MAAM,EAAEkQ,0BAA0BxhB,GAAGgD,KAAKgB,MAAM,wBAAwBhE,EAAE,IAAI,IAAIW,EAAEF,EAAE,MAAMuG,EAAEvG,EAAEA,EAAEE,GAAGP,EAAEK,EAAE,MAAMK,EAAEL,EAAEA,EAAEL,GAAGW,EAAEN,EAAE,KAAK6G,EAAE7G,EAAEA,EAAEM,GAAGqG,EAAE3G,EAAE,MAAM8G,EAAE9G,EAAEA,EAAE2G,GAAGC,EAAE5G,EAAE,MAAMyG,EAAEzG,EAAEA,EAAE4G,GAAGF,EAAE1G,EAAE,MAAMwG,EAAExG,EAAEA,EAAE0G,GAAGY,EAAEtH,EAAE,MAAM+G,EAAE,CAAC,EAAEA,EAAEyC,kBAAkBhD,IAAIO,EAAE0C,cAAc3C,IAAIC,EAAE2C,OAAO7C,IAAI8C,KAAK,KAAK,QAAQ5C,EAAE6C,OAAOvJ,IAAI0G,EAAE8C,mBAAmBpD,IAAIF,IAAIe,EAAE3E,EAAEoE,GAAGO,EAAE3E,GAAG2E,EAAE3E,EAAEmH,QAAQxC,EAAE3E,EAAEmH,OAAO,IAAIG,EAAEjK,EAAE,MAAMiH,EAAEjH,EAAE,MAAMgH,EAAEhH,EAAEA,EAAEiH,GAAG+C,GAAE,EAAGC,EAAEtH,GAAGvC,GAAE,WAAY,IAAIb,EAAEgD,KAAKjD,EAAEC,EAAEkR,MAAMC,GAAG,OAAOpR,EAAE,MAAM,CAAC4I,YAAY,eAAe,EAAE3I,EAAEqgB,cAAcrgB,EAAEohB,aAAarhB,EAAE,QAAQ,CAAC4I,YAAY,qBAAqBb,MAAM,CAAC,8BAA8B9H,EAAEsgB,cAAc1X,MAAM,CAAC6Y,IAAIzhB,EAAE8gB,aAAa,CAAC9gB,EAAEyR,GAAG,SAASzR,EAAE0R,GAAG1R,EAAEogB,OAAO,UAAUpgB,EAAE2R,KAAK3R,EAAEyR,GAAG,KAAK1R,EAAE,MAAM,CAAC4I,YAAY,6BAA6B,CAAC5I,EAAE,QAAQC,EAAEsT,GAAGtT,EAAEuT,GAAG,CAAC1K,IAAI,QAAQF,YAAY,qBAAqBb,MAAM,CAAC9H,EAAE6gB,WAAW,CAAC,oCAAoC7gB,EAAEwgB,oBAAoBxgB,EAAEihB,gBAAgB,mCAAmCjhB,EAAEghB,eAAe,8BAA8BhhB,EAAE0gB,QAAQ,4BAA4B1gB,EAAE2gB,QAAQ/X,MAAM,CAACkB,GAAG9J,EAAE8gB,WAAWvf,KAAKvB,EAAEuB,KAAKmB,SAAS1C,EAAE0C,SAAS6d,YAAYvgB,EAAEmhB,oBAAoB,mBAAmBnhB,EAAE4gB,WAAWzc,OAAO,EAAE,GAAGhB,OAAOnD,EAAE+gB,UAAU,gBAAgB,GAAG,YAAY,UAAUzD,SAAS,CAAChM,MAAMtR,EAAEsR,OAAOxI,GAAG,CAACuY,MAAMrhB,EAAEuhB,cAAc,QAAQvhB,EAAEuL,QAAO,GAAIvL,EAAEwL,aAAaxL,EAAEyR,GAAG,KAAK1R,EAAE,MAAM,CAAC0M,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,MAAMtR,EAAEghB,eAAezP,WAAW,mBAAmB5I,YAAY,gDAAgD,CAAC3I,EAAEoS,GAAG,YAAY,GAAGpS,EAAEyR,GAAG,KAAKzR,EAAEwgB,mBAAmBzgB,EAAE,WAAW,CAAC4I,YAAY,4BAA4BC,MAAM,CAACrH,KAAK,yBAAyB,aAAavB,EAAEygB,oBAAoB/d,SAAS1C,EAAE0C,UAAUoG,GAAG,CAACb,MAAMjI,EAAEwhB,2BAA2B5Z,YAAY5H,EAAEqS,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAM,CAACvS,EAAEoS,GAAG,wBAAwB,EAAEI,OAAM,IAAK,MAAK,KAAMxS,EAAE0gB,SAAS1gB,EAAE2gB,MAAM5gB,EAAE,MAAM,CAAC4I,YAAY,iDAAiD,CAAC3I,EAAE0gB,QAAQ3gB,EAAE,QAAQ,CAAC6I,MAAM,CAACK,KAAK,MAAMjJ,EAAE2gB,MAAM5gB,EAAE,cAAc,CAAC6I,MAAM,CAACK,KAAK,MAAMjJ,EAAE2R,MAAM,GAAG3R,EAAE2R,MAAM,GAAG3R,EAAEyR,GAAG,KAAKzR,EAAE4gB,WAAWzc,OAAO,EAAEpE,EAAE,IAAI,CAAC4I,YAAY,mCAAmCb,MAAM,CAAC,0CAA0C9H,EAAE2gB,MAAM,4CAA4C3gB,EAAE0gB,SAAS9X,MAAM,CAACkB,GAAG,GAAG3G,OAAOnD,EAAE+gB,UAAU,kBAAkB,CAAC/gB,EAAE0gB,QAAQ3gB,EAAE,QAAQ,CAAC4I,YAAY,yCAAyCC,MAAM,CAACK,KAAK,MAAMjJ,EAAE2gB,MAAM5gB,EAAE,cAAc,CAAC4I,YAAY,yCAAyCC,MAAM,CAACK,KAAK,MAAMjJ,EAAE2R,KAAK3R,EAAEyR,GAAG,SAASzR,EAAE0R,GAAG1R,EAAE4gB,YAAY,SAAS,GAAG5gB,EAAE2R,MAAO,GAAE,IAAG,EAAG,KAAK,WAAW,MAAM,mBAAmBlK,KAAKA,IAAIgD,GAAG,MAAM+F,EAAE/F,EAAEhL,OAAQ,EAA7yI,GAAizIiB,CAAE,EAAx8+B,GAApOT,EAAOR,QAAQM,kOCwBzE,MAqBM2hB,EAAsB,WAAW,IAAAC,EAAAC,EAAAC,EAAAC,EAC7C,MAAMC,GAAoB,QAAHJ,EAAAK,WAAG,IAAAL,GAAO,QAAPC,EAAHD,EAAKM,aAAK,IAAAL,GAAK,QAALC,EAAVD,EAAYM,WAAG,IAAAL,GAAiB,QAAjBC,EAAfD,EAAiBM,uBAAe,IAAAL,OAA7B,EAAHA,EAAkCM,UACrD,CAAE1iB,KAAM,IAAKsB,KAAM,IAGvB,MAAO,GAAAmC,OAAG4e,EAAeriB,KAAI,KAAAyD,OAAI4e,EAAe/gB,MAAOoV,QAAQ,SAAU,IAC1E,yFC9BA,MCgCAiM,EAAA,ICtD4L,EDwD5L,CACArhB,KAAA,kBACA8R,cAAA,EAEAzR,MAAA,CACAihB,SAAA,CACA/gB,KAAAK,OACAyY,UAAA,GAEAkI,QAAA,CACAhhB,KAAAC,QACAnB,SAAA,GAEAmiB,OAAA,CACAjhB,KAAA,CAAAK,OAAAgB,QACAyX,UAAA,GAEAoI,SAAA,CACAlhB,KAAAK,OACAyY,UAAA,GAEAqI,WAAA,CACAnhB,KAAAK,OACAvB,QAAA,MAEAsiB,WAAA,CACAphB,KAAAC,QACAnB,SAAA,GAEAuiB,KAAA,CACArhB,KAAAK,OACAyY,UAAA,GAEAwI,MAAA,CACAthB,KAAAqB,OACAvC,QAAA,OAIAyC,KAAAA,KACA,CACAggB,eAAA,IAIAzf,SAAA,CAMA0f,iBACA,YAAAT,SAAAvgB,QAAA,aAAAugB,SAAA3iB,MAAA,KAAAqK,MAAA,MAAAlK,KAAA,UAAAwiB,QACA,EAEAxY,KACA,yBAAA3G,OAAA,KAAAqf,OACA,EAEAQ,iBAEA,YAAAF,eAAA,KAAAG,SACA,KAAAA,SAGA,KAAAP,WACA,KAAAA,YFxFSQ,EAAAA,EAAAA,OE8FTC,EAAAA,EAAAA,aAAA,wBAAAhgB,OAAA,KAAAqf,OAAA,OAAArf,OAAAkf,EAAA,OAAAlf,OAAAkf,EAAA,UAFAc,EAAAA,EAAAA,aAAA,qCAAAhgB,OFxFQb,SAAS4Y,eAAe,iBAAmB5Y,SAAS4Y,eAAe,gBAAgB5J,MEwF3F,YAAAnO,OAAA,KAAAqf,OAAA,UAAArf,ODxGuB,SAASzD,GAC/B,MAAM0jB,GAAgB1jB,EAAKgH,WAAW,KAAOhH,EAAO,IAAHyD,OAAOzD,IAAQC,MAAM,KACtE,IAAI0jB,EAAe,GAMnB,OALAD,EAAanO,SAASqO,IACL,KAAZA,IACHD,GAAgB,IAAMxjB,mBAAmByjB,GAC1C,IAEMD,CACR,CC+FAE,CAAA,KAAAd,UAAA,OAAAtf,OAAAkf,EAAA,OAAAlf,OAAAkf,EAAA,QAGA,EAEAY,WACA,OAAAO,GAAAC,SAAAC,WAAA,KAAAd,KACA,GAGApf,QAAA,CACAmgB,UACA,KAAA3f,MAAA,aAAAwe,OACA,EACAoB,YACA,KAAAd,eAAA,CACA,yIEnIIrP,EAAU,CAAC,EAEfA,EAAQxJ,kBAAoB,IAC5BwJ,EAAQvJ,cAAgB,IAElBuJ,EAAQtJ,OAAS,SAAc,KAAM,QAE3CsJ,EAAQpJ,OAAS,IACjBoJ,EAAQnJ,mBAAqB,IAEhB,IAAI,IAASmJ,GAKJ,KAAW,IAAQlJ,QAAS,IAAQA,sBCP1D,SAXgB,OACd,GCTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,KAAK,CAACxI,YAAY,yBAAyB,CAACwI,EAAG,QAAQ,CAACxI,YAAY,QAAQC,MAAM,CAAC,GAAKib,EAAI/Z,GAAG,KAAO,QAAQ,KAAO,mBAAmBwT,SAAS,CAAC,QAAUuG,EAAItB,SAASzZ,GAAG,CAAC,OAAS+a,EAAIF,WAAWE,EAAIpS,GAAG,KAAKN,EAAG,QAAQ,CAACxI,YAAY,yBAAyBC,MAAM,CAAC,IAAMib,EAAI/Z,KAAK,CAACqH,EAAG,MAAM,CAACxI,YAAY,2BAA2Bb,MAAM+b,EAAIf,cAAgB,mCAAqC,IAAI,CAAC3R,EAAG,MAAM,CAACxI,YAAY,yBAAyBC,MAAM,CAAC,IAAMib,EAAIb,eAAe,IAAM,GAAG,UAAY,SAASla,GAAG,CAAC,MAAQ+a,EAAID,eAAeC,EAAIpS,GAAG,KAAKN,EAAG,OAAO,CAACxI,YAAY,0BAA0B,CAACkb,EAAIpS,GAAG,WAAWoS,EAAInS,GAAGmS,EAAId,gBAAgB,eAC3sB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,uBEqDhC,MCxE2L,ED2E3L,CACA/hB,KAAA,iBAEAC,WAAA,CACA6iB,eAAA,IACA1J,QAAA,IACA2J,gBAAAA,GAGA1iB,MAAA,CACA2iB,OAAA,CACAziB,KAAAkB,OACA4X,UAAA,IAIAvX,KAAAA,KACA,CAEAyf,SAAA,EACA0B,SAAA,EACAjjB,KAAA,KACA+B,QAAA,EACAmhB,SAAA,OAIA7gB,SAAA,CAMA0f,iBACA,YAAA/hB,KAAAe,QAAA,QACA,KAAAf,KAAArB,MAAA,KAAAqK,MAAA,MAAAlK,KAAA,KACA,KAAAkB,IACA,EAEAmjB,gBAAA,IAAAC,EAAAC,EACA,OACA/B,SAAAtiB,EAAA,iBACAwiB,QAAA,EACAC,SAAA,KAAAziB,EAAA,iBACA2iB,YAAA,EACAC,MAAA,QAAAwB,EAAA,KAAAF,gBAAA,IAAAE,OAAA,EAAAA,EAAAE,UAAA,cAAAD,EAAA,KAAAH,gBAAA,IAAAG,OAAA,EAAAA,EAAAC,WAEA,EAEAC,mBACA,YAAAL,SAAAM,UAAAC,MAAAC,GAAAA,EAAAlC,SAAA,KAAAD,SACA,EAOA/Q,QAEA,MAGAO,GAHA,KAAAmS,SAAArB,MAAA,KAAAqB,SAAArB,MAAA,MAGA,EAAA8B,IAAAA,IACA,OACA,WAAAA,MACA,UAAA5S,EAAA,KACA,WAAA6S,MACA,cAAA7S,EAAA,UACA,gBAAAmS,SAAArB,MAAA3M,KAAA0J,MAAA7N,EAAA,KAAAmS,SAAArB,OAAA,UAEA,GAGArf,QAAA,CAOA,WAAAxC,EAAAkjB,GAEA,KAAA3B,QAAA,KAAA4B,cAAA3B,OACA,KAAAxhB,KAAAA,EACA,KAAAkjB,SAAAA,EAEA,MACAW,SE1I4B7U,iBAE3B,aADuB8U,EAAAA,EAAM/K,KAAIgL,EAAAA,EAAAA,gBAAe,iCAChCjiB,KAAKkiB,IAAIliB,IAC1B,CFsIAmiB,IACAR,MAAAI,GAAAA,EAAAK,MAAAhB,EAAAgB,KAAAL,EAAAzE,QAAA8D,EAAA9D,QACA,UAAAyE,EACA,UAAA1M,MAAA,uCAEA,KAAA+L,SAAAW,EAGA,IAAAA,EAAAL,UAAArgB,OAMA,KAAApB,QAAA,EALA,KAAAoiB,UAMA,EAKAvV,QACA,KAAA2S,QAAA,KAAA4B,cAAA3B,OACA,KAAAyB,SAAA,EACA,KAAAjjB,KAAA,KACA,KAAA+B,QAAA,EACA,KAAAmhB,SAAA,IACA,EAOAP,QAAAnB,GACA,KAAAD,QAAAC,CACA,EAEA,qBAAAb,EAAAC,EAAAC,EACA,KAAAoC,SAAA,EACA,MAAAmB,EAAA1D,IACA2D,EAAA,QAAA1D,EAAAK,WAAA,IAAAL,GAAA,QAAAC,EAAAD,EAAAM,aAAA,IAAAL,GAAA,QAAAC,EAAAD,EAAAM,WAAA,IAAAL,OAAA,EAAAA,EAAAM,gBAGA,IAAAmD,EAAAC,EAAA,KAAAxC,iBAAA,KAAA/hB,OACA,KAAAgjB,OAAAwB,MAAA,0BAAAxkB,KAAA,KAAAA,KAAAykB,UAAA,QAAAH,EAAA,KAAApB,gBAAA,IAAAoB,OAAA,EAAAA,EAAAG,YACA,KAAAzkB,KAAA,KAAAA,MAAA,QAAAukB,EAAA,KAAArB,gBAAA,IAAAqB,OAAA,EAAAA,EAAAE,YAGA,QAAAC,EAAAC,EACA,MAAAC,QE9KkC5V,eAAe6V,EAAUC,EAAcC,GAMxE,aALuBjB,EAAAA,EAAMkB,MAAKjB,EAAAA,EAAAA,gBAAe,sCAAuC,CACvFc,WACAC,eACAC,kBAEejjB,KAAKkiB,IAAIliB,IAC1B,CFuKAmjB,EACAC,EAAAA,EAAAA,WAAA,GAAA/iB,OAAAiiB,EAAA,KAAAjiB,OAAA,KAAAnC,OACA,QADA0kB,EACA,KAAAnB,wBAAA,IAAAmB,OAAA,EAAAA,EAAAjD,SACA,QADAkD,EACA,KAAApB,wBAAA,IAAAoB,OAAA,EAAAA,EAAAI,cAEA,KAAA/B,OAAAwB,MAAA,mBAAAI,GAGA,MAAA9iB,QAAAuiB,aAAA,EAAAA,EAAAc,oBAAA,KAAAnlB,MAAAolB,MAAA,CAAAC,EAAAvjB,IAAAA,KACAwjB,EAAA,IAAAtE,IAAAC,MAAAsE,cAAAzjB,EAAA,CACA0jB,YAAAnB,aAAA,EAAAA,EAAAmB,cAIAC,EAAAzE,IAAAC,MAAAyE,YAAAC,qBAAAf,EAAAhD,KAAA,OAAAY,GAAAoD,gBACAH,GACAA,EAAAI,OAAAjB,EAAAtD,SAAA,CACAwE,MAAAzB,aAAA,EAAAA,EAAA0B,WAAA,KAAA/lB,MACAgmB,IAAA5B,EACAC,WACAqB,YAAArB,aAAA,EAAAA,EAAAqB,YACAO,cAAAX,IAIA,KAAA1W,OACA,OAAA+Q,GACA,KAAAqD,OAAArD,MAAA,mDACA1V,EAAA0V,MAAAA,IACAuG,EAAAA,EAAAA,IAAA,KAAAlnB,EAAA,mDACA,SACA,KAAAikB,SAAA,CACA,CACA,mBGzOI,EAAU,CAAC,EAEf,EAAQha,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQE,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCP1D,SAXgB,OACd,GCTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAQ0S,EAAI9gB,OAAQoO,EAAG,UAAU,CAACxI,YAAY,mBAAmBC,MAAM,CAAC,oBAAoB,EAAE,KAAO,SAASE,GAAG,CAAC,MAAQ+a,EAAIjU,QAAQ,CAACuB,EAAG,OAAO,CAACxI,YAAY,yBAAyB6I,MAAOqS,EAAIrS,MAAO1I,GAAG,CAAC,OAAS,SAASqe,GAAyD,OAAjDA,EAAOxhB,iBAAiBwhB,EAAOlhB,kBAAyB4d,EAAIsB,SAASxS,MAAM,KAAMzO,UAAU,IAAI,CAACiN,EAAG,KAAK,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,6BAA8B,CAAEgB,KAAM6iB,EAAId,qBAAsBc,EAAIpS,GAAG,KAAKN,EAAG,KAAK,CAACxI,YAAY,0BAA0B,CAACwI,EAAG,kBAAkB0S,EAAItQ,GAAG,CAAC3K,MAAM,CAAC,QAAUib,EAAItB,UAAYsB,EAAIM,cAAc3B,QAAQ1Z,GAAG,CAAC,MAAQ+a,EAAIF,UAAU,kBAAkBE,EAAIM,eAAc,IAAQN,EAAIpS,GAAG,KAAKoS,EAAIuD,GAAIvD,EAAIK,SAASM,WAAW,SAASE,GAAU,OAAOvT,EAAG,kBAAkB0S,EAAItQ,GAAG,CAACjB,IAAIoS,EAASlC,OAAO5Z,MAAM,CAAC,QAAUib,EAAItB,UAAYmC,EAASlC,OAAO,MAAQqB,EAAIK,SAASrB,OAAO/Z,GAAG,CAAC,MAAQ+a,EAAIF,UAAU,kBAAkBe,GAAS,GAAO,KAAI,GAAGb,EAAIpS,GAAG,KAAKN,EAAG,MAAM,CAACxI,YAAY,6BAA6B,CAACwI,EAAG,QAAQ,CAACxI,YAAY,UAAUC,MAAM,CAAC,KAAO,SAAS,aAAaib,EAAI7jB,EAAE,QAAS,iDAAiDsd,SAAS,CAAC,MAAQuG,EAAI7jB,EAAE,QAAS,iBAAiB6jB,EAAIpS,GAAG,KAAMoS,EAAII,QAAS9S,EAAG,iBAAiB,CAACxI,YAAY,4BAA4BC,MAAM,CAAC,KAAO,iBAAiB,CAACib,EAAIpS,GAAG,SAASoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,kBAAkB,UAAU6jB,EAAIlS,MAAM,GAAGkS,EAAIlS,IAC54C,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEgB1BqS,GAASqD,EAAAA,EAAAA,MACbC,OAAO,SACPC,aACAhS,QAGFiS,EAAAA,QAAIC,MAAM,CACTjkB,QAAS,CACRxD,EAAC,KACDS,EAACA,EAAAA,MAKH,MAAMinB,EAAqBplB,SAAS8V,cAAc,OAClDsP,EAAmB5d,GAAK,kBACxBxH,SAAS8M,KAAKG,YAAYmY,GAG1B,IAAIlD,GAAYmD,EAAAA,EAAAA,GAAU,QAAS,YAAa,IAC5CC,GAAgBD,EAAAA,EAAAA,GAAU,QAAS,kBAAkB,GACzD3D,EAAOwB,MAAM,sBAAuBhB,GACpCR,EAAOwB,MAAM,mBAAoB,CAAEoC,kBAGnC,MACMC,EAAiB,IADVL,EAAAA,QAAIM,OAAOC,GACD,CAAS,CAC/B/mB,KAAM,iBACNwF,UAAW,CACVwd,OAAMA,KAGR6D,EAAeG,OAAO,oBAGtBrhB,OAAOgI,iBAAiB,oBAAoB,WAC3C,IAAKiZ,EAAe,CACnB5D,EAAOwB,MAAM,oCACb,MAAMyC,EAAsB,CAC3BC,OAAOhjB,GAENA,EAAKijB,aAAa,CACjBre,GAAI,gBACJse,aAAapoB,EAAAA,EAAAA,IAAE,QAAS,2BACxBqoB,cAAcroB,EAAAA,EAAAA,IAAE,QAAS,aACzBsoB,UAAW,oBACXC,SAAU,OACVC,aAAaxoB,EAAAA,EAAAA,IAAE,QAAS,+BACxByoB,cAAcznB,GACb0nB,EAAoB1nB,GACpBkE,EAAKyjB,gBAAgB,gBACtB,GAEF,GAEDnF,GAAGoF,QAAQC,SAAS,wBAAyBZ,EAC9C,CACD,IAGAzD,EAAUvP,SAAQ,CAACiP,EAAU4E,KAC5B,MAAMC,EAAoB,CACzBb,OAAOhjB,GACN,MAAMmgB,EAAWngB,EAAKmgB,SAGF,UAAhBA,EAASvb,IAAkC,iBAAhBub,EAASvb,IAKxC5E,EAAKijB,aAAa,CACjBre,GAAI,gBAAF3G,OAAkB+gB,EAASgB,IAAG,KAAA/hB,OAAI2lB,GACpCV,YAAalE,EAAS9D,MACtBiI,aAAcnE,EAAS9D,MAAQ8D,EAASuB,UACxC6C,UAAWpE,EAASoE,WAAa,YACjCC,SAAU,OACVC,YAAatE,EAASsE,YACtBC,cAAcznB,GACb6mB,EAAevmB,KAAKN,EAAMkjB,EAC3B,GAEF,GAEDV,GAAGoF,QAAQC,SAAS,wBAAyBE,EAAkB,IAQhE,MAAML,EAAsB1Y,eAAehP,GAC1C,MAAM8kB,GAAgBpE,IAAwB,IAAHve,OAAOnC,IAAQoV,QAAQ,KAAM,KACxE,IACC4N,EAAOwB,MAAM,uCAAwC,CAAEM,iBACvD,MAAMkD,QAAiBlE,EAAAA,EAAMkB,MAAKjB,EAAAA,EAAAA,gBAAe,oCAAqC,CACrFe,eACAmD,qBAAqB,IAItBjH,IAAIC,MAAMC,IAAIC,gBAAgB+G,gBAAgBpD,GAAc,GAAM,GAElEtB,EAAYwE,EAASlmB,KAAKkiB,IAAIliB,KAAK0hB,UACnCoD,EAAgBoB,EAASlmB,KAAKkiB,IAAIliB,KAAKqmB,aACxC,CAAE,MAAOxI,GACRqD,EAAOrD,MAAM,iDACbuG,EAAAA,EAAAA,KAAUlnB,EAAAA,EAAAA,IAAE,QAAS,gDACtB,CACD,kBCzHA,WAEC,MAAMopB,EAAc,CACnBlB,OAAO7C,IACN9G,EAAAA,EAAAA,IAAU,mCAAmC8K,IAAe,IAAd,MAAEC,GAAOD,EACtDhE,EAASkE,UAAUD,EAAM,KAE1B/K,EAAAA,EAAAA,IAAU,kCAAkC,KAC3Cvb,KAAKsmB,MAAQ,KACbjE,EAASkE,UAAU,GAAG,GAGxB,GAGD5iB,OAAO6c,GAAGoF,QAAQC,SAAS,qBAAsBO,EAEjD,CAjBD,GCGA,MAAMI,EAAY,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,MAC1CC,EAAkB,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,OAO1D,SAASC,EAAezgB,EAAM0gB,GAAiB,EAAOC,GAAiB,GAC/C,iBAAT3gB,IACPA,EAAOrG,OAAOqG,IASlB,IAAI4gB,EAAQ5gB,EAAO,EAAIiN,KAAK+I,MAAM/I,KAAK4T,IAAI7gB,GAAQiN,KAAK4T,IAAIF,EAAiB,KAAO,MAAS,EAE7FC,EAAQ3T,KAAK6T,KAAKH,EAAiBH,EAAgBtlB,OAASqlB,EAAUrlB,QAAU,EAAG0lB,GACnF,MAAMG,EAAiBJ,EAAiBH,EAAgBI,GAASL,EAAUK,GAC3E,IAAII,GAAgBhhB,EAAOiN,KAAKgJ,IAAI0K,EAAiB,KAAO,IAAMC,IAAQK,QAAQ,GAClF,OAAuB,IAAnBP,GAAqC,IAAVE,GACF,QAAjBI,EAAyB,OAAS,OAASL,EAAiBH,EAAgB,GAAKD,EAAU,KAGnGS,EADAJ,EAAQ,EACOM,WAAWF,GAAcC,QAAQ,GAGjCC,WAAWF,GAAcG,gBAAe,WAEpDH,EAAe,IAAMD,EAChC,CAkCA,IAXkBK,EA2HdC,EA2BAC,GArJa,QADCF,GAWK,YATR,UACF/C,OAAO,SACP/R,SAEF,UACF+R,OAAO,SACPkD,OAAOH,EAAKI,KACZlV,QAmHT,SAAW+U,GACPA,EAAiB,OAAI,SACrBA,EAAe,KAAI,MACtB,CAHD,CAGGA,IAAaA,EAAW,CAAC,IAwB5B,SAAWC,GACPA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAAgB,IAAI,IAAM,KACxC,CARD,CAQGA,KAAeA,GAAa,CAAC,IAKhC,MAsCMG,GAAiB,SAAUC,EAAQC,GACrC,OAAoC,OAA7BD,EAAOE,MAAMD,EACxB,EAIME,GAAe,CAAChoB,EAAM8nB,KACxB,GAAI,OAAQ9nB,IAA4B,iBAAZA,EAAKgH,IAAmBhH,EAAKgH,GAAK,GAC1D,MAAM,IAAIqO,MAAM,4BAEpB,IAAKrV,EAAK6nB,OACN,MAAM,IAAIxS,MAAM,4BAEpB,IACI,IAAI+E,IAAIpa,EAAK6nB,OACjB,CACA,MAAO5qB,GACH,MAAM,IAAIoY,MAAM,oDACpB,CACA,IAAKrV,EAAK6nB,OAAOjkB,WAAW,QACxB,MAAM,IAAIyR,MAAM,oDAEpB,GAAI,UAAWrV,KAAUA,EAAKioB,iBAAiBnf,MAC3C,MAAM,IAAIuM,MAAM,sBAEpB,GAAI,WAAYrV,KAAUA,EAAKkoB,kBAAkBpf,MAC7C,MAAM,IAAIuM,MAAM,uBAEpB,IAAKrV,EAAK8f,MAA6B,iBAAd9f,EAAK8f,OACtB9f,EAAK8f,KAAKiI,MAAM,yBACpB,MAAM,IAAI1S,MAAM,qCAEpB,GAAI,SAAUrV,GAA6B,iBAAdA,EAAKmG,KAC9B,MAAM,IAAIkP,MAAM,qBAEpB,GAAI,gBAAiBrV,KAAsC,iBAArBA,EAAKmoB,aACpCnoB,EAAKmoB,aAAeV,GAAWW,MAC/BpoB,EAAKmoB,aAAeV,GAAWY,KAClC,MAAM,IAAIhT,MAAM,uBAEpB,GAAI,UAAWrV,GACO,OAAfA,EAAKsoB,OACiB,iBAAftoB,EAAKsoB,MACf,MAAM,IAAIjT,MAAM,sBAEpB,GAAI,eAAgBrV,GAAmC,iBAApBA,EAAKuV,WACpC,MAAM,IAAIF,MAAM,6BAEpB,GAAI,SAAUrV,GAA6B,iBAAdA,EAAKuoB,KAC9B,MAAM,IAAIlT,MAAM,uBAEpB,GAAIrV,EAAKuoB,OAASvoB,EAAKuoB,KAAK3kB,WAAW,KACnC,MAAM,IAAIyR,MAAM,wCAEpB,GAAIrV,EAAKuoB,OAASvoB,EAAK6nB,OAAO7mB,SAAShB,EAAKuoB,MACxC,MAAM,IAAIlT,MAAM,mCAEpB,GAAIrV,EAAKuoB,MAAQX,GAAe5nB,EAAK6nB,OAAQC,GAAa,CACtD,MAAMU,EAAUxoB,EAAK6nB,OAAOE,MAAMD,GAAY,GAC9C,IAAK9nB,EAAK6nB,OAAO7mB,UAAS,IAAAhE,MAAKwrB,EAASxoB,EAAKuoB,OACzC,MAAM,IAAIlT,MAAM,4DAExB,GAwBJ,MAAM,GACFoT,MACAC,YACAC,iBAAmB,mCACnBC,YAAY5oB,EAAM8nB,GAEdE,GAAahoB,EAAM8nB,GAAc5nB,KAAKyoB,kBACtCzoB,KAAKuoB,MAAQzoB,EACb,MAAM6oB,EAAU,CACZhM,IAAK,CAAC3a,EAAQ4mB,EAAMta,KAEhBtO,KAAKuoB,MAAa,MAAI,IAAI3f,KAEnBigB,QAAQlM,IAAI3a,EAAQ4mB,EAAMta,IAErCwa,eAAgB,CAAC9mB,EAAQ4mB,KAErB5oB,KAAKuoB,MAAa,MAAI,IAAI3f,KAEnBigB,QAAQC,eAAe9mB,EAAQ4mB,KAI9C5oB,KAAKwoB,YAAc,IAAIO,MAAMjpB,EAAKuV,YAAc,CAAC,EAAGsT,UAC7C3oB,KAAKuoB,MAAMlT,WACduS,IACA5nB,KAAKyoB,iBAAmBb,EAEhC,CAIID,aAEA,OAAO3nB,KAAKuoB,MAAMZ,OAAOvU,QAAQ,OAAQ,GAC7C,CAIIkM,eACA,OAAO,IAAAA,UAAStf,KAAK2nB,OACzB,CAIIlF,gBACA,OAAO,IAAAuG,SAAQhpB,KAAK2nB,OACxB,CAKIsB,cACA,GAAIjpB,KAAKqoB,KAAM,CAEX,MAAMa,EAAalpB,KAAK2nB,OAAO5oB,QAAQiB,KAAKqoB,MAC5C,OAAO,IAAAY,SAAQjpB,KAAK2nB,OAAO3gB,MAAMkiB,EAAalpB,KAAKqoB,KAAKlnB,SAAW,IACvE,CAGA,MAAMgoB,EAAM,IAAIjP,IAAIla,KAAK2nB,QACzB,OAAO,IAAAsB,SAAQE,EAAIC,SACvB,CAIIxJ,WACA,OAAO5f,KAAKuoB,MAAM3I,IACtB,CAIImI,YACA,OAAO/nB,KAAKuoB,MAAMR,KACtB,CAIIC,aACA,OAAOhoB,KAAKuoB,MAAMP,MACtB,CAII/hB,WACA,OAAOjG,KAAKuoB,MAAMtiB,IACtB,CAIIoP,iBACA,OAAOrV,KAAKwoB,WAChB,CAIIP,kBAEA,OAAmB,OAAfjoB,KAAKooB,OAAmBpoB,KAAK0nB,oBAIC/f,IAA3B3H,KAAKuoB,MAAMN,YACZjoB,KAAKuoB,MAAMN,YACXV,GAAWW,KALNX,GAAW8B,IAM1B,CAIIjB,YAEA,OAAKpoB,KAAK0nB,eAGH1nB,KAAKuoB,MAAMH,MAFP,IAGf,CAIIV,qBACA,OAAOA,GAAe1nB,KAAK2nB,OAAQ3nB,KAAKyoB,iBAC5C,CAIIJ,WAEA,OAAIroB,KAAKuoB,MAAMF,KACJroB,KAAKuoB,MAAMF,KAAKjV,QAAQ,WAAY,MAG3CpT,KAAK0nB,iBACQ,IAAAuB,SAAQjpB,KAAK2nB,QACdhrB,MAAMqD,KAAKyoB,kBAAkBa,OAEtC,IACX,CAII5sB,WACA,GAAIsD,KAAKqoB,KAAM,CAEX,MAAMa,EAAalpB,KAAK2nB,OAAO5oB,QAAQiB,KAAKqoB,MAC5C,OAAOroB,KAAK2nB,OAAO3gB,MAAMkiB,EAAalpB,KAAKqoB,KAAKlnB,SAAW,GAC/D,CACA,OAAQnB,KAAKipB,QAAU,IAAMjpB,KAAKsf,UAAUlM,QAAQ,QAAS,IACjE,CAKIoM,aACA,OAAOxf,KAAKuoB,OAAOzhB,IAAM9G,KAAKqV,YAAYmK,MAC9C,CAOA+J,KAAKC,GACD1B,GAAa,IAAK9nB,KAAKuoB,MAAOZ,OAAQ6B,GAAexpB,KAAKyoB,kBAC1DzoB,KAAKuoB,MAAMZ,OAAS6B,EACpBxpB,KAAKuoB,MAAMR,MAAQ,IAAInf,IAC3B,CAKA6gB,OAAOnK,GACH,GAAIA,EAASxe,SAAS,KAClB,MAAM,IAAIqU,MAAM,oBAEpBnV,KAAKupB,MAAK,IAAAN,SAAQjpB,KAAK2nB,QAAU,IAAMrI,EAC3C,EAwBJ,MAAMoK,WAAa,GACXnrB,WACA,OAAO+oB,EAASoC,IACpB,EAwBJ,MAAMC,WAAe,GACjBjB,YAAY5oB,GAER8pB,MAAM,IACC9pB,EACH8f,KAAM,wBAEd,CACIrhB,WACA,OAAO+oB,EAASqC,MACpB,CACIlH,gBACA,OAAO,IACX,CACI7C,WACA,MAAO,sBACX,EA8FJ,MC7qBA,IAAeyE,EAAAA,EAAAA,MACbC,OAAO,SACPC,aACAhS,QCJK,IAAIsX,IACX,SAAWA,GACPA,EAAqB,QAAI,UACzBA,EAAoB,OAAI,QAC3B,CAHD,CAGGA,KAAgBA,GAAc,CAAC,IAC3B,MAAMC,GAETpB,YAAY7E,eAAQ,oaAChB7jB,KAAK+pB,eAAelG,GACpB7jB,KAAKgqB,QAAUnG,CACnB,CACI/c,SACA,OAAO9G,KAAKgqB,QAAQljB,EACxB,CACIse,kBACA,OAAOplB,KAAKgqB,QAAQ5E,WACxB,CACI6E,oBACA,OAAOjqB,KAAKgqB,QAAQC,aACxB,CACIC,cACA,OAAOlqB,KAAKgqB,QAAQE,OACxB,CACIC,WACA,OAAOnqB,KAAKgqB,QAAQG,IACxB,CACIC,gBACA,OAAOpqB,KAAKgqB,QAAQI,SACxB,CACIvD,YACA,OAAO7mB,KAAKgqB,QAAQnD,KACxB,CACIxpB,cACA,OAAO2C,KAAKgqB,QAAQ3sB,OACxB,CACIsC,aACA,OAAOK,KAAKgqB,QAAQrqB,MACxB,CACI0qB,mBACA,OAAOrqB,KAAKgqB,QAAQK,YACxB,CACAN,eAAelG,GACX,IAAKA,EAAO/c,IAA2B,iBAAd+c,EAAO/c,GAC5B,MAAM,IAAIqO,MAAM,cAEpB,IAAK0O,EAAOuB,aAA6C,mBAAvBvB,EAAOuB,YACrC,MAAM,IAAIjQ,MAAM,gCAEpB,IAAK0O,EAAOoG,eAAiD,mBAAzBpG,EAAOoG,cACvC,MAAM,IAAI9U,MAAM,kCAEpB,IAAK0O,EAAOsG,MAA+B,mBAAhBtG,EAAOsG,KAC9B,MAAM,IAAIhV,MAAM,yBAGpB,GAAI,YAAa0O,GAAoC,mBAAnBA,EAAOqG,QACrC,MAAM,IAAI/U,MAAM,4BAEpB,GAAI,cAAe0O,GAAsC,mBAArBA,EAAOuG,UACvC,MAAM,IAAIjV,MAAM,8BAEpB,GAAI,UAAW0O,GAAkC,iBAAjBA,EAAOgD,MACnC,MAAM,IAAI1R,MAAM,iBAEpB,GAAI0O,EAAOxmB,UAAYoC,OAAO6qB,OAAOT,IAAa/oB,SAAS+iB,EAAOxmB,SAC9D,MAAM,IAAI8X,MAAM,mBAEpB,GAAI,WAAY0O,GAAmC,mBAAlBA,EAAOlkB,OACpC,MAAM,IAAIwV,MAAM,2BAEpB,GAAI,iBAAkB0O,GAAyC,mBAAxBA,EAAOwG,aAC1C,MAAM,IAAIlV,MAAM,gCAExB,EAEG,MAAMoV,GAAqB,SAAU1G,QACF,IAA3BlgB,OAAO6mB,kBACd7mB,OAAO6mB,gBAAkB,GACzBxJ,GAAOwB,MAAM,4BAGb7e,OAAO6mB,gBAAgB/I,MAAKgJ,GAAUA,EAAO3jB,KAAO+c,EAAO/c,KAC3Dka,GAAOrD,MAAM,cAADxd,OAAe0jB,EAAO/c,GAAE,uBAAuB,CAAE+c,WAGjElgB,OAAO6mB,gBAAgBlX,KAAKuQ,EAChC,EACa6G,GAAiB,WAC1B,OAAO/mB,OAAO6mB,iBAAmB,EACrC,ECnDAD,GAhCsB,IAAIT,GAAW,CACjChjB,GAAI,SACJse,YAAWA,CAACuF,EAAOC,IACI,aAAZA,EAAK9jB,IACN9J,EAAAA,EAAAA,IAAE,iBAAkB,uBACpBA,EAAAA,EAAAA,IAAE,QAAS,UAErBitB,cAAeA,uMACfC,QAAQS,GACGA,EAAMxpB,OAAS,GAAKwpB,EACtB/tB,KAAIiuB,GAAQA,EAAK5C,cACjB1kB,OAAMunB,GAAmD,IAApCA,EAAavD,GAAWwD,UAEtD/d,WAAW6d,GACP,IAMI,aALM/I,EAAAA,EAAMkJ,OAAOH,EAAKlD,SAIxBsD,EAAAA,EAAAA,IAAK,qBAAsBJ,IACpB,CACX,CACA,MAAOlN,GAEH,OADAqD,GAAOrD,MAAM,8BAA+B,CAAEA,QAAOgK,OAAQkD,EAAKlD,OAAQkD,UACnE,CACX,CACJ,EACA7d,gBAAgB2d,EAAOC,EAAM5G,GACzB,OAAOkH,QAAQC,IAAIR,EAAM/tB,KAAIiuB,GAAQ7qB,KAAKmqB,KAAKU,EAAMD,EAAM5G,KAC/D,EACA6C,MAAO,aChCLuE,GAAkB,SAAUjC,GAC9B,MAAMkC,EAAgB/rB,SAAS8V,cAAc,KAC7CiW,EAAcvjB,SAAW,GACzBujB,EAAc5nB,KAAO0lB,EACrBkC,EAAcpmB,OAClB,EACMqmB,GAAgB,SAAUtH,EAAK2G,GACjC,MAAMY,EAASrY,KAAKC,SAASzM,SAAS,IAAI8kB,UAAU,GAC9CrC,GAAMhJ,EAAAA,EAAAA,aAAY,qFAAsF,CAC1G6D,MACAuH,SACAE,MAAOvX,KAAKC,UAAUwW,EAAM/tB,KAAIiuB,GAAQA,EAAKvL,cAEjD8L,GAAgBjC,EACpB,EA4BAoB,GA3BsB,IAAIT,GAAW,CACjChjB,GAAI,WACJse,YAAaA,KAAMpoB,EAAAA,EAAAA,IAAE,QAAS,YAC9BitB,cAAeA,iLACfC,QAAQS,GACGA,EAAMxpB,OAAS,GAAKwpB,EACtB/tB,KAAIiuB,GAAQA,EAAK5C,cACjB1kB,OAAMunB,GAAiD,IAAlCA,EAAavD,GAAW8B,QAEtDrc,KAAUmd,MAACU,EAAMD,EAAM5G,IACf6G,EAAKtsB,OAAS+oB,EAASqC,QACvB2B,GAActH,EAAK,CAAC6G,IACb,OAEXO,GAAgBP,EAAKlD,QACd,MAEX3a,gBAAgB2d,EAAOC,EAAM5G,GACzB,OAAqB,IAAjB2G,EAAMxpB,QACNnB,KAAKmqB,KAAKQ,EAAM,GAAIC,EAAM5G,GACnB,CAAC,QAEZsH,GAActH,EAAK2G,GACZ,IAAIngB,MAAMmgB,EAAMxpB,QAAQ8N,KAAK,MACxC,EACA4X,MAAO,4BCvBEhD,GAAS,IAAIiG,GAAW,CACjChjB,GAAI,eACJse,YAAaA,KAAMpoB,EAAAA,EAAAA,IAAE,QAAS,gBAC9BitB,cAAeA,mNAEfC,QAAQS,GAEiB,IAAjBA,EAAMxpB,QAG4C,IAA9CwpB,EAAM,GAAG1C,YAAcV,GAAWmE,QAE9C1e,KAAUmd,MAACU,IAzBS7d,eAAgBtQ,GACpC,MAAMivB,GAAO5J,EAAAA,EAAAA,gBAAe,qBAAuB,+BACnD,IAAI,IAAA6J,EACA,MAAMC,QAAe/J,EAAAA,EAAMkB,KAAK2I,EAAM,CAAEjvB,SAClC+qB,EAAsB,QAAnBmE,GAAG1L,EAAAA,EAAAA,aAAgB,IAAA0L,OAAA,EAAhBA,EAAkBnE,IAC9B,IAAI0B,EAAM,aAAAhpB,OAAasnB,EAAG,KAAM9jB,OAAOC,SAASkoB,MAAOC,EAAAA,GAAAA,IAAWrvB,GAClEysB,GAAO,UAAY0C,EAAO/rB,KAAKkiB,IAAIliB,KAAKksB,MACxCroB,OAAOC,SAASH,KAAO0lB,CAC3B,CACA,MAAOxL,IACHuG,EAAAA,EAAAA,KAAUlnB,EAAAA,EAAAA,IAAE,QAAS,gCACzB,CACJ,CAcQivB,CAAgBpB,EAAKnuB,MACd,MAEXmqB,MAAO,KAEN,4BAA4BjO,KAAKsT,UAAUC,YAC5C5B,GAAmB1G,iNC9BjBuI,GAAkBzB,GACbA,EAAM0B,MAAKxB,GAAqC,IAA7BA,EAAKxV,WAAWiX,WAEjCC,GAAevf,MAAO6d,EAAMD,EAAM4B,KAC3C,IAEI,MAAMrD,GAAMhJ,EAAAA,EAAAA,aAAY,4BAA8B0K,EAAKnuB,KAqB3D,aApBMolB,EAAAA,EAAMkB,KAAKmG,EAAK,CAClBsD,KAAMD,EACA,CAAC7oB,OAAO6c,GAAGkM,cACX,KAKM,cAAZ9B,EAAK9jB,IAAuB0lB,GAAiC,MAAjB3B,EAAK5B,UACjDgC,EAAAA,EAAAA,IAAK,qBAAsBJ,GAG/BrG,EAAAA,QAAAA,IAAQqG,EAAKxV,WAAY,WAAYmX,EAAe,EAAI,GAEpDA,GACAvB,EAAAA,EAAAA,IAAK,wBAAyBJ,IAG9BI,EAAAA,EAAAA,IAAK,0BAA2BJ,IAE7B,CACX,CACA,MAAOlN,GACH,MAAMkG,EAAS2I,EAAe,8BAAgC,kCAE9D,OADAxL,GAAOrD,MAAM,eAAiBkG,EAAQ,CAAElG,QAAOgK,OAAQkD,EAAKlD,OAAQkD,UAC7D,CACX,GA6BJN,GA3BsB,IAAIT,GAAW,CACjChjB,GAAI,WACJse,YAAYuF,GACDyB,GAAezB,IAChB3tB,EAAAA,EAAAA,IAAE,QAAS,qBACXA,EAAAA,EAAAA,IAAE,QAAS,yBAErBitB,cAAgBU,GACLyB,GAAezB,0TAEhBgC,GAEVzC,QAAQS,IAEIA,EAAM0B,MAAKxB,IAAI,IAAA+B,EAAAC,EAAA,QAAc,QAAVD,EAAC/B,EAAKxC,YAAI,IAAAuE,GAAY,QAAZC,EAATD,EAAWlpB,kBAAU,IAAAmpB,GAArBA,EAAAvnB,KAAAsnB,EAAwB,UAAU,KACvDjC,EAAMpnB,OAAMsnB,GAAQA,EAAK5C,cAAgBV,GAAWW,OAE/Dlb,WAAW6d,EAAMD,GACb,MAAM4B,EAAeJ,GAAe,CAACvB,IACrC,aAAa0B,GAAa1B,EAAMD,EAAM4B,EAC1C,EACAxf,gBAAgB2d,EAAOC,GACnB,MAAM4B,EAAeJ,GAAezB,GACpC,OAAOO,QAAQC,IAAIR,EAAM/tB,KAAIoQ,eAAsBuf,GAAa1B,EAAMD,EAAM4B,KAChF,EACA3F,OAAQ,8MCnCZ0D,GA/BsB,IAAIT,GAAW,CACjChjB,GAAI,cACJse,YAAYqG,GAER,MAAMrG,EAAcqG,EAAM,GAAGpW,WAAW+P,aAAeqG,EAAM,GAAGnM,SAChE,OAAOtiB,EAAAA,EAAAA,IAAE,QAAS,4BAA6B,CAAEooB,eACrD,EACA6E,cAAeA,IAAM6C,GACrB5C,QAAQS,GAEJ,GAAqB,IAAjBA,EAAMxpB,OACN,OAAO,EAEX,MAAM0pB,EAAOF,EAAM,GACnB,QAAKE,EAAKnD,gBAGHmD,EAAKtsB,OAAS+oB,EAASqC,QACkB,IAAxCkB,EAAK5C,YAAcV,GAAW8B,KAC1C,EACArc,KAAUmd,MAACU,EAAMD,EAAM5G,OACd6G,GAAQA,EAAKtsB,OAAS+oB,EAASqC,UAGpChmB,OAAOopB,IAAI9N,MAAM+N,OAAOC,UAAU,KAAM,KAAM,CAAEjJ,KAAKlnB,EAAAA,EAAAA,MAAKknB,EAAK6G,EAAKvL,YAC7D,MAGXjiB,QAASwsB,GAAYqD,OACrBrG,OAAQ,OCZZ0D,GAhBsB,IAAIT,GAAW,CACjChjB,GAAI,SACJse,YAAaA,KAAMpoB,EAAAA,EAAAA,IAAE,QAAS,UAC9BitB,cAAeA,yPACfC,QAAUS,GACCA,EAAMxpB,OAAS,GAAKwpB,EACtB/tB,KAAIiuB,GAAQA,EAAK5C,cACjB1kB,OAAMunB,GAAmD,IAApCA,EAAavD,GAAWmE,UAEtD1e,KAAUmd,MAACU,KAEPI,EAAAA,EAAAA,IAAK,oBAAqBJ,GACnB,MAEXhE,MAAO,YCfEsG,GAAiB,UACjBtJ,GAAS,IAAIiG,GAAW,CACjChjB,GAAIqmB,GACJ/H,YAAaA,KAAMpoB,EAAAA,EAAAA,IAAE,QAAS,gBAC9BitB,cAAeA,mmBAEfC,QAAUS,IAAU,IAAAyC,EAAAC,EAAAC,EAAAjH,EAAAkH,EAEhB,OAAqB,IAAjB5C,EAAMxpB,UAIC,QAAPisB,EAACzpB,cAAM,IAAAypB,GAAK,QAALC,EAAND,EAAQpO,WAAG,IAAAqO,GAAO,QAAPC,EAAXD,EAAapO,aAAK,IAAAqO,IAAlBA,EAAoBE,UAG+D,QAAxFnH,GAAqB,QAAbkH,EAAA5C,EAAM,GAAGtC,YAAI,IAAAkF,OAAA,EAAbA,EAAe7pB,WAAW,aAAcinB,EAAM,GAAG1C,cAAgBV,GAAWW,YAAI,IAAA7B,GAAAA,CAAU,EAEtGrZ,WAAW6d,GACP,IAAI,IAAA4C,EAAAC,EAAAC,EAAAC,EAAAC,EAGA,OADM,QAANJ,EAAA9pB,cAAM,IAAA8pB,GAAK,QAALC,EAAND,EAAQzO,WAAG,IAAA0O,GAAO,QAAPC,EAAXD,EAAazO,aAAK,IAAA0O,GAAS,QAATC,EAAlBD,EAAoBH,eAAO,IAAAI,GAAM,QAANC,EAA3BD,EAA6BtvB,YAAI,IAAAuvB,GAAjCA,EAAAvoB,KAAAsoB,EAAoC/C,EAAKnuB,MAClC,IACX,CACA,MAAOihB,GAEH,OADAqD,GAAOrD,MAAM,8BAA+B,CAAEA,WACvC,CACX,CACJ,EACAkJ,OAAQ,KAEZ0D,GAAmB1G,ICDnB0G,GA7BsB,IAAIT,GAAW,CACjChjB,GAAI,iBACJse,YAAWA,KACApoB,EAAAA,EAAAA,IAAE,QAAS,kBAEtBitB,cAAeA,kOACfC,QAAQS,GAEJ,GAAqB,IAAjBA,EAAMxpB,OACN,OAAO,EAEX,MAAM0pB,EAAOF,EAAM,GACnB,QAAKE,EAAKnD,gBAGNmD,EAAK5C,cAAgBV,GAAWW,MAG7B2C,EAAKtsB,OAAS+oB,EAASoC,IAClC,EACA1c,KAAUmd,MAACU,EAAMD,EAAM5G,OACd6G,GAAQA,EAAKtsB,OAAS+oB,EAASoC,QAGpC/lB,OAAOopB,IAAI9N,MAAM+N,OAAOC,UAAU,KAAM,CAAErC,KAAM,QAASpL,OAAQqL,EAAKrL,QAAU,CAAEwE,IAAK6G,EAAK5B,QAASzJ,OAAQqL,EAAKrL,SAC3G,MAEXqH,MAAO,MClDX,IAAI,IAAS,ECAN,SAASiH,KAEZ,MAA6B,oBAAd5B,WAA+C,oBAAXvoB,OAC7CA,YACkB,IAAX,EAAAQ,EACH,EAAAA,EACA,CAAC,CACf,CDJW,UAAIL,KAAKC,KCKb,MAAMgqB,GAAoC,mBAAVhF,MCX1BiF,GAAa,wBCA1B,IAAIC,GACAC,GCCG,MAAMC,GACTzF,YAAY0F,EAAQC,GAChBruB,KAAKgC,OAAS,KACdhC,KAAKsuB,YAAc,GACnBtuB,KAAKuuB,QAAU,GACfvuB,KAAKouB,OAASA,EACdpuB,KAAKquB,KAAOA,EACZ,MAAMG,EAAkB,CAAC,EACzB,GAAIJ,EAAOK,SACP,IAAK,MAAM3nB,KAAMsnB,EAAOK,SAAU,CAC9B,MAAMC,EAAON,EAAOK,SAAS3nB,GAC7B0nB,EAAgB1nB,GAAM4nB,EAAKC,YAC/B,CAEJ,MAAMC,EAAsB,mCAAmCR,EAAOtnB,KACtE,IAAI+nB,EAAkBpvB,OAAO+T,OAAO,CAAC,EAAGgb,GACxC,IACI,MAAMM,EAAMC,aAAaC,QAAQJ,GAC3B9uB,EAAOoU,KAAK+a,MAAMH,GACxBrvB,OAAO+T,OAAOqb,EAAiB/uB,EACnC,CACA,MAAO/C,GAEP,CACAiD,KAAKkvB,UAAY,CACbC,YAAW,IACAN,EAEXO,YAAY9gB,GACR,IACIygB,aAAaM,QAAQT,EAAqB1a,KAAKC,UAAU7F,GAC7D,CACA,MAAOvR,GAEP,CACA8xB,EAAkBvgB,CACtB,EACAghB,IAAG,KACC,YDpCM3nB,IAAdsmB,KAGkB,oBAAXtqB,QAA0BA,OAAO4rB,aACxCtB,IAAY,EACZC,GAAOvqB,OAAO4rB,kBAES,IAAX,EAAAprB,IAAwD,QAA5BqrB,EAAK,EAAArrB,EAAOsrB,kBAA+B,IAAPD,OAAgB,EAASA,EAAGD,cACxGtB,IAAY,EACZC,GAAO,EAAA/pB,EAAOsrB,WAAWF,aAGzBtB,IAAY,GAXLA,GAgBuBC,GAAKoB,MAAQ1mB,KAAK0mB,MADjD,IAjBCE,CCsCI,GAEAnB,GACAA,EAAKvoB,GF3CuB,uBE2CM,CAAC4pB,EAAUphB,KACrCohB,IAAa1vB,KAAKouB,OAAOtnB,IACzB9G,KAAKkvB,UAAUE,YAAY9gB,EAC/B,IAGRtO,KAAK2vB,UAAY,IAAI5G,MAAM,CAAC,EAAG,CAC3BhS,IAAK,CAAC6Y,EAAShH,IACP5oB,KAAKgC,OACEhC,KAAKgC,OAAO8D,GAAG8iB,GAGf,IAAIiH,KACP7vB,KAAKuuB,QAAQjb,KAAK,CACdwc,OAAQlH,EACRiH,QACF,IAKlB7vB,KAAK+vB,cAAgB,IAAIhH,MAAM,CAAC,EAAG,CAC/BhS,IAAK,CAAC6Y,EAAShH,IACP5oB,KAAKgC,OACEhC,KAAKgC,OAAO4mB,GAEL,OAATA,EACE5oB,KAAK2vB,UAEPlwB,OAAOuwB,KAAKhwB,KAAKkvB,WAAWpuB,SAAS8nB,GACnC,IAAIiH,KACP7vB,KAAKsuB,YAAYhb,KAAK,CAClBwc,OAAQlH,EACRiH,OACAI,QAAS,SAENjwB,KAAKkvB,UAAUtG,MAASiH,IAI5B,IAAIA,IACA,IAAI3E,SAAQ+E,IACfjwB,KAAKsuB,YAAYhb,KAAK,CAClBwc,OAAQlH,EACRiH,OACAI,WACF,KAM1B,CACAjjB,oBAAoBhL,GAChBhC,KAAKgC,OAASA,EACd,IAAK,MAAM0sB,KAAQ1uB,KAAKuuB,QACpBvuB,KAAKgC,OAAO8D,GAAG4oB,EAAKoB,WAAWpB,EAAKmB,MAExC,IAAK,MAAMnB,KAAQ1uB,KAAKsuB,YACpBI,EAAKuB,cAAcjwB,KAAKgC,OAAO0sB,EAAKoB,WAAWpB,EAAKmB,MAE5D,ECnGG,SAASK,GAAoBC,EAAkBC,GAClD,MAAMC,EAAaF,EACbnuB,EAAS8rB,KACTO,EJRCP,KAAYwC,6BISbC,EAAcxC,IAAoBsC,EAAWG,iBACnD,IAAInC,IAASrsB,EAAOyuB,uCAA0CF,EAGzD,CACD,MAAM/gB,EAAQ+gB,EAAc,IAAIpC,GAASkC,EAAYhC,GAAQ,MAChDrsB,EAAO0uB,yBAA2B1uB,EAAO0uB,0BAA4B,IAC7Epd,KAAK,CACN6c,iBAAkBE,EAClBD,UACA5gB,UAEAA,GACA4gB,EAAQ5gB,EAAMugB,cACtB,MAZI1B,EAAKpD,KAAK+C,GAAYmC,EAAkBC,EAahD,iBCbA,IAAIO,GAQJ,MAAMC,GAAkBC,GAAWF,GAAcE,EAK3CC,GAAsG5Z,SAE5G,SAAS6Z,GAETxzB,GACI,OAAQA,GACS,iBAANA,GAC+B,oBAAtCkC,OAAOuX,UAAUtQ,SAASpB,KAAK/H,IACX,mBAAbA,EAAEyzB,MACjB,CAMA,IAAIC,IACJ,SAAWA,GAQPA,EAAqB,OAAI,SAMzBA,EAA0B,YAAI,eAM9BA,EAA4B,cAAI,gBAEnC,CAtBD,CAsBGA,KAAiBA,GAAe,CAAC,IAEpC,MAAMC,GAA8B,oBAAXvtB,OAOnBwtB,GAA6F,oBAA1BC,uBAAyCA,uBAAiEF,GAY7KG,GAAwB,KAAyB,iBAAX1tB,QAAuBA,OAAOA,SAAWA,OAC/EA,OACgB,iBAATzG,MAAqBA,KAAKA,OAASA,KACtCA,KACkB,iBAAXo0B,QAAuBA,OAAOA,SAAWA,OAC5CA,OACsB,iBAAfC,WACHA,WACA,CAAExhB,YAAa,MARH,GAkB9B,SAASjI,GAASqhB,EAAKnrB,EAAMwzB,GACzB,MAAMC,EAAM,IAAIC,eAChBD,EAAInzB,KAAK,MAAO6qB,GAChBsI,EAAIE,aAAe,OACnBF,EAAIG,OAAS,WACTC,GAAOJ,EAAIzL,SAAUhoB,EAAMwzB,EAC/B,EACAC,EAAIK,QAAU,WACV,GAAQnU,MAAM,0BAClB,EACA8T,EAAIM,MACR,CACA,SAASC,GAAY7I,GACjB,MAAMsI,EAAM,IAAIC,eAEhBD,EAAInzB,KAAK,OAAQ6qB,GAAK,GACtB,IACIsI,EAAIM,MACR,CACA,MAAOh1B,GAAK,CACZ,OAAO00B,EAAIpO,QAAU,KAAOoO,EAAIpO,QAAU,GAC9C,CAEA,SAASpe,GAAM4lB,GACX,IACIA,EAAKoH,cAAc,IAAIC,WAAW,SACtC,CACA,MAAOn1B,GACH,MAAMo1B,EAAM7yB,SAAS8yB,YAAY,eACjCD,EAAIE,eAAe,SAAS,GAAM,EAAM1uB,OAAQ,EAAG,EAAG,EAAG,GAAI,IAAI,GAAO,GAAO,GAAO,EAAO,EAAG,MAChGknB,EAAKoH,cAAcE,EACvB,CACJ,CACA,MAAMG,GACgB,iBAAdpG,UAAyBA,UAAY,CAAEC,UAAW,IAIpDoG,GAA+B,KAAO,YAAY3Z,KAAK0Z,GAAWnG,YACpE,cAAcvT,KAAK0Z,GAAWnG,aAC7B,SAASvT,KAAK0Z,GAAWnG,WAFO,GAG/B0F,GAAUX,GAGqB,oBAAtBsB,mBACH,aAAcA,kBAAkBxb,YAC/Bub,GAOb,SAAwBE,EAAMz0B,EAAO,WAAYwzB,GAC7C,MAAMr0B,EAAImC,SAAS8V,cAAc,KACjCjY,EAAE2K,SAAW9J,EACbb,EAAEmL,IAAM,WAGY,iBAATmqB,GAEPt1B,EAAEsG,KAAOgvB,EACLt1B,EAAE0G,SAAWD,SAASC,OAClBmuB,GAAY70B,EAAEsG,MACdqE,GAAS2qB,EAAMz0B,EAAMwzB,IAGrBr0B,EAAE6E,OAAS,SACXiD,GAAM9H,IAIV8H,GAAM9H,KAKVA,EAAEsG,KAAOyW,IAAIwY,gBAAgBD,GAC7B5pB,YAAW,WACPqR,IAAIyY,gBAAgBx1B,EAAEsG,KAC1B,GAAG,KACHoF,YAAW,WACP5D,GAAM9H,EACV,GAAG,GAEX,EApCgB,qBAAsBm1B,GAqCtC,SAAkBG,EAAMz0B,EAAO,WAAYwzB,GACvC,GAAoB,iBAATiB,EACP,GAAIT,GAAYS,GACZ3qB,GAAS2qB,EAAMz0B,EAAMwzB,OAEpB,CACD,MAAMr0B,EAAImC,SAAS8V,cAAc,KACjCjY,EAAEsG,KAAOgvB,EACTt1B,EAAE6E,OAAS,SACX6G,YAAW,WACP5D,GAAM9H,EACV,GACJ,MAIA+uB,UAAU0G,iBA/GlB,SAAaH,GAAM,QAAEI,GAAU,GAAU,CAAC,GAGtC,OAAIA,GACA,6EAA6Eja,KAAK6Z,EAAKl0B,MAChF,IAAIu0B,KAAK,CAACl0B,OAAOm0B,aAAa,OAASN,GAAO,CAAEl0B,KAAMk0B,EAAKl0B,OAE/Dk0B,CACX,CAuGmCO,CAAIP,EAAMjB,GAAOxzB,EAEpD,EACA,SAAyBy0B,EAAMz0B,EAAMwzB,EAAMyB,GAOvC,IAJAA,EAAQA,GAAS30B,KAAK,GAAI,aAEtB20B,EAAM3zB,SAASoG,MAAQutB,EAAM3zB,SAAS8M,KAAK8mB,UAAY,kBAEvC,iBAATT,EACP,OAAO3qB,GAAS2qB,EAAMz0B,EAAMwzB,GAChC,MAAM2B,EAAsB,6BAAdV,EAAKl0B,KACb60B,EAAW,eAAexa,KAAKha,OAAOyyB,GAAQthB,eAAiB,WAAYshB,GAC3EgC,EAAc,eAAeza,KAAKsT,UAAUC,WAClD,IAAKkH,GAAgBF,GAASC,GAAab,KACjB,oBAAfe,WAA4B,CAEnC,MAAMC,EAAS,IAAID,WACnBC,EAAOC,UAAY,WACf,IAAIrK,EAAMoK,EAAO1H,OACjB,GAAmB,iBAAR1C,EAEP,MADA8J,EAAQ,KACF,IAAI9d,MAAM,4BAEpBgU,EAAMkK,EACAlK,EACAA,EAAI/V,QAAQ,eAAgB,yBAC9B6f,EACAA,EAAMrvB,SAASH,KAAO0lB,EAGtBvlB,SAAS4P,OAAO2V,GAEpB8J,EAAQ,IACZ,EACAM,EAAOE,cAAchB,EACzB,KACK,CACD,MAAMtJ,EAAMjP,IAAIwY,gBAAgBD,GAC5BQ,EACAA,EAAMrvB,SAAS4P,OAAO2V,GAEtBvlB,SAASH,KAAO0lB,EACpB8J,EAAQ,KACRpqB,YAAW,WACPqR,IAAIyY,gBAAgBxJ,EACxB,GAAG,IACP,CACJ,EA7GM,OAqHN,SAASuK,GAAaC,EAASp1B,GAC3B,MAAMq1B,EAAe,MAAQD,EACS,mBAA3BE,uBAEPA,uBAAuBD,EAAcr1B,GAEvB,UAATA,EACL,GAAQof,MAAMiW,GAEA,SAATr1B,EACL,GAAQwF,KAAK6vB,GAGb,GAAQ9M,IAAI8M,EAEpB,CACA,SAASE,GAAQv2B,GACb,MAAO,OAAQA,GAAK,YAAaA,CACrC,CAMA,SAASw2B,KACL,KAAM,cAAe7H,WAEjB,OADAwH,GAAa,iDAAkD,UACxD,CAEf,CACA,SAASM,GAAqBrW,GAC1B,SAAIA,aAAiBxI,OACjBwI,EAAMgW,QAAQM,cAAcnzB,SAAS,8BACrC4yB,GAAa,kGAAmG,SACzG,EAGf,CAwCA,IAAIQ,GA0CJ,SAASC,GAAcC,GACnB,MAAO,CACHC,QAAS,CACLD,WAGZ,CACA,MAAME,GAAmB,kBACnBC,GAAgB,QACtB,SAASC,GAA4BC,GACjC,OAAOX,GAAQW,GACT,CACE3tB,GAAIytB,GACJnX,MAAOkX,IAET,CACExtB,GAAI2tB,EAAMC,IACVtX,MAAOqX,EAAMC,IAEzB,CAmDA,SAASC,GAAgBC,GACrB,OAAKA,EAEDpqB,MAAM6I,QAAQuhB,GAEPA,EAAOrY,QAAO,CAACzc,EAAM6Y,KACxB7Y,EAAKkwB,KAAK1c,KAAKqF,EAAMrJ,KACrBxP,EAAK+0B,WAAWvhB,KAAKqF,EAAMpa,MAC3BuB,EAAKg1B,SAASnc,EAAMrJ,KAAOqJ,EAAMmc,SACjCh1B,EAAKi1B,SAASpc,EAAMrJ,KAAOqJ,EAAMoc,SAC1Bj1B,IACR,CACCg1B,SAAU,CAAC,EACX9E,KAAM,GACN6E,WAAY,GACZE,SAAU,CAAC,IAIR,CACHC,UAAWb,GAAcS,EAAOr2B,MAChC+Q,IAAK6kB,GAAcS,EAAOtlB,KAC1BwlB,SAAUF,EAAOE,SACjBC,SAAUH,EAAOG,UArBd,CAAC,CAwBhB,CACA,SAASE,GAAmB12B,GACxB,OAAQA,GACJ,KAAK0yB,GAAaiE,OACd,MAAO,WACX,KAAKjE,GAAakE,cAElB,KAAKlE,GAAamE,YACd,MAAO,SACX,QACI,MAAO,UAEnB,CAGA,IAAIC,IAAmB,EACvB,MAAMC,GAAsB,GACtBC,GAAqB,kBACrBC,GAAe,SACbhiB,OAAQiiB,IAAah2B,OAOvBi2B,GAAgB5uB,GAAO,MAAQA,EAQrC,SAAS6uB,GAAsBzT,EAAK2O,GAChCX,GAAoB,CAChBppB,GAAI,gBACJsW,MAAO,WACPwY,KAAM,mCACNC,YAAa,QACbC,SAAU,0BACVR,uBACApT,QACA6T,IACuB,mBAAZA,EAAIzG,KACXoE,GAAa,2MAEjBqC,EAAIC,iBAAiB,CACjBlvB,GAAIyuB,GACJnY,MAAO,WACP6Y,MAAO,WAEXF,EAAIG,aAAa,CACbpvB,GAAI0uB,GACJpY,MAAO,WACPvY,KAAM,UACNsxB,sBAAuB,gBACvBtZ,QAAS,CACL,CACIhY,KAAM,eACNgf,OAAQ,MA7O5B7W,eAAqC6jB,GACjC,IAAIkD,KAEJ,UACU7H,UAAUkK,UAAUC,UAAUniB,KAAKC,UAAU0c,EAAMyF,MAAMhoB,QAC/DolB,GAAa,oCACjB,CACA,MAAO/V,GACH,GAAIqW,GAAqBrW,GACrB,OACJ+V,GAAa,qEAAsE,SACnF,GAAQ/V,MAAMA,EAClB,CACJ,CAiOwB4Y,CAAsB1F,EAAM,EAEhCnnB,QAAS,gCAEb,CACI7E,KAAM,gBACNgf,OAAQ7W,gBAtO5BA,eAAsC6jB,GAClC,IAAIkD,KAEJ,IACIlD,EAAMyF,MAAMhoB,MAAQ4F,KAAK+a,YAAY/C,UAAUkK,UAAUI,YACzD9C,GAAa,sCACjB,CACA,MAAO/V,GACH,GAAIqW,GAAqBrW,GACrB,OACJ+V,GAAa,sFAAuF,SACpG,GAAQ/V,MAAMA,EAClB,CACJ,CA0N8B8Y,CAAuB5F,GAC7BkF,EAAIW,kBAAkBlB,IACtBO,EAAIY,mBAAmBnB,GAAa,EAExC9rB,QAAS,wDAEb,CACI7E,KAAM,OACNgf,OAAQ,MAjO5B7W,eAAqC6jB,GACjC,IACIgB,GAAO,IAAIiB,KAAK,CAAC5e,KAAKC,UAAU0c,EAAMyF,MAAMhoB,QAAS,CACjD/P,KAAM,6BACN,mBACR,CACA,MAAOof,GACH+V,GAAa,0EAA2E,SACxF,GAAQ/V,MAAMA,EAClB,CACJ,CAwNwBiZ,CAAsB/F,EAAM,EAEhCnnB,QAAS,iCAEb,CACI7E,KAAM,cACNgf,OAAQ7W,gBAnM5BA,eAAyC6jB,GACrC,IACI,MAAMvyB,QA1BL41B,KACDA,GAAY50B,SAAS8V,cAAc,SACnC8e,GAAU31B,KAAO,OACjB21B,GAAU2C,OAAS,SAEvB,WACI,OAAO,IAAI3L,SAAQ,CAAC+E,EAAS6G,KACzB5C,GAAU6C,SAAW/pB,UACjB,MAAMye,EAAQyI,GAAUzI,MACxB,IAAKA,EACD,OAAOwE,EAAQ,MACnB,MAAM+G,EAAOvL,EAAMiD,KAAK,GACxB,OAEOuB,EAFF+G,EAEU,CAAE5xB,WAAY4xB,EAAK5xB,OAAQ4xB,QADvB,KAC8B,EAGrD9C,GAAU+C,SAAW,IAAMhH,EAAQ,MACnCiE,GAAUpC,QAAUgF,EACpB5C,GAAUjvB,OAAO,GAEzB,GAMU4mB,QAAevtB,IACrB,IAAKutB,EACD,OACJ,MAAM,KAAEzmB,EAAI,KAAE4xB,GAASnL,EACvBgF,EAAMyF,MAAMhoB,MAAQ4F,KAAK+a,MAAM7pB,GAC/BsuB,GAAa,+BAA+BsD,EAAKh5B,SACrD,CACA,MAAO2f,GACH+V,GAAa,0EAA2E,SACxF,GAAQ/V,MAAMA,EAClB,CACJ,CAsL8BuZ,CAA0BrG,GAChCkF,EAAIW,kBAAkBlB,IACtBO,EAAIY,mBAAmBnB,GAAa,EAExC9rB,QAAS,sCAGjBytB,YAAa,CACT,CACItyB,KAAM,UACN6E,QAAS,kCACTma,OAASuT,IACL,MAAM3C,EAAQ5D,EAAMniB,GAAGqI,IAAIqgB,GACtB3C,EAG4B,mBAAjBA,EAAM4C,OAClB3D,GAAa,iBAAiB0D,kEAAwE,SAGtG3C,EAAM4C,SACN3D,GAAa,UAAU0D,cAPvB1D,GAAa,iBAAiB0D,oCAA0C,OAQ5E,MAKhBrB,EAAIjwB,GAAGwxB,kBAAiB,CAACC,EAASC,KAC9B,MAAMhoB,EAAS+nB,EAAQE,mBACnBF,EAAQE,kBAAkBjoB,MAC9B,GAAIA,GAASA,EAAMkoB,SAAU,CACzB,MAAMC,EAAcJ,EAAQE,kBAAkBjoB,MAAMkoB,SACpDj4B,OAAO6qB,OAAOqN,GAAa1lB,SAASwiB,IAChC8C,EAAQK,aAAatB,MAAMhjB,KAAK,CAC5B/U,KAAMm3B,GAAajB,EAAMC,KACzBplB,IAAK,QACLuoB,UAAU,EACVvpB,MAAOmmB,EAAMqD,cACP,CACEzD,QAAS,CACL/lB,OAAO,IAAAypB,OAAMtD,EAAMuD,QACnBnb,QAAS,CACL,CACIhY,KAAM,UACN6E,QAAS,gCACTma,OAAQ,IAAM4Q,EAAM4C,aAMhC53B,OAAOuwB,KAAKyE,EAAMuD,QAAQzb,QAAO,CAAC+Z,EAAOhnB,KACrCgnB,EAAMhnB,GAAOmlB,EAAMuD,OAAO1oB,GACnBgnB,IACR,CAAC,KAEZ7B,EAAMwD,UAAYxD,EAAMwD,SAAS92B,QACjCo2B,EAAQK,aAAatB,MAAMhjB,KAAK,CAC5B/U,KAAMm3B,GAAajB,EAAMC,KACzBplB,IAAK,UACLuoB,UAAU,EACVvpB,MAAOmmB,EAAMwD,SAAS1b,QAAO,CAAC2b,EAAS5oB,KACnC,IACI4oB,EAAQ5oB,GAAOmlB,EAAMnlB,EACzB,CACA,MAAOqO,GAEHua,EAAQ5oB,GAAOqO,CACnB,CACA,OAAOua,CAAO,GACf,CAAC,IAEZ,GAER,KAEJnC,EAAIjwB,GAAGqyB,kBAAkBZ,IACrB,GAAIA,EAAQrV,MAAQA,GAAOqV,EAAQa,cAAgB5C,GAAc,CAC7D,IAAI6C,EAAS,CAACxH,GACdwH,EAASA,EAAOl4B,OAAOqK,MAAM8tB,KAAKzH,EAAMniB,GAAG4b,WAC3CiN,EAAQgB,WAAahB,EAAQj0B,OACvB+0B,EAAO/0B,QAAQmxB,GAAU,QAASA,EAC9BA,EAAMC,IACHT,cACAnzB,SAASy2B,EAAQj0B,OAAO2wB,eAC3BK,GAAiBL,cAAcnzB,SAASy2B,EAAQj0B,OAAO2wB,iBAC3DoE,GAAQz7B,IAAI43B,GACtB,KAEJuB,EAAIjwB,GAAG0yB,mBAAmBjB,IACtB,GAAIA,EAAQrV,MAAQA,GAAOqV,EAAQa,cAAgB5C,GAAc,CAC7D,MAAMiD,EAAiBlB,EAAQH,SAAW7C,GACpC1D,EACAA,EAAMniB,GAAGqI,IAAIwgB,EAAQH,QAC3B,IAAKqB,EAGD,OAEAA,IACAlB,EAAQjB,MApQ5B,SAAsC7B,GAClC,GAAIX,GAAQW,GAAQ,CAChB,MAAMiE,EAAaluB,MAAM8tB,KAAK7D,EAAM/lB,GAAGshB,QACjC2I,EAAWlE,EAAM/lB,GACjB4nB,EAAQ,CACVA,MAAOoC,EAAW97B,KAAKg8B,IAAY,CAC/Bf,UAAU,EACVvoB,IAAKspB,EACLtqB,MAAOmmB,EAAM6B,MAAMhoB,MAAMsqB,OAE7BV,QAASQ,EACJp1B,QAAQwD,GAAO6xB,EAAS5hB,IAAIjQ,GAAImxB,WAChCr7B,KAAKkK,IACN,MAAM2tB,EAAQkE,EAAS5hB,IAAIjQ,GAC3B,MAAO,CACH+wB,UAAU,EACVvoB,IAAKxI,EACLwH,MAAOmmB,EAAMwD,SAAS1b,QAAO,CAAC2b,EAAS5oB,KACnC4oB,EAAQ5oB,GAAOmlB,EAAMnlB,GACd4oB,IACR,CAAC,GACP,KAGT,OAAO5B,CACX,CACA,MAAMA,EAAQ,CACVA,MAAO72B,OAAOuwB,KAAKyE,EAAMuD,QAAQp7B,KAAK0S,IAAQ,CAC1CuoB,UAAU,EACVvoB,MACAhB,MAAOmmB,EAAMuD,OAAO1oB,QAkB5B,OAdImlB,EAAMwD,UAAYxD,EAAMwD,SAAS92B,SACjCm1B,EAAM4B,QAAUzD,EAAMwD,SAASr7B,KAAKi8B,IAAe,CAC/ChB,UAAU,EACVvoB,IAAKupB,EACLvqB,MAAOmmB,EAAMoE,QAGjBpE,EAAMqE,kBAAkB7yB,OACxBqwB,EAAMyC,iBAAmBvuB,MAAM8tB,KAAK7D,EAAMqE,mBAAmBl8B,KAAK0S,IAAQ,CACtEuoB,UAAU,EACVvoB,MACAhB,MAAOmmB,EAAMnlB,QAGdgnB,CACX,CAmNoC0C,CAA6BP,GAErD,KAEJ1C,EAAIjwB,GAAGmzB,oBAAmB,CAAC1B,EAASC,KAChC,GAAID,EAAQrV,MAAQA,GAAOqV,EAAQa,cAAgB5C,GAAc,CAC7D,MAAMiD,EAAiBlB,EAAQH,SAAW7C,GACpC1D,EACAA,EAAMniB,GAAGqI,IAAIwgB,EAAQH,QAC3B,IAAKqB,EACD,OAAO/E,GAAa,UAAU6D,EAAQH,oBAAqB,SAE/D,MAAM,KAAE16B,GAAS66B,EACZzD,GAAQ2E,GAUT/7B,EAAKw8B,QAAQ,SARO,IAAhBx8B,EAAKyE,QACJs3B,EAAeK,kBAAkBK,IAAIz8B,EAAK,OAC3CA,EAAK,KAAM+7B,EAAeT,SAC1Bt7B,EAAKw8B,QAAQ,UAOrB7D,IAAmB,EACnBkC,EAAQ5a,IAAI8b,EAAgB/7B,EAAM66B,EAAQjB,MAAMhoB,OAChD+mB,IAAmB,CACvB,KAEJU,EAAIjwB,GAAGszB,oBAAoB7B,IACvB,GAAIA,EAAQh5B,KAAKmF,WAAW,MAAO,CAC/B,MAAMk1B,EAAUrB,EAAQh5B,KAAK6U,QAAQ,SAAU,IACzCqhB,EAAQ5D,EAAMniB,GAAGqI,IAAI6hB,GAC3B,IAAKnE,EACD,OAAOf,GAAa,UAAUkF,eAAsB,SAExD,MAAM,KAAEl8B,GAAS66B,EACjB,GAAgB,UAAZ76B,EAAK,GACL,OAAOg3B,GAAa,2BAA2BkF,QAAcl8B,kCAIjEA,EAAK,GAAK,SACV24B,IAAmB,EACnBkC,EAAQ5a,IAAI8X,EAAO/3B,EAAM66B,EAAQjB,MAAMhoB,OACvC+mB,IAAmB,CACvB,IACF,GAEV,CAgLA,IACIgE,GADAC,GAAkB,EAUtB,SAASC,GAAuB9E,EAAO+E,EAAaC,GAEhD,MAAM5c,EAAU2c,EAAYjd,QAAO,CAACmd,EAAcC,KAE9CD,EAAaC,IAAc,IAAA5B,OAAMtD,GAAOkF,GACjCD,IACR,CAAC,GACJ,IAAK,MAAMC,KAAc9c,EACrB4X,EAAMkF,GAAc,WAEhB,MAAMC,EAAYN,GACZO,EAAeJ,EACf,IAAI1Q,MAAM0L,EAAO,CACf1d,IAAG,IAAI8Y,KACHwJ,GAAeO,EACR/Q,QAAQ9R,OAAO8Y,IAE1BlT,IAAG,IAAIkT,KACHwJ,GAAeO,EACR/Q,QAAQlM,OAAOkT,MAG5B4E,EAEN4E,GAAeO,EACf,MAAME,EAAWjd,EAAQ8c,GAAYhqB,MAAMkqB,EAAc34B,WAGzD,OADAm4B,QAAe1xB,EACRmyB,CACX,CAER,CAIA,SAASC,IAAe,IAAE7X,EAAG,MAAEuS,EAAK,QAAEhkB,IAElC,GAAIgkB,EAAMC,IAAIhxB,WAAW,UACrB,OAGJ+wB,EAAMqD,gBAAkBrnB,EAAQ6lB,MAChCiD,GAAuB9E,EAAOh1B,OAAOuwB,KAAKvf,EAAQoM,SAAU4X,EAAMqD,eAElE,MAAMkC,EAAoBvF,EAAMwF,YAChC,IAAAlC,OAAMtD,GAAOwF,WAAa,SAAUC,GAChCF,EAAkBrqB,MAAM3P,KAAMkB,WAC9Bq4B,GAAuB9E,EAAOh1B,OAAOuwB,KAAKkK,EAASC,YAAYtd,WAAY4X,EAAMqD,cACrF,EAzOJ,SAA4B5V,EAAKuS,GACxBa,GAAoBx0B,SAAS40B,GAAajB,EAAMC,OACjDY,GAAoBhiB,KAAKoiB,GAAajB,EAAMC,MAEhDxE,GAAoB,CAChBppB,GAAI,gBACJsW,MAAO,WACPwY,KAAM,mCACNC,YAAa,QACbC,SAAU,0BACVR,uBACApT,MACAuM,SAAU,CACN2L,gBAAiB,CACbhd,MAAO,kCACP7e,KAAM,UACNowB,cAAc,MAQtBoH,IAEA,MAAMzG,EAAyB,mBAAZyG,EAAIzG,IAAqByG,EAAIzG,IAAIloB,KAAK2uB,GAAOntB,KAAK0mB,IACrEmF,EAAM4F,WAAU,EAAGC,QAAOC,UAASv8B,OAAM6xB,WACrC,MAAM2K,EAAUlB,KAChBvD,EAAI0E,iBAAiB,CACjBC,QAASnF,GACT5c,MAAO,CACHgiB,KAAMrL,IACN5pB,MAAO,MAAQ1H,EACf48B,SAAU,QACV96B,KAAM,CACF20B,MAAON,GAAcM,EAAMC,KAC3B7Q,OAAQsQ,GAAcn2B,GACtB6xB,QAEJ2K,aAGRF,GAAOzO,IACHwN,QAAe1xB,EACfouB,EAAI0E,iBAAiB,CACjBC,QAASnF,GACT5c,MAAO,CACHgiB,KAAMrL,IACN5pB,MAAO,MAAQ1H,EACf48B,SAAU,MACV96B,KAAM,CACF20B,MAAON,GAAcM,EAAMC,KAC3B7Q,OAAQsQ,GAAcn2B,GACtB6xB,OACAhE,UAEJ2O,YAEN,IAEND,GAAS5c,IACL0b,QAAe1xB,EACfouB,EAAI0E,iBAAiB,CACjBC,QAASnF,GACT5c,MAAO,CACHgiB,KAAMrL,IACNuL,QAAS,QACTn1B,MAAO,MAAQ1H,EACf48B,SAAU,MACV96B,KAAM,CACF20B,MAAON,GAAcM,EAAMC,KAC3B7Q,OAAQsQ,GAAcn2B,GACtB6xB,OACAlS,SAEJ6c,YAEN,GACJ,IACH,GACH/F,EAAMqE,kBAAkB7mB,SAASjU,KAC7B,IAAAuC,QAAM,KAAM,IAAAu6B,OAAMrG,EAAMz2B,MAAQ,CAAC+2B,EAAUD,KACvCiB,EAAIgF,wBACJhF,EAAIY,mBAAmBnB,IACnBH,IACAU,EAAI0E,iBAAiB,CACjBC,QAASnF,GACT5c,MAAO,CACHgiB,KAAMrL,IACN5pB,MAAO,SACPk1B,SAAU58B,EACV8B,KAAM,CACFi1B,WACAD,YAEJ0F,QAASnB,KAGrB,GACD,CAAE2B,MAAM,GAAO,IAEtBvG,EAAMwG,YAAW,EAAGrG,SAAQr2B,QAAQ+3B,KAGhC,GAFAP,EAAIgF,wBACJhF,EAAIY,mBAAmBnB,KAClBH,GACD,OAEJ,MAAM6F,EAAY,CACdP,KAAMrL,IACN5pB,MAAOuvB,GAAmB12B,GAC1BuB,KAAM21B,GAAS,CAAEhB,MAAON,GAAcM,EAAMC,MAAQC,GAAgBC,IACpE4F,QAASnB,IAET96B,IAAS0yB,GAAakE,cACtB+F,EAAUN,SAAW,KAEhBr8B,IAAS0yB,GAAamE,YAC3B8F,EAAUN,SAAW,KAEhBhG,IAAWpqB,MAAM6I,QAAQuhB,KAC9BsG,EAAUN,SAAWhG,EAAOr2B,MAE5Bq2B,IACAsG,EAAUp7B,KAAK,eAAiB,CAC5Bu0B,QAAS,CACLD,QAAS,gBACT71B,KAAM,SACNmL,QAAS,sBACT4E,MAAOsmB,KAInBmB,EAAI0E,iBAAiB,CACjBC,QAASnF,GACT5c,MAAOuiB,GACT,GACH,CAAEC,UAAU,EAAMC,MAAO,SAC5B,MAAMC,EAAY5G,EAAMwF,WACxBxF,EAAMwF,YAAa,IAAAqB,UAASpB,IACxBmB,EAAUnB,GACVnE,EAAI0E,iBAAiB,CACjBC,QAASnF,GACT5c,MAAO,CACHgiB,KAAMrL,IACN5pB,MAAO,MAAQ+uB,EAAMC,IACrBkG,SAAU,aACV96B,KAAM,CACF20B,MAAON,GAAcM,EAAMC,KAC3B6G,KAAMpH,GAAc,kBAKhC4B,EAAIgF,wBACJhF,EAAIW,kBAAkBlB,IACtBO,EAAIY,mBAAmBnB,GAAa,IAExC,MAAM,SAAEgG,GAAa/G,EACrBA,EAAM+G,SAAW,KACbA,IACAzF,EAAIgF,wBACJhF,EAAIW,kBAAkBlB,IACtBO,EAAIY,mBAAmBnB,IACvBO,EAAI5G,cAAciL,iBACd1G,GAAa,aAAae,EAAMC,gBAAgB,EAGxDqB,EAAIgF,wBACJhF,EAAIW,kBAAkBlB,IACtBO,EAAIY,mBAAmBnB,IACvBO,EAAI5G,cAAciL,iBACd1G,GAAa,IAAIe,EAAMC,0BAA0B,GAE7D,CA4DI+G,CAAmBvZ,EAEnBuS,EACJ,CAuJA,MAAM,GAAO,OACb,SAASiH,GAAgBC,EAAeC,EAAUT,EAAUU,EAAY,IACpEF,EAAcroB,KAAKsoB,GACnB,MAAME,EAAqB,KACvB,MAAMC,EAAMJ,EAAc58B,QAAQ68B,GAC9BG,GAAO,IACPJ,EAAc7mB,OAAOinB,EAAK,GAC1BF,IACJ,EAKJ,OAHKV,IAAY,IAAAa,qBACb,IAAAC,gBAAeH,GAEZA,CACX,CACA,SAASI,GAAqBP,KAAkB9L,GAC5C8L,EAAc30B,QAAQiL,SAAS2pB,IAC3BA,KAAY/L,EAAK,GAEzB,CAEA,MAAMsM,GAA0B5sB,GAAOA,IACvC,SAAS6sB,GAAqBp6B,EAAQq6B,GAE9Br6B,aAAkBs6B,KAAOD,aAAwBC,KACjDD,EAAapqB,SAAQ,CAAC3D,EAAOgB,IAAQtN,EAAO2a,IAAIrN,EAAKhB,KAGrDtM,aAAkBu6B,KAAOF,aAAwBE,KACjDF,EAAapqB,QAAQjQ,EAAOe,IAAKf,GAGrC,IAAK,MAAMsN,KAAO+sB,EAAc,CAC5B,IAAKA,EAAaplB,eAAe3H,GAC7B,SACJ,MAAMktB,EAAWH,EAAa/sB,GACxBmtB,EAAcz6B,EAAOsN,GACvByhB,GAAc0L,IACd1L,GAAcyL,IACdx6B,EAAOiV,eAAe3H,MACrB,IAAAotB,OAAMF,MACN,IAAAG,YAAWH,GAIZx6B,EAAOsN,GAAO8sB,GAAqBK,EAAaD,GAIhDx6B,EAAOsN,GAAOktB,CAEtB,CACA,OAAOx6B,CACX,CACA,MAAM46B,GAE2B1lB,SAC3B2lB,GAA+B,IAAIC,SAyBjCtpB,OAAM,IAAK/T,OA8CnB,SAASs9B,GAAiBrI,EAAKsI,EAAOvsB,EAAU,CAAC,EAAGogB,EAAOoM,EAAKC,GAC5D,IAAIC,EACJ,MAAMC,EAAmB,GAAO,CAAEvgB,QAAS,CAAC,GAAKpM,GAM3C4sB,EAAoB,CACtBrC,MAAM,GAwBV,IAAIsC,EACAC,EAGAC,EAFA7B,EAAgB,GAChB8B,EAAsB,GAE1B,MAAMC,EAAe7M,EAAMyF,MAAMhoB,MAAMomB,GAGlCwI,GAAmBQ,IAEhB,IACA,IAAA/gB,KAAIkU,EAAMyF,MAAMhoB,MAAOomB,EAAK,CAAC,GAG7B7D,EAAMyF,MAAMhoB,MAAMomB,GAAO,CAAC,GAGlC,MAAMiJ,GAAW,IAAA93B,KAAI,CAAC,GAGtB,IAAI+3B,EACJ,SAASC,EAAOC,GACZ,IAAIC,EACJT,EAAcC,GAAkB,EAMK,mBAA1BO,GACPA,EAAsBjN,EAAMyF,MAAMhoB,MAAMomB,IACxCqJ,EAAuB,CACnBx/B,KAAM0yB,GAAakE,cACnByD,QAASlE,EACTE,OAAQ4I,KAIZpB,GAAqBvL,EAAMyF,MAAMhoB,MAAMomB,GAAMoJ,GAC7CC,EAAuB,CACnBx/B,KAAM0yB,GAAamE,YACnBmC,QAASuG,EACTlF,QAASlE,EACTE,OAAQ4I,IAGhB,MAAMQ,EAAgBJ,EAAiB1mB,UACvC,IAAA+mB,YAAW7a,MAAK,KACRwa,IAAmBI,IACnBV,GAAc,EAClB,IAEJC,GAAkB,EAElBrB,GAAqBP,EAAeoC,EAAsBlN,EAAMyF,MAAMhoB,MAAMomB,GAChF,CACA,MAAM2C,EAAS6F,EACT,WACE,MAAM,MAAE5G,GAAU7lB,EACZytB,EAAW5H,EAAQA,IAAU,CAAC,EAEpCt2B,KAAK69B,QAAQ7F,IACT,GAAOA,EAAQkG,EAAS,GAEhC,EAMU,GAcd,SAASC,EAAWngC,EAAM6lB,GACtB,OAAO,WACH+M,GAAeC,GACf,MAAMhB,EAAOrlB,MAAM8tB,KAAKp3B,WAClBk9B,EAAoB,GACpBC,EAAsB,GAe5B,IAAIC,EAPJpC,GAAqBuB,EAAqB,CACtC5N,OACA7xB,OACAy2B,QACA6F,MAXJ,SAAesB,GACXwC,EAAkB9qB,KAAKsoB,EAC3B,EAUIrB,QATJ,SAAiBqB,GACbyC,EAAoB/qB,KAAKsoB,EAC7B,IAUA,IACI0C,EAAMza,EAAOlU,MAAM3P,MAAQA,KAAK00B,MAAQA,EAAM10B,KAAOy0B,EAAO5E,EAEhE,CACA,MAAOlS,GAEH,MADAue,GAAqBmC,EAAqB1gB,GACpCA,CACV,CACA,OAAI2gB,aAAepT,QACRoT,EACFlb,MAAM9U,IACP4tB,GAAqBkC,EAAmB9vB,GACjCA,KAENiwB,OAAO5gB,IACRue,GAAqBmC,EAAqB1gB,GACnCuN,QAAQ4L,OAAOnZ,OAI9Bue,GAAqBkC,EAAmBE,GACjCA,EACX,CACJ,CACA,MAAMnE,GAA4B,IAAAmB,SAAQ,CACtCze,QAAS,CAAC,EACVqb,QAAS,CAAC,EACV5B,MAAO,GACPqH,aAEEa,EAAe,CACjBC,GAAI5N,EAEJ6D,MACA2F,UAAWqB,GAAgBt0B,KAAK,KAAMq2B,GACtCI,SACAxG,SACA4D,WAAWW,EAAUnrB,EAAU,CAAC,GAC5B,MAAMqrB,EAAqBJ,GAAgBC,EAAeC,EAAUnrB,EAAQ0qB,UAAU,IAAMuD,MACtFA,EAAcvB,EAAMwB,KAAI,KAAM,IAAAp+B,QAAM,IAAMswB,EAAMyF,MAAMhoB,MAAMomB,KAAO4B,KAC/C,SAAlB7lB,EAAQ2qB,MAAmBmC,EAAkBD,IAC7C1B,EAAS,CACLhD,QAASlE,EACTn2B,KAAM0yB,GAAaiE,OACnBN,OAAQ4I,GACTlH,EACP,GACD,GAAO,CAAC,EAAG+G,EAAmB5sB,MACjC,OAAOqrB,CACX,EACAN,SApFJ,WACI2B,EAAMyB,OACNjD,EAAgB,GAChB8B,EAAsB,GACtB5M,EAAMniB,GAAGsc,OAAO0J,EACpB,GAkFI,KAEA8J,EAAaK,IAAK,GAEtB,MAAMpK,GAAQ,IAAAqK,UAAoD3N,GAC5D,GAAO,CACLgJ,cACArB,mBAAmB,IAAAwC,SAAQ,IAAIiB,MAChCiC,GAIDA,GAGN3N,EAAMniB,GAAGiO,IAAI+X,EAAKD,GAClB,MAAMsK,EAAkBlO,EAAMrB,IAAMqB,EAAMrB,GAAGuP,gBAAmB5C,GAE1D6C,EAAanO,EAAMliB,GAAGgwB,KAAI,KAC5BxB,GAAQ,IAAA8B,eACDF,GAAe,IAAM5B,EAAMwB,IAAI3B,QAG1C,IAAK,MAAM1tB,KAAO0vB,EAAY,CAC1B,MAAMpW,EAAOoW,EAAW1vB,GACxB,IAAK,IAAAotB,OAAM9T,KArQCrrB,EAqQoBqrB,IApQ1B,IAAA8T,OAAMn/B,KAAMA,EAAE2hC,UAoQsB,IAAAvC,YAAW/T,GAOvCsU,KAEFQ,IApRGyB,EAoR2BvW,EAnRvC,GAC2BiU,GAAe1D,IAAIgG,GAC9CpO,GAAcoO,IAASA,EAAIloB,eAAe2lB,QAkR7B,IAAAF,OAAM9T,GACNA,EAAKta,MAAQovB,EAAapuB,GAK1B8sB,GAAqBxT,EAAM8U,EAAapuB,KAK5C,IACA,IAAAqN,KAAIkU,EAAMyF,MAAMhoB,MAAMomB,GAAMplB,EAAKsZ,GAGjCiI,EAAMyF,MAAMhoB,MAAMomB,GAAKplB,GAAOsZ,QASrC,GAAoB,mBAATA,EAAqB,CAEjC,MAAMwW,EAAsEjB,EAAW7uB,EAAKsZ,GAIxF,IACA,IAAAjM,KAAIqiB,EAAY1vB,EAAK8vB,GAIrBJ,EAAW1vB,GAAO8vB,EAQtBhC,EAAiBvgB,QAAQvN,GAAOsZ,CACpC,CAgBJ,CAjVJ,IAAuBuW,EAMH5hC,EA+ahB,GAjGI,GACAkC,OAAOuwB,KAAKgP,GAAY/sB,SAAS3C,KAC7B,IAAAqN,KAAI8X,EAAOnlB,EAAK0vB,EAAW1vB,GAAK,KAIpC,GAAOmlB,EAAOuK,GAGd,IAAO,IAAAjH,OAAMtD,GAAQuK,IAKzBv/B,OAAOoX,eAAe4d,EAAO,SAAU,CACnC1d,IAAK,IAAyE8Z,EAAMyF,MAAMhoB,MAAMomB,GAChG/X,IAAM2Z,IAKFuH,GAAQ7F,IACJ,GAAOA,EAAQ1B,EAAM,GACvB,IA0ENnF,GAAc,CACd,MAAMkO,EAAgB,CAClBC,UAAU,EACVC,cAAc,EAEdzoB,YAAY,GAEhB,CAAC,KAAM,cAAe,WAAY,qBAAqB7E,SAASlU,IAC5D0B,OAAOoX,eAAe4d,EAAO12B,EAAG,GAAO,CAAEuQ,MAAOmmB,EAAM12B,IAAMshC,GAAe,GAEnF,CA6CA,OA3CI,KAEA5K,EAAMoK,IAAK,GAGfhO,EAAM4N,GAAGxsB,SAASutB,IAEd,GAAIrO,GAAc,CACd,MAAMsO,EAAatC,EAAMwB,KAAI,IAAMa,EAAS,CACxC/K,QACAvS,IAAK2O,EAAMrB,GACXqB,QACApgB,QAAS2sB,MAEb39B,OAAOuwB,KAAKyP,GAAc,CAAC,GAAGxtB,SAAS3C,GAAQmlB,EAAMqE,kBAAkB/1B,IAAIuM,KAC3E,GAAOmlB,EAAOgL,EAClB,MAEI,GAAOhL,EAAO0I,EAAMwB,KAAI,IAAMa,EAAS,CACnC/K,QACAvS,IAAK2O,EAAMrB,GACXqB,QACApgB,QAAS2sB,MAEjB,IAYAM,GACAR,GACAzsB,EAAQivB,SACRjvB,EAAQivB,QAAQjL,EAAMuD,OAAQ0F,GAElCJ,GAAc,EACdC,GAAkB,EACX9I,CACX,CACA,SAASkL,GAETC,EAAa5C,EAAO6C,GAChB,IAAI/4B,EACA2J,EACJ,MAAMqvB,EAAgC,mBAAV9C,EAa5B,SAAS+C,EAASlP,EAAOoM,GACrB,MAAM+C,KN3kDH,IAAAC,sBMgoDH,OApDApP,EAGuFA,IAC9EmP,GAAa,IAAAE,QAAOpP,GAAa,MAAQ,QAE9CF,GAAeC,IAOnBA,EAAQF,IACGjiB,GAAGyqB,IAAIryB,KAEVg5B,EACA/C,GAAiBj2B,EAAIk2B,EAAOvsB,EAASogB,GA1gBrD,SAA4B/pB,EAAI2J,EAASogB,EAAOoM,GAC5C,MAAM,MAAE3G,EAAK,QAAEzZ,EAAO,QAAEqb,GAAYznB,EAC9BitB,EAAe7M,EAAMyF,MAAMhoB,MAAMxH,GACvC,IAAI2tB,EAoCJA,EAAQsI,GAAiBj2B,GAnCzB,WACS42B,IAEG,IACA,IAAA/gB,KAAIkU,EAAMyF,MAAMhoB,MAAOxH,EAAIwvB,EAAQA,IAAU,CAAC,GAG9CzF,EAAMyF,MAAMhoB,MAAMxH,GAAMwvB,EAAQA,IAAU,CAAC,GAInD,MAAM6J,GAGA,IAAAC,QAAOvP,EAAMyF,MAAMhoB,MAAMxH,IAC/B,OAAO,GAAOq5B,EAAYtjB,EAASpd,OAAOuwB,KAAKkI,GAAW,CAAC,GAAG3b,QAAO,CAAC8jB,EAAiBriC,KAInFqiC,EAAgBriC,IAAQ,IAAAs9B,UAAQ,IAAAj7B,WAAS,KACrCuwB,GAAeC,GAEf,MAAM4D,EAAQ5D,EAAMniB,GAAGqI,IAAIjQ,GAG3B,IAAI,IAAW2tB,EAAMoK,GAKrB,OAAO3G,EAAQl6B,GAAMsH,KAAKmvB,EAAOA,EAAM,KAEpC4L,IACR,CAAC,GACR,GACoC5vB,EAASogB,EAAOoM,GAAK,EAE7D,CAoegBqD,CAAmBx5B,EAAI2J,EAASogB,IAQ1BA,EAAMniB,GAAGqI,IAAIjQ,EAyB/B,CAEA,MArE2B,iBAAhB84B,GACP94B,EAAK84B,EAELnvB,EAAUqvB,EAAeD,EAAe7C,IAGxCvsB,EAAUmvB,EACV94B,EAAK84B,EAAY94B,IA6DrBi5B,EAASrL,IAAM5tB,EACRi5B,CACX,CCltDA,ICUIQ,GAAiB,SAAwBC,EAASC,GACpD,OAAID,EAAUC,GACJ,EAEND,EAAUC,EACL,EAEF,CACT,EAEIC,GAAiB,SAAwBC,EAASC,GACpD,IAAI/U,EAAS8U,EAAQE,cAAcD,GACnC,OAAO/U,EAASA,EAAS3Y,KAAK4tB,IAAIjV,GAAU,CAC9C,EAEIkV,GAAa,8FACbC,GAAqC,aACrCC,GAAiB,OACjBC,GAAkB,kDAClBC,GAAU,6GACVC,GAAkB,qBAElBC,GAAwB,eAExBC,GAAgB,SAAuBX,EAASC,GAClD,OAAID,EAAUC,GACJ,EAEND,EAAUC,EACL,EAEF,CACT,EAoFIW,GAAsB,SAA6BC,GACrD,OAAOA,EAAMpuB,QAAQ6tB,GAAgB,KAAK7tB,QAAQ4tB,GAAoC,GACxF,EAEIS,GAAc,SAAqBnzB,GACrC,GAAqB,IAAjBA,EAAMnN,OAAc,CACtB,IAAIugC,EAAe9hC,OAAO0O,GAC1B,IAAK1O,OAAO+hC,MAAMD,GAChB,OAAOA,CAEX,CAEF,EAEIE,GAAwB,SAA+BJ,EAAO1b,EAAO+b,GACvE,GAAIX,GAAgBtoB,KAAK4oB,MAIlBJ,GAAgBxoB,KAAK4oB,IAAoB,IAAV1b,GAAqC,MAAtB+b,EAAO/b,EAAQ,IAChE,OAAO2b,GAAYD,IAAU,CAInC,EAEIM,GAAiB,SAAwBN,EAAO1b,EAAO+b,GACzD,MAAO,CACLH,aAAcE,GAAsBJ,EAAO1b,EAAO+b,GAClDE,iBAAkBR,GAAoBC,GAE1C,EAMIQ,GAAkB,SAAyB1zB,GAC7C,IAAI2zB,EALa,SAAsB3zB,GACvC,OAAOA,EAAM8E,QAAQ2tB,GAAY,UAAU3tB,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAAIzW,MAAM,KACzF,CAGmBulC,CAAa5zB,GAAO1R,IAAIklC,IACzC,OAAOG,CACT,EAEIE,GAAa,SAAoB7zB,GACnC,MAAwB,mBAAVA,CAChB,EAEI,GAAQ,SAAeA,GACzB,OAAO1O,OAAO+hC,MAAMrzB,IAAUA,aAAiB1O,QAAUA,OAAO+hC,MAAMrzB,EAAM8zB,UAC9E,EAEIC,GAAS,SAAgB/zB,GAC3B,OAAiB,OAAVA,CACT,EAEI,GAAW,SAAkBA,GAC/B,QAAiB,OAAVA,GAAmC,iBAAVA,GAAuB9D,MAAM6I,QAAQ/E,IAAYA,aAAiB1O,QAAa0O,aAAiB1P,QAAa0P,aAAiB9P,SAAc8P,aAAiB1F,KAC/L,EAEI05B,GAAW,SAAkBh0B,GAC/B,MAAwB,iBAAVA,CAChB,EAEIi0B,GAAc,SAAqBj0B,GACrC,YAAiB3G,IAAV2G,CACT,EAwCIk0B,GAAuB,SAA8Bl0B,GACvD,GAAqB,iBAAVA,GAAsBA,aAAiB1P,SAA4B,iBAAV0P,GAAsBA,aAAiB1O,UAAY,GAAM0O,IAA2B,kBAAVA,GAAuBA,aAAiB9P,SAAW8P,aAAiB1F,KAAM,CACtN,IAAI65B,EAlBQ,SAAmBn0B,GACjC,MAAqB,kBAAVA,GAAuBA,aAAiB9P,QAC1CoB,OAAO0O,GAAO5H,WAEF,iBAAV4H,GAAsBA,aAAiB1O,OACzC0O,EAAM5H,WAEX4H,aAAiB1F,KACZ0F,EAAMo0B,UAAUh8B,WAEJ,iBAAV4H,GAAsBA,aAAiB1P,OACzC0P,EAAM2lB,cAAc7gB,QAAQ4tB,GAAoC,IAElE,EACT,CAIsB7sB,CAAU7F,GACxBozB,EA3BQ,SAAmBpzB,GACjC,IAAIozB,EAAeD,GAAYnzB,GAC/B,YAAqB3G,IAAjB+5B,EACKA,EAjBK,SAAmBpzB,GACjC,IACE,IAAIq0B,EAAa/5B,KAAKqmB,MAAM3gB,GAC5B,OAAK1O,OAAO+hC,MAAMgB,IACZxB,GAAQvoB,KAAKtK,GACRq0B,OAGX,CACF,CAAE,MAAOC,GACP,MACF,CACF,CAOSC,CAAUv0B,EACnB,CAqBuBw0B,CAAUL,GAE7B,MAAO,CACLf,aAAcA,EACdG,OAHWG,GAAgBN,EAAe,GAAKA,EAAee,GAI9Dn0B,MAAOA,EAEX,CACA,MAAO,CACL+E,QAAS7I,MAAM6I,QAAQ/E,GACvB6zB,WAAYA,GAAW7zB,GACvBqzB,MAAO,GAAMrzB,GACb+zB,OAAQA,GAAO/zB,GACfy0B,SAAU,GAASz0B,GACnBg0B,SAAUA,GAASh0B,GACnBi0B,YAAaA,GAAYj0B,GACzBA,MAAOA,EAEX,EA2DI00B,GAAqB,SAA4B5uB,GACnD,MAA0B,mBAAfA,EAEFA,EAEF,SAAU9F,GACf,GAAI9D,MAAM6I,QAAQ/E,GAAQ,CACxB,IAAIwX,EAAQlmB,OAAOwU,GACnB,GAAIxU,OAAOqjC,UAAUnd,GACnB,OAAOxX,EAAMwX,EAEjB,MAAO,GAAIxX,GAA0B,iBAAVA,EAAoB,CAC7C,IAAIud,EAASpsB,OAAOyjC,yBAAyB50B,EAAO8F,GACpD,OAAiB,MAAVyX,OAAiB,EAASA,EAAOvd,KAC1C,CACA,OAAOA,CACT,CACF,EAmEA,SAAS60B,GAAQC,EAAYC,EAAaC,GACxC,IAAKF,IAAe54B,MAAM6I,QAAQ+vB,GAChC,MAAO,GAET,IAAIG,EApCe,SAAwBF,GAC3C,IAAKA,EACH,MAAO,GAET,IAAIG,EAAkBh5B,MAAM6I,QAAQgwB,GAA+B,GAAGljC,OAAOkjC,GAA1B,CAACA,GACpD,OAAIG,EAAenX,MAAK,SAAUjY,GAChC,MAA6B,iBAAfA,GAAiD,iBAAfA,GAAiD,mBAAfA,CACpF,IACS,GAEFovB,CACT,CAyB6BC,CAAeJ,GACtCK,EAxBU,SAAmBJ,GACjC,IAAKA,EACH,MAAO,GAET,IAAIK,EAAan5B,MAAM6I,QAAQiwB,GAAqB,GAAGnjC,OAAOmjC,GAArB,CAACA,GAC1C,OAAIK,EAAUtX,MAAK,SAAUxF,GAC3B,MAAiB,QAAVA,GAA6B,SAAVA,GAAqC,mBAAVA,CACvD,IACS,GAEF8c,CACT,CAawBC,CAAUN,GAChC,OA/DgB,SAAqBF,EAAYC,EAAaC,GAC9D,IAAIO,EAAgBR,EAAYliC,OAASkiC,EAAYzmC,IAAIomC,IAAsB,CAAC,SAAU10B,GACxF,OAAOA,CACT,GAGIw1B,EAAmBV,EAAWxmC,KAAI,SAAUmnC,EAASje,GAIvD,MAAO,CACLA,MAAOA,EACPwE,OALWuZ,EAAcjnC,KAAI,SAAUwX,GACvC,OAAqCA,EAAT2vB,EAC9B,IAAGnnC,IAAI4lC,IAKT,IAMA,OAHAsB,EAAiBxnB,MAAK,SAAU0nB,EAASC,GACvC,OArEkB,SAAyBD,EAASC,EAASX,GAO/D,IANA,IAAIY,EAASF,EAAQle,MACnBqe,EAAUH,EAAQ1Z,OAChB8Z,EAASH,EAAQne,MACnBue,EAAUJ,EAAQ3Z,OAChBnpB,EAASgjC,EAAQhjC,OACjBmjC,EAAehB,EAAOniC,OACjB3D,EAAI,EAAGA,EAAI2D,EAAQ3D,IAAK,CAC/B,IAAIqpB,EAAQrpB,EAAI8mC,EAAehB,EAAO9lC,GAAK,KAC3C,GAAIqpB,GAA0B,mBAAVA,EAAsB,CACxC,IAAIgF,EAAShF,EAAMsd,EAAQ3mC,GAAG8Q,MAAO+1B,EAAQ7mC,GAAG8Q,OAChD,GAAIud,EACF,OAAOA,CAEX,KAAO,CACL,IAAI0Y,GA5LiCC,EA4LTL,EAAQ3mC,GA5LSinC,EA4LLJ,EAAQ7mC,GA3LhDgnC,EAAOl2B,QAAUm2B,EAAOn2B,MACnB,OAEmB3G,IAAxB68B,EAAO9C,mBAAsD/5B,IAAxB88B,EAAO/C,aACvCnB,GAAeiE,EAAO9C,aAAc+C,EAAO/C,cAEhD8C,EAAO3C,QAAU4C,EAAO5C,OA5EV,SAAuB6C,EAASC,GAIlD,IAHA,IAAIC,EAAUF,EAAQvjC,OAClB0jC,EAAUF,EAAQxjC,OAClB8E,EAAOiN,KAAK6T,IAAI6d,EAASC,GACpBrnC,EAAI,EAAGA,EAAIyI,EAAMzI,IAAK,CAC7B,IAAIsnC,EAASJ,EAAQlnC,GACjBunC,EAASJ,EAAQnnC,GACrB,GAAIsnC,EAAO/C,mBAAqBgD,EAAOhD,iBAAkB,CACvD,GAAgC,KAA5B+C,EAAO/C,mBAAyD,KAA5BgD,EAAOhD,kBAE7C,MAAmC,KAA5B+C,EAAO/C,kBAA2B,EAAI,EAE/C,QAA4Bp6B,IAAxBm9B,EAAOpD,mBAAsD/5B,IAAxBo9B,EAAOrD,aAA4B,CAE1E,IAAI7V,EAAS0U,GAAeuE,EAAOpD,aAAcqD,EAAOrD,cACxD,OAAe,IAAX7V,EAOKyV,GAAcwD,EAAO/C,iBAAkBgD,EAAOhD,kBAEhDlW,CACT,CAAO,YAA4BlkB,IAAxBm9B,EAAOpD,mBAAsD/5B,IAAxBo9B,EAAOrD,kBAEtB/5B,IAAxBm9B,EAAOpD,cAA8B,EAAI,EACvCL,GAAsBzoB,KAAKksB,EAAO/C,iBAAmBgD,EAAOhD,kBAE9DrB,GAAeoE,EAAO/C,iBAAkBgD,EAAOhD,kBAG/CT,GAAcwD,EAAO/C,iBAAkBgD,EAAOhD,iBAEzD,CACF,CAEA,OAAI6C,EAAU3+B,GAAQ4+B,EAAU5+B,EACvB2+B,GAAW3+B,GAAQ,EAAI,EAEzB,CACT,CAmCW++B,CAAcR,EAAO3C,OAAQ4C,EAAO5C,QAjCvB,SAA2B2C,EAAQC,GACzD,OAAKD,EAAO3C,QAA0B4C,EAAO5C,OAAxB4C,EAAO5C,QAClB2C,EAAO3C,QAAc,EAAL,GAEtB2C,EAAO7C,OAAS8C,EAAO9C,MAAQ8C,EAAO9C,OACjC6C,EAAO7C,OAAS,EAAI,GAEzB6C,EAAOlC,UAAYmC,EAAOnC,SAAWmC,EAAOnC,UACvCkC,EAAOlC,UAAY,EAAI,GAE5BkC,EAAOzB,UAAY0B,EAAO1B,SAAW0B,EAAO1B,UACvCyB,EAAOzB,UAAY,EAAI,GAE5ByB,EAAOnxB,SAAWoxB,EAAOpxB,QAAUoxB,EAAOpxB,SACrCmxB,EAAOnxB,SAAW,EAAI,GAE3BmxB,EAAOrC,YAAcsC,EAAOtC,WAAasC,EAAOtC,YAC3CqC,EAAOrC,YAAc,EAAI,GAE9BqC,EAAOnC,QAAUoC,EAAOpC,OAASoC,EAAOpC,QACnCmC,EAAOnC,QAAU,EAAI,EAEvB,CACT,CAYS4C,CAAkBT,EAAQC,IAmL7B,GAAIF,EACF,OAAOA,GAAqB,SAAV1d,GAAoB,EAAI,EAE9C,CACF,CAjMkB,IAAuB2d,EAAQC,EAkMjD,OAAOP,EAASE,CAClB,CA+CWc,CAAgBlB,EAASC,EAASX,EAC3C,IACOQ,EAAiBlnC,KAAI,SAAUmnC,GACpC,OA7BoB,SAA2BX,EAAYtd,GAC7D,OAAOsd,EAAWtd,EACpB,CA2BWqf,CAAkB/B,EAAYW,EAAQje,MAC/C,GACF,CAwCSsf,CAAYhC,EAAYG,EAAsBG,EACvD,0EC7YO,MAAM2B,GAAgB,WACzB,MAAM5Q,EAAQkL,GAAY,QAAS,CAC/BrJ,MAAOA,KAAA,CACH7K,MAAO,CAAC,EACR6Z,MAAO,CAAC,IAEZpN,QAAS,CAILqN,QAAUjP,GAAWxvB,GAAOwvB,EAAM7K,MAAM3kB,GAKxC0+B,SAAWlP,GAAWmP,GAAQA,EACzB7oC,KAAIkK,GAAMwvB,EAAM7K,MAAM3kB,KACtBxD,OAAO9E,SAIZknC,QAAUpP,GAAWhO,GAAYgO,EAAMgP,MAAMhd,IAEjDzL,QAAS,CACL8oB,YAAYhb,GAER,MAAMc,EAAQd,EAAMpO,QAAO,CAACqpB,EAAK/a,IACxBA,EAAKrL,QAIVomB,EAAI/a,EAAKrL,QAAUqL,EACZ+a,IAJH5kB,GAAOrD,MAAM,6CAA8CkN,GACpD+a,IAIZ,CAAC,GACJphB,EAAAA,QAAAA,IAAQxkB,KAAM,QAAS,IAAKA,KAAKyrB,SAAUA,GAC/C,EACAoa,YAAYlb,GACRA,EAAM1Y,SAAQ4Y,IACNA,EAAKrL,QACLgF,EAAAA,QAAIwG,OAAOhrB,KAAKyrB,MAAOZ,EAAKrL,OAChC,GAER,EACAsmB,QAAOzf,GAAoB,IAAnB,QAAEiC,EAAO,KAAED,GAAMhC,EACrB7B,EAAAA,QAAAA,IAAQxkB,KAAKslC,MAAOhd,EAASD,EACjC,EACA0d,cAAclb,GACV7qB,KAAK6lC,YAAY,CAAChb,GACtB,KAGFmb,EAAYvR,KAAMvzB,WASxB,OAPK8kC,EAAUC,gBAEX1qB,EAAAA,EAAAA,IAAU,qBAAsByqB,EAAUD,eAG1CC,EAAUC,cAAe,GAEtBD,CACX,EC/DaE,GAAgB,WACzB,MAyBMC,EAzBQxG,GAAY,QAAS,CAC/BrJ,MAAOA,KAAA,CACH8P,MAAO,CAAC,IAEZlO,QAAS,CACLmO,QAAU/P,GACC,CAAChO,EAAS5rB,KACb,GAAK45B,EAAM8P,MAAM9d,GAGjB,OAAOgO,EAAM8P,MAAM9d,GAAS5rB,EAAK,GAI7CmgB,QAAS,CACLypB,QAAQ/O,GAECv3B,KAAKomC,MAAM7O,EAAQjP,UACpB9D,EAAAA,QAAAA,IAAQxkB,KAAKomC,MAAO7O,EAAQjP,QAAS,CAAC,GAG1C9D,EAAAA,QAAAA,IAAQxkB,KAAKomC,MAAM7O,EAAQjP,SAAUiP,EAAQ76B,KAAM66B,EAAQ/X,OAC/D,IAGWiV,IAAMvzB,WASzB,OAPKilC,EAAWF,eAKZE,EAAWF,cAAe,GAEvBE,CACX,ECdaI,GAAoB5G,GAAY,YAAa,CACtDrJ,MAAOA,KAAA,CACHkQ,SAAU,GACVC,cAAe,GACfC,kBAAmB,OAEvB7pB,QAAS,CAILF,MAAoB,IAAhBgqB,EAASzlC,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,GAAG,GACZsjB,EAAAA,QAAAA,IAAQxkB,KAAM,WAAY2mC,EAC9B,EAIAC,eAAuC,IAA1BF,EAAiBxlC,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,GAAG,KAE7BsjB,EAAAA,QAAAA,IAAQxkB,KAAM,gBAAiB0mC,EAAoB1mC,KAAKwmC,SAAW,IACnEhiB,EAAAA,QAAAA,IAAQxkB,KAAM,oBAAqB0mC,EACvC,EAIAG,QACIriB,EAAAA,QAAAA,IAAQxkB,KAAM,WAAY,IAC1BwkB,EAAAA,QAAAA,IAAQxkB,KAAM,gBAAiB,IAC/BwkB,EAAAA,QAAAA,IAAQxkB,KAAM,oBAAqB,KACvC,KC9CF8mC,IAAaniB,EAAAA,EAAAA,GAAU,QAAS,SAAU,CAC5CoiB,aAAa,EACbC,qBAAqB,EACrBC,sBAAsB,IAEbC,GAAqB,WAC9B,MAsBMC,EAtBQxH,GAAY,aAAc,CACpCrJ,MAAOA,KAAA,CACHwQ,gBAEJjqB,QAAS,CAILuqB,SAAS93B,EAAKhB,GACVkW,EAAAA,QAAAA,IAAQxkB,KAAK8mC,WAAYx3B,EAAKhB,EAClC,EAIAtB,aAAasC,EAAKhB,SACRwT,EAAAA,EAAMulB,KAAIlnB,EAAAA,EAAAA,aAAY,6BAA+B7Q,GAAM,CAC7DhB,WAEJ2c,EAAAA,EAAAA,IAAK,uBAAwB,CAAE3b,MAAKhB,SACxC,IAGgBmmB,IAAMvzB,WAQ9B,OANKimC,EAAgBlB,gBACjB1qB,EAAAA,EAAAA,IAAU,wBAAwB,SAAA8K,GAA0B,IAAhB,IAAE/W,EAAG,MAAEhB,GAAO+X,EACtD8gB,EAAgBC,SAAS93B,EAAKhB,EAClC,IACA64B,EAAgBlB,cAAe,GAE5BkB,CACX,EChBMG,IAAa3iB,EAAAA,EAAAA,GAAU,QAAS,cAAe,CAAC,GACzC4iB,GAAqB,WAC9B,MAAM9S,EAAQkL,GAAY,aAAc,CACpCrJ,MAAOA,KAAA,CACHgR,gBAEJpP,QAAS,CACLsP,UAAYlR,GAAW1L,GAAS0L,EAAMgR,WAAW1c,IAAS,CAAC,GAE/D/N,QAAS,CAILuqB,SAASxc,EAAMtb,EAAKhB,GACXtO,KAAKsnC,WAAW1c,IACjBpG,EAAAA,QAAAA,IAAQxkB,KAAKsnC,WAAY1c,EAAM,CAAC,GAEpCpG,EAAAA,QAAAA,IAAQxkB,KAAKsnC,WAAW1c,GAAOtb,EAAKhB,EACxC,EAIAtB,aAAa4d,EAAMtb,EAAKhB,GACpBwT,EAAAA,EAAMulB,KAAIlnB,EAAAA,EAAAA,aAAY,4BAADhgB,OAA6ByqB,EAAI,KAAAzqB,OAAImP,IAAQ,CAC9DhB,WAEJ2c,EAAAA,EAAAA,IAAK,2BAA4B,CAAEL,OAAMtb,MAAKhB,SAClD,EAMAm5B,eAA+C,IAAlCn4B,EAAGpO,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,GAAG,WAAY0pB,EAAI1pB,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,GAAG,QAElClB,KAAK+U,OAAO6V,EAAM,eAAgBtb,GAClCtP,KAAK+U,OAAO6V,EAAM,oBAAqB,MAC3C,EAIA8c,yBAAuC,IAAhB9c,EAAI1pB,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,GAAG,QAC1B,MACMymC,EAA4C,SADnC3nC,KAAKwnC,UAAU5c,IAAS,CAAEgd,kBAAmB,QAChCA,kBAA8B,OAAS,MAEnE5nC,KAAK+U,OAAO6V,EAAM,oBAAqB+c,EAC3C,KAGFE,EAAkBpT,KAAMvzB,WAQ9B,OANK2mC,EAAgB5B,gBACjB1qB,EAAAA,EAAAA,IAAU,4BAA4B,SAAA8K,GAAgC,IAAtB,KAAEuE,EAAI,IAAEtb,EAAG,MAAEhB,GAAO+X,EAChEwhB,EAAgBT,SAASxc,EAAMtb,EAAKhB,EACxC,IACAu5B,EAAgB5B,cAAe,GAE5B4B,CACX,ECrFwG,GCoBxG,CACE7pC,KAAM,WACN6B,MAAO,CAAC,SACRxB,MAAO,CACLqH,MAAO,CACLnH,KAAMK,QAERkpC,UAAW,CACTvpC,KAAMK,OACNvB,QAAS,gBAEX4I,KAAM,CACJ1H,KAAMqB,OACNvC,QAAS,MCff,IAXgB,OACd,ICRW,WAAkB,IAAIwjB,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,OAAO0S,EAAItQ,GAAG,CAAC5K,YAAY,iCAAiCC,MAAM,CAAC,eAAeib,EAAInb,MAAM,aAAamb,EAAInb,MAAM,KAAO,OAAOI,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOtD,EAAI7f,MAAM,QAASmjB,EAAO,IAAI,OAAOtD,EAAItY,QAAO,GAAO,CAAC4F,EAAG,MAAM,CAACxI,YAAY,4BAA4BC,MAAM,CAAC,KAAOib,EAAIinB,UAAU,MAAQjnB,EAAI5a,KAAK,OAAS4a,EAAI5a,KAAK,QAAU,cAAc,CAACkI,EAAG,OAAO,CAACvI,MAAM,CAAC,EAAI,gDAAgD,CAAEib,EAAS,MAAE1S,EAAG,QAAQ,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAInb,UAAUmb,EAAIlS,UAC5iB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,0DEQhC,MC1BwL,GD0BxL6V,EAAAA,QAAAM,OAAA,CACA9mB,KAAA,cAEAC,WAAA,CACA8pC,KAAA,GACAC,cAAA,KACA/sB,aAAAA,MAGA5c,MAAA,CACA3B,KAAA,CACA6B,KAAAK,OACAvB,QAAA,MAIA2/B,MAAAA,KAGA,CACAiL,WAHA5C,KAIAc,WAHAD,OAOA7lC,SAAA,CACA6nC,cACA,YAAAC,YAAA9/B,MACA,EAEA+/B,OACAxC,MAIA,cAFA,KAAAlpC,KAAAC,MAAA,KAAA2G,OAAA9E,SAAA5B,KAFAgpC,EAEA,IAFAt3B,GAAAs3B,GAAA,GAAAzlC,OAAAmO,EAAA,OAIA1R,KAAAF,GAAAA,EAAA0W,QAAA,mBACA,EAEAi1B,WACA,YAAAD,KAAAxrC,KAAAonB,IACA,MAAAjc,EAAA,SAAAugC,OAAAhiB,MAAA,CAAAtC,QACA,OACAA,MACAhc,OAAA,EACAhK,KAAA,KAAAuqC,kBAAAvkB,GACAjc,KACA,GAEA,GAGAvH,QAAA,CACAgoC,cAAA1hC,GACA,YAAAmhC,WAAA1C,QAAAz+B,EACA,EACA2hC,kBAAA/rC,GAAA,IAAAgsC,EACA,YAAAvC,WAAAE,QAAA,QAAAqC,EAAA,KAAAR,mBAAA,IAAAQ,OAAA,EAAAA,EAAA5hC,GAAApK,EACA,EACA6rC,kBAAA7rC,GAAA,IAAAisC,EACA,SAAAjsC,EACA,OAAAM,EAAA,gBAGA,MAAA4rC,EAAA,KAAAH,kBAAA/rC,GACAmuB,EAAA,KAAA2d,cAAAI,GACA,OAAA/d,SAAA,QAAA8d,EAAA9d,EAAAxV,kBAAA,IAAAszB,OAAA,EAAAA,EAAAvjB,eAAA9F,EAAAA,EAAAA,UAAA5iB,EACA,EAEAyd,QAAApS,GAAA,IAAA8gC,GACA9gC,SAAA,QAAA8gC,EAAA9gC,EAAAue,aAAA,IAAAuiB,OAAA,EAAAA,EAAA7kB,OAAA,KAAAskB,OAAAhiB,MAAAtC,KACA,KAAAhjB,MAAA,SAEA,EAEA/B,UAAAqhB,GAAA,IAAAwoB,EAAAC,EACA,OAAAzoB,SAAA,QAAAwoB,EAAAxoB,EAAAvY,UAAA,IAAA+gC,GAAA,QAAAC,EAAAD,EAAAxiB,aAAA,IAAAyiB,OAAA,EAAAA,EAAA/kB,OAAA,KAAAskB,OAAAhiB,MAAAtC,IACAhnB,EAAA,oCAEAA,EAAA,sCAAAsjB,EACA,qBE9FI,GAAU,CAAC,EAEf,GAAQrZ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,ICTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAgC,OAAtB0S,EAAI3S,MAAM86B,YAAmB76B,EAAG,gBAAgB,CAACvI,MAAM,CAAC,oCAAoC,KAAKib,EAAIuD,GAAIvD,EAAIwnB,UAAU,SAAS/nB,EAAQwF,GAAO,OAAO3X,EAAG,eAAe0S,EAAItQ,GAAG,CAACjB,IAAIgR,EAAQ0D,IAAIpe,MAAM,CAAC,aAAaib,EAAI5hB,UAAUqhB,GAAS,MAAQO,EAAI5hB,UAAUqhB,IAAU7F,SAAS,CAAC,MAAQ,SAAS0J,GAAQ,OAAOtD,EAAI1G,QAAQmG,EAAQvY,GAAG,GAAGnD,YAAYic,EAAIxR,GAAG,CAAY,IAAVyW,EAAa,CAACxW,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACpB,EAAG,OAAO,CAACvI,MAAM,CAAC,KAAO,MAAM,EAAE4J,OAAM,GAAM,MAAM,MAAK,IAAO,eAAe8Q,GAAQ,GAAO,IAAG,EACtjB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEOhC,IAAI2oB,QAAO,EAEX,SAASC,KACHA,GAAWC,OACfD,GAAWC,MAAO,EAClBF,IAAyC,IA/B3C,WACC,IAAIG,EAAKzlC,OAAOuoB,UAAUC,UAEtBkd,EAAOD,EAAGrqC,QAAQ,SACtB,GAAIsqC,EAAO,EAEV,OAAOC,SAASF,EAAG5d,UAAU6d,EAAO,EAAGD,EAAGrqC,QAAQ,IAAKsqC,IAAQ,IAIhE,GADcD,EAAGrqC,QAAQ,YACX,EAAG,CAEhB,IAAIwqC,EAAKH,EAAGrqC,QAAQ,OACpB,OAAOuqC,SAASF,EAAG5d,UAAU+d,EAAK,EAAGH,EAAGrqC,QAAQ,IAAKwqC,IAAM,GAC5D,CAEA,IAAIC,EAAOJ,EAAGrqC,QAAQ,SACtB,OAAIyqC,EAAO,EAEHF,SAASF,EAAG5d,UAAUge,EAAO,EAAGJ,EAAGrqC,QAAQ,IAAKyqC,IAAQ,KAIxD,CACT,CAOSC,GAET,CAEA,IAAI,GAAiB,CAAErmC,OAAQ,WAC7B,IAAmBsmC,EAAT1pC,KAAkB2pC,eAA2C,OAA7D3pC,KAA8CkO,MAAMC,IAAMu7B,GAAa,MAAO,CAAE/jC,YAAa,kBAAmBC,MAAO,CAAE,SAAY,OAChJ,EAAGiQ,gBAAiB,GAAIG,SAAU,kBAClChY,KAAM,kBAENwC,QAAS,CACRopC,iBAAkB,WACb5pC,KAAK6pC,KAAO7pC,KAAKyB,IAAIqa,aAAe9b,KAAK0pC,KAAO1pC,KAAKyB,IAAIqoC,eAC5D9pC,KAAK6pC,GAAK7pC,KAAKyB,IAAIqa,YACnB9b,KAAK0pC,GAAK1pC,KAAKyB,IAAIqoC,aACnB9pC,KAAKgB,MAAM,UAEb,EACA+oC,kBAAmB,WAClB/pC,KAAKgqC,cAAc/0B,gBAAgBg1B,YAAYt+B,iBAAiB,SAAU3L,KAAK4pC,kBAC/E5pC,KAAK4pC,kBACN,EACAM,qBAAsB,WACjBlqC,KAAKgqC,eAAiBhqC,KAAKgqC,cAAcpY,UACvCqX,IAAQjpC,KAAKgqC,cAAc/0B,iBAC/BjV,KAAKgqC,cAAc/0B,gBAAgBg1B,YAAYn+B,oBAAoB,SAAU9L,KAAK4pC,yBAE5E5pC,KAAKgqC,cAAcpY,OAE5B,GAGD3lB,QAAS,WACR,IAAIk+B,EAAQnqC,KAEZkpC,KACAlpC,KAAK4B,WAAU,WACduoC,EAAMN,GAAKM,EAAM1oC,IAAIqa,YACrBquB,EAAMT,GAAKS,EAAM1oC,IAAIqoC,YACtB,IACA,IAAIM,EAAS9qC,SAAS8V,cAAc,UACpCpV,KAAKgqC,cAAgBI,EACrBA,EAAO72B,aAAa,cAAe,QACnC62B,EAAO72B,aAAa,YAAa,GACjC62B,EAAOxY,OAAS5xB,KAAK+pC,kBACrBK,EAAO7rC,KAAO,YACV0qC,IACHjpC,KAAKyB,IAAI8K,YAAY69B,GAEtBA,EAAOtqC,KAAO,cACTmpC,IACJjpC,KAAKyB,IAAI8K,YAAY69B,EAEvB,EACAv+B,cAAe,WACd7L,KAAKkqC,sBACN,GAUG,GAAS,CAEZx2B,QAAS,QACT22B,QATD,SAAiB7lB,GAChBA,EAAI8lB,UAAU,kBAAmB,IACjC9lB,EAAI8lB,UAAU,iBAAkB,GACjC,GAUIC,GAAY,KACM,oBAAX5mC,OACV4mC,GAAY5mC,OAAO6gB,SACS,IAAX,EAAArgB,IACjBomC,GAAY,EAAApmC,EAAOqgB,KAEhB+lB,IACHA,GAAUC,IAAI,oBC9Gf,SAASC,GAAQtL,GAWf,OATEsL,GADoB,mBAAXvzB,QAAoD,iBAApBA,OAAOwzB,SACtC,SAAUvL,GAClB,cAAcA,CAChB,EAEU,SAAUA,GAClB,OAAOA,GAAyB,mBAAXjoB,QAAyBioB,EAAIzW,cAAgBxR,QAAUioB,IAAQjoB,OAAOF,UAAY,gBAAkBmoB,CAC3H,EAGKsL,GAAQtL,EACjB,CAQA,SAASwL,GAAkB3oC,EAAQ3D,GACjC,IAAK,IAAIb,EAAI,EAAGA,EAAIa,EAAM8C,OAAQ3D,IAAK,CACrC,IAAI6yB,EAAahyB,EAAMb,GACvB6yB,EAAWvZ,WAAauZ,EAAWvZ,aAAc,EACjDuZ,EAAWkP,cAAe,EACtB,UAAWlP,IAAYA,EAAWiP,UAAW,GACjD7/B,OAAOoX,eAAe7U,EAAQquB,EAAW/gB,IAAK+gB,EAChD,CACF,CAQA,SAASua,GAAmBC,GAC1B,OAGF,SAA4BA,GAC1B,GAAIrgC,MAAM6I,QAAQw3B,GAAM,CACtB,IAAK,IAAIrtC,EAAI,EAAGstC,EAAO,IAAItgC,MAAMqgC,EAAI1pC,QAAS3D,EAAIqtC,EAAI1pC,OAAQ3D,IAAKstC,EAAKttC,GAAKqtC,EAAIrtC,GAEjF,OAAOstC,CACT,CACF,CATSC,CAAmBF,IAW5B,SAA0BG,GACxB,GAAI9zB,OAAOwzB,YAAYjrC,OAAOurC,IAAkD,uBAAzCvrC,OAAOuX,UAAUtQ,SAASpB,KAAK0lC,GAAgC,OAAOxgC,MAAM8tB,KAAK0S,EAC1H,CAboCC,CAAiBJ,IAerD,WACE,MAAM,IAAIK,UAAU,kDACtB,CAjB6DC,EAC7D,CAuEA,SAASC,GAAUC,EAAMC,GACvB,GAAID,IAASC,EAAM,OAAO,EAE1B,GAAsB,WAAlBb,GAAQY,GAAoB,CAC9B,IAAK,IAAI/7B,KAAO+7B,EACd,IAAKD,GAAUC,EAAK/7B,GAAMg8B,EAAKh8B,IAC7B,OAAO,EAIX,OAAO,CACT,CAEA,OAAO,CACT,CAEA,IAAIi8B,GAEJ,WACE,SAASA,EAAgBC,EAAI/6B,EAASg7B,IAlHxC,SAAyBC,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAIT,UAAU,oCAExB,CA+GIU,CAAgB5rC,KAAMurC,GAEtBvrC,KAAKwrC,GAAKA,EACVxrC,KAAK6rC,SAAW,KAChB7rC,KAAK8rC,QAAS,EACd9rC,KAAK+rC,eAAet7B,EAASg7B,EAC/B,CAzGF,IAAsBE,EAAaK,EAiMjC,OAjMoBL,EA2GPJ,EA3GoBS,EA2GH,CAAC,CAC7B18B,IAAK,iBACLhB,MAAO,SAAwBmC,EAASg7B,GACtC,IAAItB,EAAQnqC,KAMZ,GAJIA,KAAK6rC,UACP7rC,KAAKisC,mBAGHjsC,KAAK8rC,OAAT,CA1FN,IAAwBx9B,EAwGlB,GAbAtO,KAAKyQ,QAxFY,mBAHCnC,EA2FYmC,GAtFtB,CACRmrB,SAAUttB,GAIFA,EAmFRtO,KAAK47B,SAAW,SAAU/P,EAAQqgB,GAChC/B,EAAM15B,QAAQmrB,SAAS/P,EAAQqgB,GAE3BrgB,GAAUse,EAAM15B,QAAQ07B,OAC1BhC,EAAM2B,QAAS,EAEf3B,EAAM8B,kBAEV,EAGIjsC,KAAK47B,UAAY57B,KAAKyQ,QAAQ27B,SAAU,CAC1C,IACIC,GADOrsC,KAAKyQ,QAAQ67B,iBAAmB,CAAC,GACxBC,QAEpBvsC,KAAK47B,SA7Fb,SAAkBA,EAAU11B,GAC1B,IACIsmC,EACAC,EACAC,EAHAj8B,EAAUvP,UAAUC,OAAS,QAAsBwG,IAAjBzG,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAK/EyrC,EAAY,SAAmBrW,GACjC,IAAK,IAAIsW,EAAO1rC,UAAUC,OAAQ0uB,EAAO,IAAIrlB,MAAMoiC,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGhd,EAAKgd,EAAO,GAAK3rC,UAAU2rC,GAI7B,GADAH,EAAc7c,GACV2c,GAAWlW,IAAUmW,EAAzB,CACA,IAAIF,EAAU97B,EAAQ87B,QAEC,mBAAZA,IACTA,EAAUA,EAAQjW,EAAOmW,IAGrBD,GAAWlW,IAAUmW,IAAcF,GACvC3Q,EAASjsB,WAAM,EAAQ,CAAC2mB,GAAOn2B,OAAOyqC,GAAmB8B,KAG3DD,EAAYnW,EACZvtB,aAAayjC,GACbA,EAAU3jC,YAAW,WACnB+yB,EAASjsB,WAAM,EAAQ,CAAC2mB,GAAOn2B,OAAOyqC,GAAmB8B,KACzDF,EAAU,CACZ,GAAGtmC,EAhBuC,CAiB5C,EAOA,OALAymC,EAAUG,OAAS,WACjB/jC,aAAayjC,GACbA,EAAU,IACZ,EAEOG,CACT,CAwDwBP,CAASpsC,KAAK47B,SAAU57B,KAAKyQ,QAAQ27B,SAAU,CAC7DG,QAAS,SAAiBjW,GACxB,MAAoB,SAAb+V,GAAoC,YAAbA,GAA0B/V,GAAsB,WAAb+V,IAA0B/V,CAC7F,GAEJ,CAEAt2B,KAAK+sC,eAAYplC,EACjB3H,KAAK6rC,SAAW,IAAImB,sBAAqB,SAAUC,GACjD,IAAIf,EAAQe,EAAQ,GAEpB,GAAIA,EAAQ9rC,OAAS,EAAG,CACtB,IAAI+rC,EAAoBD,EAAQxrB,MAAK,SAAU1kB,GAC7C,OAAOA,EAAEowC,cACX,IAEID,IACFhB,EAAQgB,EAEZ,CAEA,GAAI/C,EAAMvO,SAAU,CAElB,IAAI/P,EAASqgB,EAAMiB,gBAAkBjB,EAAMkB,mBAAqBjD,EAAMkD,UACtE,GAAIxhB,IAAWse,EAAM4C,UAAW,OAChC5C,EAAM4C,UAAYlhB,EAElBse,EAAMvO,SAAS/P,EAAQqgB,EACzB,CACF,GAAGlsC,KAAKyQ,QAAQ68B,cAEhB7B,EAAM8B,QAAQ3rC,WAAU,WAClBuoC,EAAM0B,UACR1B,EAAM0B,SAAS2B,QAAQrD,EAAMqB,GAEjC,GArDuB,CAsDzB,GACC,CACDl8B,IAAK,kBACLhB,MAAO,WACDtO,KAAK6rC,WACP7rC,KAAK6rC,SAAS4B,aACdztC,KAAK6rC,SAAW,MAId7rC,KAAK47B,UAAY57B,KAAK47B,SAASkR,SACjC9sC,KAAK47B,SAASkR,SAEd9sC,KAAK47B,SAAW,KAEpB,GACC,CACDtsB,IAAK,YACLyH,IAAK,WACH,OAAO/W,KAAKyQ,QAAQ68B,cAAgBttC,KAAKyQ,QAAQ68B,aAAaD,WAAa,CAC7E,IA7LErB,GAAYrB,GAAkBgB,EAAY30B,UAAWg1B,GAgMlDT,CACT,CAjGA,GAmGA,SAASnkC,GAAKokC,EAAIkC,EAAOjC,GACvB,IAAIn9B,EAAQo/B,EAAMp/B,MAClB,GAAKA,EAEL,GAAoC,oBAAzB0+B,qBACT,GAAQjpC,KAAK,0LACR,CACL,IAAIuyB,EAAQ,IAAIiV,GAAgBC,EAAIl9B,EAAOm9B,GAC3CD,EAAGmC,qBAAuBrX,CAC5B,CACF,CAsBA,SAASsX,GAAOpC,GACd,IAAIlV,EAAQkV,EAAGmC,qBAEXrX,IACFA,EAAM2V,yBACCT,EAAGmC,qBAEd,CAEA,IAAIE,GAAoB,CACtBzmC,KAAMA,GACN2N,OA/BF,SAAgBy2B,EAAIsC,EAAOrC,GACzB,IAAIn9B,EAAQw/B,EAAMx/B,MAElB,IAAI88B,GAAU98B,EADCw/B,EAAMhZ,UACrB,CACA,IAAIwB,EAAQkV,EAAGmC,qBAEVr/B,EAKDgoB,EACFA,EAAMyV,eAAez9B,EAAOm9B,GAE5BrkC,GAAKokC,EAAI,CACPl9B,MAAOA,GACNm9B,GATHmC,GAAOpC,EAJ6B,CAexC,EAcEoC,OAAQA,IAYN,GAAS,CAEXl6B,QAAS,QACT22B,QAZF,SAAiB7lB,GACfA,EAAIupB,UAAU,qBAAsBF,GAEtC,GAYI,GAAY,KAEM,oBAAXlqC,OACT,GAAYA,OAAO6gB,SACQ,IAAX,EAAArgB,IAChB,GAAY,EAAAA,EAAOqgB,KAGjB,IACF,GAAUgmB,IAAI,2CCpSZwD,GAAS,CACXC,WAAY,KAGd,MAAM5vC,GAAQ,CACZ2T,MAAO,CACLzT,KAAMiM,MACN6M,UAAU,GAEZ62B,SAAU,CACR3vC,KAAMK,OACNvB,QAAS,MAEX8wC,UAAW,CACT5vC,KAAMK,OACNvB,QAAS,WACTyB,UAAWwP,GAAS,CAAC,WAAY,cAAcxN,SAASwN,IAE1D8/B,QAAS,CACP7vC,KAAMK,OACNvB,QAAS,OAEXgxC,QAAS,CACP9vC,KAAMK,OACNvB,QAAS,QAGb,SAASixC,KACP,OAAOtuC,KAAKgS,MAAM7Q,QAAmC,iBAAlBnB,KAAKgS,MAAM,EAChD,CAEA,IAAIu8B,IAAkB,EACtB,GAAsB,oBAAX5qC,OAAwB,CACjC4qC,IAAkB,EAClB,IACE,IAAI/c,GAAO/xB,OAAOoX,eAAe,CAAC,EAAG,UAAW,CAC9CE,MACEw3B,IAAkB,CACpB,IAEF5qC,OAAOgI,iBAAiB,OAAQ,KAAM6lB,GACxC,CAAE,MAAOz0B,GAAI,CACf,CAGA,IAAI0qB,GAAM,EAkkBV,SAAS+mB,GAAmB9sB,EAAUlT,EAAOigC,EAAQC,EAASC,EAAsBC,EAAoCC,EAAYC,EAAgBC,EAAmBC,GAC3I,kBAAfH,IACTE,EAAoBD,EACpBA,EAAiBD,EACjBA,GAAa,GAGf,MAAMp+B,EAA4B,mBAAXg+B,EAAwBA,EAAOh+B,QAAUg+B,EAehE,IAAIpgB,EAiCJ,GA9CI3M,GAAYA,EAASte,SACvBqN,EAAQrN,OAASse,EAASte,OAC1BqN,EAAQoF,gBAAkB6L,EAAS7L,gBACnCpF,EAAQqF,WAAY,EAEhB64B,IACFl+B,EAAQsF,YAAa,IAIrB24B,IACFj+B,EAAQuF,SAAW04B,GAGjBE,GAEFvgB,EAAO,SAAUkf,IAEfA,EAAUA,GAEVvtC,KAAKiW,QAAUjW,KAAKiW,OAAOC,YAE3BlW,KAAKmW,QAAUnW,KAAKmW,OAAOF,QAAUjW,KAAKmW,OAAOF,OAAOC,aAET,oBAAxBE,sBACrBm3B,EAAUn3B,qBAGR5H,GACFA,EAAMlJ,KAAKtF,KAAM+uC,EAAkBxB,IAGjCA,GAAWA,EAAQl3B,uBACrBk3B,EAAQl3B,sBAAsBtT,IAAI6rC,EAEtC,EAGAn+B,EAAQ6F,aAAe+X,GACd7f,IACT6f,EAAOwgB,EAAa,SAAUtB,GAC5B/+B,EAAMlJ,KAAKtF,KAAMgvC,EAAqBzB,EAASvtC,KAAKuW,MAAMC,SAASC,YACrE,EAAI,SAAU82B,GACZ/+B,EAAMlJ,KAAKtF,KAAM8uC,EAAevB,GAClC,GAEElf,EACF,GAAI5d,EAAQsF,WAAY,CAEtB,MAAMk5B,EAAiBx+B,EAAQrN,OAC/BqN,EAAQrN,OAAS,SAAkCc,EAAGqpC,GAEpD,OADAlf,EAAK/oB,KAAKioC,GACH0B,EAAe/qC,EAAGqpC,EAC3B,CACF,KAAO,CAEL,MAAM2B,EAAWz+B,EAAQkG,aACzBlG,EAAQkG,aAAeu4B,EAAW,GAAG/uC,OAAO+uC,EAAU7gB,GAAQ,CAACA,EACjE,CAEF,OAAOogB,CACT,CAGA,MAAMU,GA1oBS,CACbnxC,KAAM,kBACNC,WAAY,CACVmxC,eAAgB,IAElB3lC,WAAY,CACVokC,kBAAiB,IAEnBxvC,MAAO,IACFA,GACHgxC,SAAU,CACR9wC,KAAMqB,OACNvC,QAAS,MAEXiyC,UAAW,CACT/wC,KAAMqB,OACNvC,aAASsK,GAEX4nC,kBAAmB,CACjBhxC,KAAMqB,OACNvC,aAASsK,GAEX6nC,YAAa,CACXjxC,KAAM,CAACqB,OAAQhB,QACfvB,QAAS,MAEXoyC,UAAW,CACTlxC,KAAMK,OACNvB,QAAS,QAEXqyC,UAAW,CACTnxC,KAAMK,OACNvB,QAAS,QAEXsyC,OAAQ,CACNpxC,KAAMqB,OACNvC,QAAS,KAEXuyC,SAAU,CACRrxC,KAAMC,QACNnB,SAAS,GAEXwyC,UAAW,CACTtxC,KAAMqB,OACNvC,QAAS,GAEXyyC,WAAY,CACVvxC,KAAMC,QACNnB,SAAS,GAEX0yC,UAAW,CACTxxC,KAAMC,QACNnB,SAAS,GAEX+wC,QAAS,CACP7vC,KAAMK,OACNvB,QAAS,OAEXgxC,QAAS,CACP9vC,KAAMK,OACNvB,QAAS,OAEX2yC,UAAW,CACTzxC,KAAM,CAACK,OAAQa,OAAQ+K,OACvBnN,QAAS,IAEX4yC,UAAW,CACT1xC,KAAM,CAACK,OAAQa,OAAQ+K,OACvBnN,QAAS,KAGbyC,KAAI,KACK,CACLowC,KAAM,GACNC,UAAW,EACXC,OAAO,EACPC,SAAU,OAGdhwC,SAAU,CACRiwC,QACE,GAAsB,OAAlBtwC,KAAKqvC,SAAmB,CAC1B,MAAMiB,EAAQ,CACZ,KAAM,CACJC,YAAa,IAGXv+B,EAAQhS,KAAKgS,MACbw+B,EAAQxwC,KAAKyvC,UACbD,EAAcxvC,KAAKwvC,YACzB,IAEIiB,EAFAC,EAAkB,IAClBH,EAAc,EAElB,IAAK,IAAI/yC,EAAI,EAAGI,EAAIoU,EAAM7Q,OAAQ3D,EAAII,EAAGJ,IACvCizC,EAAUz+B,EAAMxU,GAAGgzC,IAAUhB,EACzBiB,EAAUC,IACZA,EAAkBD,GAEpBF,GAAeE,EACfH,EAAM9yC,GAAK,CACT+yC,cACAtqC,KAAMwqC,GAKV,OADAzwC,KAAK2wC,sBAAwBD,EACtBJ,CACT,CACA,MAAO,EACT,EACAhC,gBAEF/tC,MAAO,CACLyR,QACEhS,KAAK4wC,oBAAmB,EAC1B,EACAhB,WACE5vC,KAAK6wC,gBACL7wC,KAAK4wC,oBAAmB,EAC1B,EACAN,MAAO,CACL3nB,UACE3oB,KAAK4wC,oBAAmB,EAC1B,EACA5V,MAAM,GAERsU,YACEtvC,KAAK4wC,oBAAmB,EAC1B,EACArB,oBACEvvC,KAAK4wC,oBAAmB,EAC1B,GAEFj+B,UACE3S,KAAK8wC,aAAe,EACpB9wC,KAAK+wC,WAAa,EAClB/wC,KAAKgxC,QAAU,IAAI1U,IACnBt8B,KAAKixC,cAAgB,IAAI3U,IACzBt8B,KAAKkxC,eAAgB,EACrBlxC,KAAKmxC,2BAA6B,EAI9BnxC,KAAK6vC,YACP7vC,KAAKoxC,aAAc,EACnBpxC,KAAK4wC,oBAAmB,IAEtB5wC,KAAKsvC,YAActvC,KAAKqvC,UAC1B,GAAQ1xB,MAAM,2EAElB,EACA1R,UACEjM,KAAK6wC,gBACL7wC,KAAK4B,WAAU,KAEb5B,KAAKoxC,aAAc,EACnBpxC,KAAK4wC,oBAAmB,GACxB5wC,KAAKowC,OAAQ,CAAI,GAErB,EACAiB,YACE,MAAMC,EAAetxC,KAAKmxC,2BACE,iBAAjBG,GACTtxC,KAAK4B,WAAU,KACb5B,KAAKuxC,iBAAiBD,EAAa,GAGzC,EACAzlC,gBACE7L,KAAKwxC,iBACP,EACAhxC,QAAS,CACPixC,QAAQvB,EAAMpqB,EAAO4I,EAAMpf,EAAK/Q,GAC9B,MAAMqsB,EAAO,CACX8D,OACAgjB,SAAU,GAENC,EAAc,CAClB7qC,GAAI2gB,KACJ3B,QACA8rB,MAAM,EACNtiC,MACA/Q,QAOF,OALAkB,OAAOoX,eAAe+T,EAAM,KAAM,CAChC2U,cAAc,EACdjxB,MAAOqjC,IAETzB,EAAK58B,KAAKsX,GACHA,CACT,EACAinB,UAAUjnB,EAAMknB,GAAO,GACrB,MAAMC,EAAc/xC,KAAKixC,cACnB1yC,EAAOqsB,EAAKonB,GAAGzzC,KACrB,IAAI0zC,EAAaF,EAAYh7B,IAAIxY,GAC5B0zC,IACHA,EAAa,GACbF,EAAYp1B,IAAIpe,EAAM0zC,IAExBA,EAAW3+B,KAAKsX,GACXknB,IACHlnB,EAAKonB,GAAGJ,MAAO,EACfhnB,EAAK8mB,UAAY,KACjB1xC,KAAKgxC,QAAQhmB,OAAOJ,EAAKonB,GAAG1iC,KAEhC,EACAnJ,eACEnG,KAAKgB,MAAM,UACPhB,KAAKowC,OAAOpwC,KAAK4wC,oBAAmB,EAC1C,EACA74B,aAAaY,GACN3Y,KAAKkxC,gBACRlxC,KAAKkxC,eAAgB,EACrBgB,uBAAsB,KACpBlyC,KAAKkxC,eAAgB,EACrB,MAAM,WACJiB,GACEnyC,KAAK4wC,oBAAmB,GAAO,GAI9BuB,IACHppC,aAAa/I,KAAKoyC,iBAClBpyC,KAAKoyC,gBAAkBvpC,WAAW7I,KAAK+X,aAAc,KACvD,IAGN,EACAs6B,uBAAuBC,EAAWpG,GAC5BlsC,KAAKowC,QACHkC,GAAgD,IAAnCpG,EAAMqG,mBAAmBxjC,OAAmD,IAApCm9B,EAAMqG,mBAAmBzjC,QAChF9O,KAAKgB,MAAM,WACXkxC,uBAAsB,KACpBlyC,KAAK4wC,oBAAmB,EAAM,KAGhC5wC,KAAKgB,MAAM,UAGjB,EACA4vC,mBAAmB4B,EAAWC,GAAoB,GAChD,MAAMpD,EAAWrvC,KAAKqvC,SAChBC,EAAYtvC,KAAKsvC,WAAa,EAC9BC,EAAoBvvC,KAAKuvC,mBAAqBF,EAC9CG,EAAcxvC,KAAK2wC,sBACnBjB,EAAY1vC,KAAK0vC,UACjBxB,EAAWluC,KAAKsuC,YAAc,KAAOtuC,KAAKkuC,SAC1Cl8B,EAAQhS,KAAKgS,MACb0gC,EAAQ1gC,EAAM7Q,OACdmvC,EAAQtwC,KAAKswC,MACbqC,EAAQ3yC,KAAKgxC,QACbe,EAAc/xC,KAAKixC,cACnBf,EAAOlwC,KAAKkwC,KAClB,IAAI0C,EAAYC,EACZ1C,EACA2C,EAAmBC,EAmGnBnoB,EAlGJ,GAAK8nB,EAEE,GAAI1yC,KAAKoxC,YACdwB,EAAaE,EAAoB,EACjCD,EAAWE,EAAkB7/B,KAAK6T,IAAI/mB,KAAK6vC,UAAW79B,EAAM7Q,QAC5DgvC,EAAY,SACP,CACL,MAAM6C,EAAShzC,KAAKizC,YAGpB,GAAIR,EAAmB,CACrB,IAAIS,EAAeF,EAAOrqC,MAAQ3I,KAAKmxC,2BAEvC,GADI+B,EAAe,IAAGA,GAAgBA,GACrB,OAAb7D,GAAqB6D,EAAe1D,GAAe0D,EAAe7D,EACpE,MAAO,CACL8C,YAAY,EAGlB,CACAnyC,KAAKmxC,2BAA6B6B,EAAOrqC,MACzC,MAAMgnC,EAAS3vC,KAAK2vC,OACpBqD,EAAOrqC,OAASgnC,EAChBqD,EAAOG,KAAOxD,EAGd,IAAIyD,EAAa,EAOjB,GANIpzC,KAAKoB,MAAMsZ,SACb04B,EAAapzC,KAAKoB,MAAMsZ,OAAO24B,aAC/BL,EAAOrqC,OAASyqC,GAIdpzC,KAAKoB,MAAMk5B,MAAO,CACpB,MAAMgZ,EAAYtzC,KAAKoB,MAAMk5B,MAAM+Y,aACnCL,EAAOG,KAAOG,CAChB,CAGA,GAAiB,OAAbjE,EAAmB,CACrB,IAAInrC,EAIAqvC,EAHAp2C,EAAI,EACJkH,EAAIquC,EAAQ,EACZl1C,KAAOk1C,EAAQ,GAInB,GACEa,EAAO/1C,EACP0G,EAAIosC,EAAM9yC,GAAG+yC,YACTrsC,EAAI8uC,EAAOrqC,MACbxL,EAAIK,EACKA,EAAIk1C,EAAQ,GAAKpC,EAAM9yC,EAAI,GAAG+yC,YAAcyC,EAAOrqC,QAC5DtE,EAAI7G,GAENA,MAAQL,EAAIkH,GAAK,SACV7G,IAAM+1C,GAQf,IAPA/1C,EAAI,IAAMA,EAAI,GACdo1C,EAAap1C,EAGb2yC,EAAYG,EAAMoC,EAAQ,GAAGnC,YAGxBsC,EAAWr1C,EAAGq1C,EAAWH,GAASpC,EAAMuC,GAAUtC,YAAcyC,EAAOG,IAAKN,KAUjF,KATkB,IAAdA,EACFA,EAAW7gC,EAAM7Q,OAAS,GAE1B0xC,IAEAA,EAAWH,IAAUG,EAAWH,IAI7BI,EAAoBF,EAAYE,EAAoBJ,GAASU,EAAa9C,EAAMwC,GAAmBvC,YAAcyC,EAAOrqC,MAAOmqC,KAGpI,IAAKC,EAAkBD,EAAmBC,EAAkBL,GAASU,EAAa9C,EAAMyC,GAAiBxC,YAAcyC,EAAOG,IAAKJ,KACrI,MAEEH,KAAgBI,EAAOrqC,MAAQ0mC,EAAWC,GAE1CsD,GADiBA,EAAatD,EAE9BuD,EAAW3/B,KAAKsgC,KAAKR,EAAOG,IAAM9D,EAAWC,GAC7CwD,EAAoB5/B,KAAKugC,IAAI,EAAGvgC,KAAK+I,OAAO+2B,EAAOrqC,MAAQyqC,GAAc/D,EAAWC,IACpFyD,EAAkB7/B,KAAK+I,OAAO+2B,EAAOG,IAAMC,GAAc/D,EAAWC,GAGpEsD,EAAa,IAAMA,EAAa,GAChCC,EAAWH,IAAUG,EAAWH,GAChCI,EAAoB,IAAMA,EAAoB,GAC9CC,EAAkBL,IAAUK,EAAkBL,GAC9CvC,EAAYj9B,KAAKsgC,KAAKd,EAAQpD,GAAaD,CAE/C,MA5FEuD,EAAaC,EAAWC,EAAoBC,EAAkB5C,EAAY,EA6FxE0C,EAAWD,EAAa5E,GAAOC,YACjCjuC,KAAK0zC,kBAEP1zC,KAAKmwC,UAAYA,EAEjB,MAAMgC,EAAaS,GAAc5yC,KAAK+wC,YAAc8B,GAAY7yC,KAAK8wC,aACrE,GAAI9wC,KAAK2zC,eAAiBxB,EAAY,CACpC,GAAIA,EAAY,CACdQ,EAAM3pC,QACN+oC,EAAY/oC,QACZ,IAAK,IAAIxL,EAAI,EAAGI,EAAIsyC,EAAK/uC,OAAQ3D,EAAII,EAAGJ,IACtCotB,EAAOslB,EAAK1yC,GACZwC,KAAK6xC,UAAUjnB,EAEnB,CACA5qB,KAAK2zC,aAAexB,CACtB,MAAO,GAAIA,EACT,IAAK,IAAI30C,EAAI,EAAGI,EAAIsyC,EAAK/uC,OAAQ3D,EAAII,EAAGJ,IACtCotB,EAAOslB,EAAK1yC,GACRotB,EAAKonB,GAAGJ,OAENY,IACF5nB,EAAKonB,GAAGlsB,MAAQ9T,EAAMjT,QAAQ6rB,EAAK8D,SAId,IAAnB9D,EAAKonB,GAAGlsB,OAAgB8E,EAAKonB,GAAGlsB,MAAQ8sB,GAAchoB,EAAKonB,GAAGlsB,OAAS+sB,IACzE7yC,KAAK6xC,UAAUjnB,IAKvB,MAAMgpB,EAAczB,EAAa,KAAO,IAAI7V,IAC5C,IAAI5N,EAAMnwB,EAAM0zC,EACZ7tC,EACJ,IAAK,IAAI5G,EAAIo1C,EAAYp1C,EAAIq1C,EAAUr1C,IAAK,CAC1CkxB,EAAO1c,EAAMxU,GACb,MAAM8R,EAAM4+B,EAAWxf,EAAKwf,GAAYxf,EACxC,GAAW,MAAPpf,EACF,MAAM,IAAI6F,MAAM,UAAU7F,2BAA6B4+B,OAEzDtjB,EAAO+nB,EAAM57B,IAAIzH,GACZ+/B,GAAaiB,EAAM9yC,GAAGyI,MAMtB2kB,GAsCHA,EAAKonB,GAAGJ,MAAO,EACfhnB,EAAK8D,KAAOA,IAtCRlxB,IAAMwU,EAAM7Q,OAAS,GAAGnB,KAAKgB,MAAM,cAC7B,IAANxD,GAASwC,KAAKgB,MAAM,gBACxBzC,EAAOmwB,EAAKghB,GACZuC,EAAaF,EAAYh7B,IAAIxY,GACzB4zC,EAEEF,GAAcA,EAAW9wC,QAC3BypB,EAAOqnB,EAAW3oB,MAClBsB,EAAK8D,KAAOA,EACZ9D,EAAKonB,GAAGJ,MAAO,EACfhnB,EAAKonB,GAAGlsB,MAAQtoB,EAChBotB,EAAKonB,GAAG1iC,IAAMA,EACdsb,EAAKonB,GAAGzzC,KAAOA,GAEfqsB,EAAO5qB,KAAKyxC,QAAQvB,EAAM1yC,EAAGkxB,EAAMpf,EAAK/Q,IAM1C6F,EAAIwvC,EAAY78B,IAAIxY,IAAS,IACxB0zC,GAAc7tC,GAAK6tC,EAAW9wC,UACjCypB,EAAO5qB,KAAKyxC,QAAQvB,EAAM1yC,EAAGkxB,EAAMpf,EAAK/Q,GACxCyB,KAAK6xC,UAAUjnB,GAAM,GACrBqnB,EAAaF,EAAYh7B,IAAIxY,IAE/BqsB,EAAOqnB,EAAW7tC,GAClBwmB,EAAK8D,KAAOA,EACZ9D,EAAKonB,GAAGJ,MAAO,EACfhnB,EAAKonB,GAAGlsB,MAAQtoB,EAChBotB,EAAKonB,GAAG1iC,IAAMA,EACdsb,EAAKonB,GAAGzzC,KAAOA,EACfq1C,EAAYj3B,IAAIpe,EAAM6F,EAAI,GAC1BA,KAEFuuC,EAAMh2B,IAAIrN,EAAKsb,IAOA,OAAbykB,GACFzkB,EAAK8mB,SAAWpB,EAAM9yC,EAAI,GAAG+yC,YAC7B3lB,EAAKipB,OAAS,IAEdjpB,EAAK8mB,SAAWx+B,KAAK+I,MAAMze,EAAI8xC,GAAaD,EAC5CzkB,EAAKipB,OAASr2C,EAAI8xC,EAAYC,IArD1B3kB,GAAM5qB,KAAK6xC,UAAUjnB,EAuD7B,CASA,OARA5qB,KAAK8wC,aAAe8B,EACpB5yC,KAAK+wC,WAAa8B,EACd7yC,KAAK8vC,YAAY9vC,KAAKgB,MAAM,SAAU4xC,EAAYC,EAAUC,EAAmBC,GAInFhqC,aAAa/I,KAAK8zC,aAClB9zC,KAAK8zC,YAAcjrC,WAAW7I,KAAK+zC,UAAW,KACvC,CACL5B,aAEJ,EACA6B,oBACE,IAAIhyC,EAAS,KAAahC,KAAKyB,KAK/B,OAHIkC,OAAOrE,UAAa0C,IAAW2B,OAAOrE,SAASuT,iBAAmB7Q,IAAW2B,OAAOrE,SAAS8M,OAC/FpK,EAAS2B,QAEJ3B,CACT,EACAixC,YACE,MACExxC,IAAK+pC,EAAE,UACP2C,GACEnuC,KACEi0C,EAA2B,aAAd9F,EACnB,IAAI+F,EACJ,GAAIl0C,KAAK4vC,SAAU,CACjB,MAAMuE,EAAS3I,EAAG4I,wBACZC,EAAaJ,EAAaE,EAAOrlC,OAASqlC,EAAOplC,MACvD,IAAIpG,IAAUsrC,EAAaE,EAAOG,IAAMH,EAAOI,MAC3CtuC,EAAOguC,EAAatwC,OAAO6wC,YAAc7wC,OAAO8wC,WAChD9rC,EAAQ,IACV1C,GAAQ0C,EACRA,EAAQ,GAENA,EAAQ1C,EAAOouC,IACjBpuC,EAAOouC,EAAa1rC,GAEtBurC,EAAc,CACZvrC,QACAwqC,IAAKxqC,EAAQ1C,EAEjB,MACEiuC,EADSD,EACK,CACZtrC,MAAO6iC,EAAGlzB,UACV66B,IAAK3H,EAAGlzB,UAAYkzB,EAAGkJ,cAGX,CACZ/rC,MAAO6iC,EAAGmJ,WACVxB,IAAK3H,EAAGmJ,WAAanJ,EAAG14B,aAG5B,OAAOohC,CACT,EACArD,gBACM7wC,KAAK4vC,SACP5vC,KAAK40C,eAEL50C,KAAKwxC,iBAET,EACAoD,eACE50C,KAAK60C,eAAiB70C,KAAKg0C,oBAC3Bh0C,KAAK60C,eAAelpC,iBAAiB,SAAU3L,KAAK+X,eAAcw2B,IAAkB,CAClFuG,SAAS,IAEX90C,KAAK60C,eAAelpC,iBAAiB,SAAU3L,KAAKmG,aACtD,EACAqrC,kBACOxxC,KAAK60C,iBAGV70C,KAAK60C,eAAe/oC,oBAAoB,SAAU9L,KAAK+X,cACvD/X,KAAK60C,eAAe/oC,oBAAoB,SAAU9L,KAAKmG,cACvDnG,KAAK60C,eAAiB,KACxB,EACAE,aAAajvB,GACX,IAAIktB,EAEFA,EADoB,OAAlBhzC,KAAKqvC,SACEvpB,EAAQ,EAAI9lB,KAAKswC,MAAMxqB,EAAQ,GAAGyqB,YAAc,EAEhDr9B,KAAK+I,MAAM6J,EAAQ9lB,KAAKsvC,WAAatvC,KAAKqvC,SAErDrvC,KAAKuxC,iBAAiByB,EACxB,EACAzB,iBAAiBG,GACf,MAAMvD,EAA+B,aAAnBnuC,KAAKmuC,UAA2B,CAChD6E,OAAQ,YACRrqC,MAAO,OACL,CACFqqC,OAAQ,aACRrqC,MAAO,QAET,IAAIqsC,EACAC,EACAC,EACJ,GAAIl1C,KAAK4vC,SAAU,CACjB,MAAMuF,EAAa,KAAan1C,KAAKyB,KAE/B6W,EAAmC,SAAvB68B,EAAWC,QAAqB,EAAID,EAAWhH,EAAU6E,QACrEmB,EAASgB,EAAWf,wBAEpBiB,EADWr1C,KAAKyB,IAAI2yC,wBACQjG,EAAUxlC,OAASwrC,EAAOhG,EAAUxlC,OACtEqsC,EAAWG,EACXF,EAAkB9G,EAAU6E,OAC5BkC,EAAiBxD,EAAWp5B,EAAY+8B,CAC1C,MACEL,EAAWh1C,KAAKyB,IAChBwzC,EAAkB9G,EAAU6E,OAC5BkC,EAAiBxD,EAEnBsD,EAASC,GAAmBC,CAC9B,EACAxB,kBAKE,MAJA7qC,YAAW,KACT,GAAQie,IAAI,8FAAgG,YAAa9mB,KAAKyB,KAC9H,GAAQqlB,IAAI,6LAAmM,IAE3M,IAAI3R,MAAM,+BAClB,EACA4+B,YACE/zC,KAAKkwC,KAAK5zB,MAAK,CAACg5B,EAAOC,IAAUD,EAAMtD,GAAGlsB,MAAQyvB,EAAMvD,GAAGlsB,OAC7D,IA+EJ,IAAI0vB,GAAmB,WACrB,IAAIC,EAAMC,EACN70B,EAAM7gB,KACN0pC,EAAK7oB,EAAI8oB,eACTx7B,EAAK0S,EAAI3S,MAAMC,IAAMu7B,EACzB,OAAOv7B,EACL,MACA,CACE1E,WAAY,CACV,CACEzL,KAAM,qBACNqQ,QAAS,uBACTC,MAAOuS,EAAIwxB,uBACX9jC,WAAY,2BAGhB5I,YAAa,uBACbb,OACI2wC,EAAO,CACPrF,MAAOvvB,EAAIuvB,MACX,YAAavvB,EAAI+uB,UAElB6F,EAAK,aAAe50B,EAAIstB,YAAa,EACtCsH,GACF3vC,GAAI,CACF,UAAW,SAAUqe,GACnB,OAAOtD,EAAI9I,aAAapI,MAAM,KAAMzO,UACtC,IAGJ,CACE2f,EAAIxd,OAAOqX,OACPvM,EACE,MACA,CAAEtI,IAAK,SAAUF,YAAa,8BAC9B,CAACkb,EAAIzR,GAAG,WACR,GAEFyR,EAAIlS,KACRkS,EAAIpS,GAAG,KACPN,EACE0S,EAAIutB,QACJ,CACEvoC,IAAK,UACLhF,IAAK,YACL8E,YAAa,qCACbb,MAAO+b,EAAImvB,UACXxhC,OACIknC,EAAS,CAAC,EACXA,EAAyB,aAAlB70B,EAAIstB,UAA2B,YAAc,YACnDttB,EAAIsvB,UAAY,KAClBuF,IAEJ,CACE70B,EAAIuD,GAAGvD,EAAIqvB,MAAM,SAAUtlB,GACzB,OAAOzc,EACL0S,EAAIwtB,QACJxtB,EAAIvQ,GACF,CACEhB,IAAKsb,EAAKonB,GAAGlrC,GACbjG,IAAK,YACL8E,YAAa,kCACbb,MAAO,CACL+b,EAAIovB,UACJ,CACE0F,OAAQ90B,EAAIkvB,WAAalvB,EAAIwvB,WAAazlB,EAAKonB,GAAG1iC,MAGtDd,MAAOqS,EAAIuvB,MACP,CACEwF,UACE,aACmB,aAAlB/0B,EAAIstB,UAA2B,IAAM,KACtC,IACAvjB,EAAK8mB,SACL,iBACmB,aAAlB7wB,EAAIstB,UAA2B,IAAM,KACtC,IACAvjB,EAAKipB,OACL,MACF9kC,MAAO8R,EAAIyuB,WACY,aAAlBzuB,EAAIstB,WACDttB,EAAI0uB,mBACJ1uB,EAAIwuB,UAAY,UACpB1nC,EACJmH,OAAQ+R,EAAIyuB,WACW,eAAlBzuB,EAAIstB,WACDttB,EAAI0uB,mBACJ1uB,EAAIwuB,UAAY,UACpB1nC,GAEN,MAENkZ,EAAIkvB,UACA,CAAC,EACD,CACE8F,WAAY,WACVh1B,EAAIwvB,SAAWzlB,EAAKonB,GAAG1iC,GACzB,EACAwmC,WAAY,WACVj1B,EAAIwvB,SAAW,IACjB,IAGR,CACExvB,EAAIzR,GAAG,UAAW,KAAM,CACtBsf,KAAM9D,EAAK8D,KACX5I,MAAO8E,EAAKonB,GAAGlsB,MACfzd,OAAQuiB,EAAKonB,GAAGJ,QAGpB,EAEJ,IACA/wB,EAAIpS,GAAG,KACPoS,EAAIzR,GAAG,UAET,GAEFyR,EAAIpS,GAAG,KACPoS,EAAIxd,OAAOi3B,MACPnsB,EACE,MACA,CAAEtI,IAAK,QAASF,YAAa,8BAC7B,CAACkb,EAAIzR,GAAG,UACR,GAEFyR,EAAIlS,KACRkS,EAAIpS,GAAG,KACPN,EAAG,iBAAkB,CAAErI,GAAI,CAAEiwC,OAAQl1B,EAAI1a,iBAE3C,EAEJ,EAEAqvC,GAAiBQ,eAAgB,EAG/B,MAeMC,GAAmCzH,GACvC,CAAEprC,OAAQoyC,GAAkB3/B,gBApBA,SAIElO,EAkB9BwnC,QAhByBxnC,GAIc,OAFLA,GAkBlC,OACAA,OACAA,OACAA,GAIJ,IAAIuuC,GAAW,CACbl4C,KAAM,kBACNC,WAAY,CACVk4C,gBAAiBF,IAEnBG,UAoBE,MAnB8B,oBAAnBhH,iBACTpvC,KAAKq2C,iBAAmB,IAAIjH,gBAAenC,IACzCiF,uBAAsB,KACpB,GAAK1nC,MAAM6I,QAAQ45B,GAGnB,IAAK,MAAMf,KAASe,EAClB,GAAIf,EAAMlqC,OAAQ,CAChB,MAAM2W,EAAQ,IAAI29B,YAAY,SAAU,CACtCC,OAAQ,CACNC,YAAatK,EAAMsK,eAGvBtK,EAAMlqC,OAAOiwB,cAActZ,EAC7B,CACF,GACA,KAGC,CACL89B,YAAaz2C,KAAKy2C,YAClBC,cAAe12C,KACf22C,sBAAuB32C,KAAKq2C,iBAEhC,EACAvmC,cAAc,EACdzR,MAAO,IACFA,GACHmxC,YAAa,CACXjxC,KAAM,CAACqB,OAAQhB,QACfyY,UAAU,IAGdvX,OACE,MAAO,CACL22C,YAAa,CACXpuC,QAAQ,EACRioC,MAAO,CAAC,EACRsG,WAAY,CAAC,EACb1I,SAAUluC,KAAKkuC,SACfI,aAAa,GAGnB,EACAjuC,SAAU,CACRiuC,eACAuI,gBACE,MAAMhrB,EAAS,IACT,MACJ7Z,EAAK,SACLk8B,EAAQ,YACRI,GACEtuC,KACEswC,EAAQtwC,KAAKy2C,YAAYnG,MACzB1yC,EAAIoU,EAAM7Q,OAChB,IAAK,IAAI3D,EAAI,EAAGA,EAAII,EAAGJ,IAAK,CAC1B,MAAMkxB,EAAO1c,EAAMxU,GACbsJ,EAAKwnC,EAAc9wC,EAAIkxB,EAAKwf,GAClC,IAAIjoC,EAAOqqC,EAAMxpC,QACG,IAATb,GAAyBjG,KAAK82C,eAAehwC,KACtDb,EAAO,GAET4lB,EAAOvY,KAAK,CACVob,OACA5nB,KACAb,QAEJ,CACA,OAAO4lB,CACT,EACA7mB,YACE,MAAMA,EAAY,CAAC,EACnB,IAAK,MAAMsK,KAAOtP,KAAKwI,WACT,WAAR8G,GAA4B,YAARA,IACtBtK,EAAUsK,GAAOtP,KAAKwI,WAAW8G,IAGrC,OAAOtK,CACT,GAEFzE,MAAO,CACLyR,QACEhS,KAAK+2C,aAAY,EACnB,EACAzI,YAAa,CACX3lB,QAAQra,GACNtO,KAAKy2C,YAAYnI,YAAchgC,CACjC,EACA0oC,WAAW,GAEb7I,UAAU7/B,GACRtO,KAAK+2C,aAAY,EACnB,EACAF,cAAclqC,EAAMsqC,GAClB,MAAM3+B,EAAYtY,KAAKyB,IAAI6W,UAK3B,IAAI4+B,EAAgB,EAChBC,EAAY,EAChB,MAAMh2C,EAAS+R,KAAK6T,IAAIpa,EAAKxL,OAAQ81C,EAAK91C,QAC1C,IAAK,IAAI3D,EAAI,EAAGA,EAAI2D,KACd+1C,GAAiB5+B,GADK9a,IAI1B05C,GAAiBD,EAAKz5C,GAAGyI,MAAQjG,KAAKwvC,YACtC2H,GAAaxqC,EAAKnP,GAAGyI,MAAQjG,KAAKwvC,YAEpC,MAAMqE,EAASsD,EAAYD,EACZ,IAAXrD,IAGJ7zC,KAAKyB,IAAI6W,WAAau7B,EACxB,GAEFl9B,eACE3W,KAAKo3C,UAAY,GACjBp3C,KAAKq3C,iBAAmB,EACxBr3C,KAAK82C,eAAiB,CAAC,CACzB,EACAzF,YACErxC,KAAKy2C,YAAYpuC,QAAS,CAC5B,EACAivC,cACEt3C,KAAKy2C,YAAYpuC,QAAS,CAC5B,EACA7H,QAAS,CACP+2C,mBACmBv3C,KAAKoB,MAAMsW,UAE1B1X,KAAK+2C,cAEP/2C,KAAKgB,MAAM,SACb,EACAw2C,oBACEx3C,KAAKgB,MAAM,iBAAkB,CAC3BmyB,OAAO,IAETnzB,KAAKgB,MAAM,UACb,EACA+1C,YAAY/tC,GAAQ,IACdA,GAAShJ,KAAKsuC,eAChBtuC,KAAKy2C,YAAYG,WAAa,CAAC,GAEjC52C,KAAKgB,MAAM,iBAAkB,CAC3BmyB,OAAO,GAEX,EACA4hB,aAAajvB,GACX,MAAMpO,EAAW1X,KAAKoB,MAAMsW,SACxBA,GAAUA,EAASq9B,aAAajvB,EACtC,EACA2xB,YAAY/oB,EAAM5I,OAAQne,GACxB,MAAMb,EAAK9G,KAAKsuC,YAAuB,MAATxoB,EAAgBA,EAAQ9lB,KAAKgS,MAAMjT,QAAQ2vB,GAAQA,EAAK1uB,KAAKkuC,UAC3F,OAAOluC,KAAKy2C,YAAYnG,MAAMxpC,IAAO,CACvC,EACA4wC,iBACE,GAAI13C,KAAK23C,oBAAqB,OAC9B33C,KAAK23C,qBAAsB,EAC3B,MAAMnM,EAAKxrC,KAAKyB,IAEhBzB,KAAK4B,WAAU,KACb4pC,EAAGlzB,UAAYkzB,EAAG6H,aAAe,IAEjC,MAAMuE,EAAK,KACTpM,EAAGlzB,UAAYkzB,EAAG6H,aAAe,IACjCnB,uBAAsB,KACpB1G,EAAGlzB,UAAYkzB,EAAG6H,aAAe,IACH,IAA1BrzC,KAAKq3C,iBACPr3C,KAAK23C,qBAAsB,EAE3BzF,sBAAsB0F,EACxB,GACA,EAEJ1F,sBAAsB0F,EAAG,GAE7B,IAKJ,MAAMC,GAAmB3B,GAGzB,IAAI4B,GAAiB,WACnB,IAAIj3B,EAAM7gB,KACN0pC,EAAK7oB,EAAI8oB,eACTx7B,EAAK0S,EAAI3S,MAAMC,IAAMu7B,EACzB,OAAOv7B,EACL,kBACA0S,EAAIvQ,GACFuQ,EAAItQ,GACF,CACE1K,IAAK,WACLD,MAAO,CACLoM,MAAO6O,EAAIg2B,cACX,gBAAiBh2B,EAAI2uB,YACrBrB,UAAWttB,EAAIstB,UACf,YAAa,KACb,WAAYttB,EAAIutB,QAChB,WAAYvtB,EAAIwtB,SAElBvoC,GAAI,CAAEiyC,OAAQl3B,EAAI02B,iBAAkBS,QAASn3B,EAAI22B,mBACjD5yC,YAAaic,EAAIxR,GACf,CACE,CACEC,IAAK,UACLC,GAAI,SAAU1J,GACZ,IAAIoyC,EAAepyC,EAAI6oB,KACnB5I,EAAQjgB,EAAIigB,MACZzd,EAASxC,EAAIwC,OACjB,MAAO,CACLwY,EAAIzR,GAAG,UAAW,KAAM,KAAM,CAC5Bsf,KAAMupB,EAAavpB,KACnB5I,MAAOA,EACPzd,OAAQA,EACR4vC,aAAcA,IAGpB,IAGJ,MACA,IAGJ,kBACAp3B,EAAItY,QACJ,GAEFsY,EAAI7b,WAEN,CACE6b,EAAIpS,GAAG,KACPN,EAAG,WAAY,CAAEnI,KAAM,UAAY,CAAC6a,EAAIzR,GAAG,WAAY,GACvDyR,EAAIpS,GAAG,KACPN,EAAG,WAAY,CAAEnI,KAAM,SAAW,CAAC6a,EAAIzR,GAAG,UAAW,GACrDyR,EAAIpS,GAAG,KACPN,EAAG,WAAY,CAAEnI,KAAM,SAAW,CAAC6a,EAAIzR,GAAG,UAAW,IAEvD,EAEJ,EAEA0oC,GAAe9B,eAAgB,EAG7B,MAeMkC,GAAmC1J,GACvC,CAAEprC,OAAQ00C,GAAgBjiC,gBApBA,SAIIlO,EAkB9BkwC,QAhByBlwC,GAIc,OAFLA,GAkBlC,OACAA,OACAA,OACAA,GAqNIwwC,GAAiC3J,GACrC,CAAC,OAhB2B7mC,EAnMnB,CACX3J,KAAM,sBACNkiC,OAAQ,CAAC,cAAe,gBAAiB,yBACzC7hC,MAAO,CAELqwB,KAAM,CACJrX,UAAU,GAEZ+gC,UAAW,CACT75C,KAAMC,QACNnB,SAAS,GAKXgL,OAAQ,CACN9J,KAAMC,QACN6Y,UAAU,GAEZyO,MAAO,CACLvnB,KAAMqB,OACNvC,aAASsK,GAEX0wC,iBAAkB,CAChB95C,KAAM,CAACiM,MAAO/K,QACdpC,QAAS,MAEXi7C,WAAY,CACV/5C,KAAMC,QACNnB,SAAS,GAEXwD,IAAK,CACHtC,KAAMK,OACNvB,QAAS,QAGbgD,SAAU,CACRyG,KACE,GAAI9G,KAAKy2C,YAAYnI,YAAa,OAAOtuC,KAAK8lB,MAE9C,GAAI9lB,KAAK0uB,KAAKzX,eAAejX,KAAKy2C,YAAYvI,UAAW,OAAOluC,KAAK0uB,KAAK1uB,KAAKy2C,YAAYvI,UAC3F,MAAM,IAAI/4B,MAAM,aAAanV,KAAKy2C,YAAYvI,0FAChD,EACAjoC,OACE,OAAOjG,KAAKy2C,YAAYG,WAAW52C,KAAK8G,KAAO9G,KAAKy2C,YAAYnG,MAAMtwC,KAAK8G,KAAO,CACpF,EACAyxC,cACE,OAAOv4C,KAAKqI,QAAUrI,KAAKy2C,YAAYpuC,MACzC,GAEF9H,MAAO,CACL63C,UAAW,kBACXtxC,KACO9G,KAAKiG,MACRjG,KAAKw4C,cAET,EACAD,YAAYjqC,GACLtO,KAAKiG,OACJqI,EACGtO,KAAK02C,cAAcI,eAAe92C,KAAK8G,MAC1C9G,KAAK02C,cAAcW,mBACnBr3C,KAAK02C,cAAcI,eAAe92C,KAAK8G,KAAM,GAG3C9G,KAAK02C,cAAcI,eAAe92C,KAAK8G,MACzC9G,KAAK02C,cAAcW,mBACnBr3C,KAAK02C,cAAcI,eAAe92C,KAAK8G,KAAM,IAI/C9G,KAAK22C,sBACHroC,EACFtO,KAAKy4C,cAELz4C,KAAK04C,gBAEEpqC,GAAStO,KAAK24C,yBAA2B34C,KAAK8G,IACvD9G,KAAK44C,YAET,GAEFjmC,UACE,IAAI3S,KAAK64C,YACT74C,KAAK84C,yBAA2B,KAChC94C,KAAK+4C,mBACA/4C,KAAK22C,uBAAuB,CAC/B,IAAK,MAAMlyC,KAAKzE,KAAKq4C,iBACnBr4C,KAAKg5C,QAAO,IAAMh5C,KAAKq4C,iBAAiB5zC,IAAIzE,KAAKw4C,cAEnDx4C,KAAK02C,cAAc3jC,IAAI,iBAAkB/S,KAAKi5C,iBAC9Cj5C,KAAK02C,cAAc3jC,IAAI,sBAAuB/S,KAAKk5C,oBACrD,CACF,EACAjtC,UACMjM,KAAKy2C,YAAYpuC,SACnBrI,KAAK44C,aACL54C,KAAKy4C,cAET,EACA5sC,gBACE7L,KAAK02C,cAAczjC,KAAK,iBAAkBjT,KAAKi5C,iBAC/Cj5C,KAAK02C,cAAczjC,KAAK,sBAAuBjT,KAAKk5C,qBACpDl5C,KAAK04C,eACP,EACAl4C,QAAS,CACPo4C,aACM54C,KAAKu4C,YACHv4C,KAAKm5C,sBAAwBn5C,KAAK8G,KACpC9G,KAAKm5C,oBAAsBn5C,KAAK8G,GAChC9G,KAAK84C,yBAA2B,KAChC94C,KAAK24C,uBAAyB,KAC9B34C,KAAKo5C,YAAYp5C,KAAK8G,KAGxB9G,KAAK84C,yBAA2B94C,KAAK8G,EAEzC,EACAiyC,kBACM/4C,KAAKo4C,YAAcp4C,KAAK22C,sBAC1B32C,KAAKq5C,YAAcr5C,KAAKg5C,OAAO,QAAQ,KACrCh5C,KAAKw4C,cAAc,GAClB,CACDxd,MAAM,IAECh7B,KAAKq5C,cACdr5C,KAAKq5C,cACLr5C,KAAKq5C,YAAc,KAEvB,EACAJ,iBAAgB,MACd9lB,KAGKnzB,KAAKu4C,aAAeplB,IACvBnzB,KAAK24C,uBAAyB34C,KAAK8G,IAEjC9G,KAAK84C,2BAA6B94C,KAAK8G,KAAMqsB,GAAUnzB,KAAKiG,MAC9DjG,KAAK44C,YAET,EACAJ,eACEx4C,KAAK44C,YACP,EACAQ,YAAYtyC,GACV9G,KAAK4B,WAAU,KACb,GAAI5B,KAAK8G,KAAOA,EAAI,CAClB,MAAMiI,EAAQ/O,KAAKyB,IAAIqa,YACjBhN,EAAS9O,KAAKyB,IAAIqoC,aACxB9pC,KAAKs5C,UAAUvqC,EAAOD,EACxB,CACA9O,KAAKm5C,oBAAsB,IAAI,GAEnC,EACAG,UAAUvqC,EAAOD,GACf,MAAM7I,KAA2C,aAAjCjG,KAAK02C,cAAcvI,UAA2Br/B,EAASC,GACnE9I,GAAQjG,KAAKiG,OAASA,IACpBjG,KAAK02C,cAAcI,eAAe92C,KAAK8G,MACzC9G,KAAK02C,cAAcW,mBACnBr3C,KAAK02C,cAAcI,eAAe92C,KAAK8G,SAAMa,GAE/C3H,KAAKu5C,KAAKv5C,KAAKy2C,YAAYnG,MAAOtwC,KAAK8G,GAAIb,GAC3CjG,KAAKu5C,KAAKv5C,KAAKy2C,YAAYG,WAAY52C,KAAK8G,IAAI,GAC5C9G,KAAKs4C,YAAYt4C,KAAKgB,MAAM,SAAUhB,KAAK8G,IAEnD,EACA2xC,cACOz4C,KAAK22C,uBAA0B32C,KAAKyB,IAAI8T,aAC7CvV,KAAK22C,sBAAsBnJ,QAAQxtC,KAAKyB,IAAI8T,YAC5CvV,KAAKyB,IAAI8T,WAAW5J,iBAAiB,SAAU3L,KAAKw5C,UACtD,EACAd,gBACO14C,KAAK22C,wBACV32C,KAAK22C,sBAAsB8C,UAAUz5C,KAAKyB,IAAI8T,YAC9CvV,KAAKyB,IAAI8T,WAAWzJ,oBAAoB,SAAU9L,KAAKw5C,UACzD,EACAA,SAAS7gC,GACP,MAAM,MACJ5J,EAAK,OACLD,GACE6J,EAAM49B,OAAOC,YACjBx2C,KAAKs5C,UAAUvqC,EAAOD,EACxB,GAEF1L,OAAOc,GACL,OAAOA,EAAElE,KAAKa,IAAKb,KAAKqD,OAAOhG,QACjC,QAWyBsK,OAIcA,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAqFE,GAAS,CAEb+L,QAAS,QACT22B,QAAQ7lB,EAAK/T,GACX,MAAMipC,EAAej6C,OAAO+T,OAAO,CAAC,EAAG,CACrCmmC,mBAAmB,EACnBC,iBAAkB,IACjBnpC,GACH,IAAK,MAAMnB,KAAOoqC,OACiB,IAAtBA,EAAapqC,KACtB0+B,GAAO1+B,GAAOoqC,EAAapqC,IAG3BoqC,EAAaC,mBArBrB,SAA4Bn1B,EAAKq1B,GAC/Br1B,EAAI8lB,UAAU,GAAGuP,oBAA0B5D,IAC3CzxB,EAAI8lB,UAAU,GAAGuP,mBAAyB5D,IAC1CzxB,EAAI8lB,UAAU,GAAGuP,oBAA0B3B,IAC3C1zB,EAAI8lB,UAAU,GAAGuP,mBAAyB3B,IAC1C1zB,EAAI8lB,UAAU,GAAGuP,yBAA+B1B,IAChD3zB,EAAI8lB,UAAU,GAAGuP,uBAA6B1B,GAChD,CAeM2B,CAAmBt1B,EAAKk1B,EAAaE,iBAEzC,GAIF,IAAI,GAAY,KACM,oBAAXj2C,OACT,GAAYA,OAAO6gB,SACQ,IAAX,EAAArgB,IAChB,GAAY,EAAAA,EAAOqgB,KAEjB,IACF,GAAUgmB,IAAI,IC78ChB,ICwDIuP,eAxDAC,GAAe9iC,SAEf+iC,GAAc/iC,SAEdgjC,GAAsBhjC,SAEtBijC,GAAqBjjC,SAErBkjC,GAAS,SAAgBvvB,GACzB,MAAO,SAAUA,CACrB,EAEIwvB,GAAuB,CACvBtjC,IAAK,WACD,OAAO/W,KAAKi6C,KAAgBj6C,KAAKs6C,aACrC,EACA/a,cAAc,GAGdgb,GAAkB,SAAyB1vB,EAAM2vB,GAC7CP,MAAepvB,IAGnBA,EAAKovB,IAAeO,EACpB/6C,OAAOoX,eAAegU,EAAM,aAAcwvB,IAC9C,EAEII,GAAwB,CACxB1jC,IAAK,WACD,IAAI2jC,EAAa16C,KAAKuV,WAAWmlC,WAC7B50B,EAAQ40B,EAAW37C,QAAQiB,MAC/B,OAAI8lB,GAAS,GACF40B,EAAW50B,EAAQ,IAEvB,IACX,GAGA60B,GAAmB,SAA0B9vB,GACzCqvB,MAAuBrvB,IAG3BA,EAAKqvB,KAAuB,EAC5Bz6C,OAAOoX,eAAegU,EAAM,cAAe4vB,IAC/C,EAcIG,GAA6B,SAAoC/vB,GACjE,IAAKkvB,GAAe,CAChB,IAAIc,EAAwBp7C,OAAOyjC,yBAAyB4X,KAAK9jC,UAAW,cAC5E+iC,GAAgBc,EAAsB9jC,GAC1C,CACA,IAAIgkC,EAAiBhB,GAAcpqC,MAAMkb,GACrC6vB,EAAalwC,MAAM8tB,KAAKyiB,GAAgBn+C,KAAI,SAAUo+C,GACtD,OAnBa,SAAwBnwB,EAAMowB,GAC/C,KAAOpwB,EAAKtV,aAAe0lC,GAAY,CACnC,IAAkB1lC,EAANsV,EAAyBtV,WACjCA,IACAsV,EAAOtV,EAEf,CACA,OAAOsV,CACX,CAWeqwB,CAAeF,EAAWnwB,EACpC,IACD,OAAO6vB,EAAWp3C,QAAO,SAAU03C,EAAWl1B,GAC1C,OAAOk1B,IAAcN,EAAW50B,EAAQ,EAC3C,GACL,EAEIq1B,GAAuB,CACvBpkC,IAAK,WACD,OAAO/W,KAAKo7C,MAAQR,GAA2B56C,KACnD,GAGAq7C,GAAuB,CACvBtkC,IAAK,WACD,OAAO/W,KAAK06C,WAAW,IAAM,IACjC,GAGJ,SAASY,KACL,OAAOt7C,KAAK06C,WAAWv5C,OAAS,CACpC,CAEA,IAAIo6C,GAAkB,SAAyB1wB,GACvCsvB,MAAsBtvB,IAG1BA,EAAKsvB,KAAsB,EAC3B16C,OAAO+7C,iBAAiB3wB,EAAM,CAC1B6vB,WAAYS,GACZxlC,WAAY0lC,KAEhBxwB,EAAKywB,cAAgBA,GACzB,EAEA,SAAS5gC,KACL,IAAI+gC,GACHA,EAAcz7C,KAAKo7C,KAAK,IAAI1gC,OAAO/K,MAAM8rC,EAAav6C,UAC3D,CAEA,SAAS4B,KACL,IAAIs4C,EAAOp7C,KAAKo7C,KACFA,EAAKtmC,OAAO,EAAGsmC,EAAKj6C,QAC1B8Q,SAAQ,SAAU4Y,GACtBA,EAAK/nB,QACR,GACL,CAEA,IAAI44C,GAAuB,SAASA,EAAqBv2C,GACrD,IAAIw2C,EACJ,OAAQA,EAAmBnxC,MAAMwM,WAAW7W,OAAOwP,MAAMgsC,EAAkBx2C,EAASvI,KAAI,SAAUo+C,GAC9F,OAAOZ,GAAOY,GAAaU,EAAqBV,EAAUI,MAAQJ,CACrE,IACL,EASA,SAASxlC,GAAYqV,GACjB,GAAIuvB,GAAOp6C,MAAO,CACd,IAAI47C,EAAqB57C,KAAKo7C,KAAKr8C,QAAQ8rB,GAC3C,GAAI+wB,GAAsB,EAAG,CACzB,IAAiEC,EAAzC77C,KAAKo7C,KAAKtmC,OAAO8mC,EAAoB,GAAoC,GACxE,IAArB57C,KAAKo7C,KAAKj6C,QAZL,SAAwB0pB,EAAMixB,GAC/C,IAAIv+B,EAAcsN,EAAKmvB,IACvB8B,EAAiBphC,OAAO6C,GACxBg9B,GAAgBh9B,EAAasN,GAC7BA,EAAKuwB,KAAKliB,QAAQ3b,EACtB,CAQgBw+B,CAAe/7C,KAAM67C,GAEzBhxB,EAAK/nB,QACT,CACJ,MACmB83C,GAA2B56C,MAClBjB,QAAQ8rB,IAChB,GACZA,EAAK/nB,SAGb,OAAO+nB,CACX,CAEA,SAASxe,GAAa2vC,EAAYF,GAC9B,IAAI3R,EAAQnqC,KACRi8C,EAAcD,EAAWZ,MAAQ,CAAEY,GACvC,GAAI5B,GAAOp6C,MAAO,CACd,GAAIg8C,EAAW/B,MAAiBj6C,MAAQg8C,EAAW1B,cAC/C,OAAO0B,EAEX,IAAIE,EAAQl8C,KAAKo7C,KACjB,GAAIU,EAAkB,CAClB,IAAIh2B,EAAQo2B,EAAMn9C,QAAQ+8C,GACtBh2B,GAAS,IACTo2B,EAAMpnC,OAAOnF,MAAMusC,EAAO,CAAEp2B,EAAO,GAAI3lB,OAAO87C,IAC9CH,EAAiBphC,OAAO/K,MAAMmsC,EAAkBG,GAExD,KAAO,CACH,IAAIE,EAAYD,EAAMA,EAAM/6C,OAAS,GACrC+6C,EAAM5oC,KAAK3D,MAAMusC,EAAOD,GACxBE,EAAU7hB,MAAM3qB,MAAMwsC,EAAWF,EACrC,CACAG,GAAkBp8C,KACtB,MAAW87C,EACH97C,KAAK06C,WAAW55C,SAASg7C,IACzBA,EAAiBphC,OAAO/K,MAAMmsC,EAAkBG,GAGpDj8C,KAAKq8C,OAAO1sC,MAAM3P,KAAMi8C,GAE5BA,EAAYhqC,SAAQ,SAAU4Y,GAC1B0vB,GAAgB1vB,EAAMsf,EACzB,IACD,IAAImS,EAAWL,EAAYA,EAAY96C,OAAS,GAEhD,OADAw5C,GAAiB2B,GACVN,CACX,CAEA,SAASzvC,GAAYse,GACjB,GAAIA,EAAKovB,MAAiBj6C,MAAQ6qB,EAAKyvB,cACnC,OAAOzvB,EAEX,IAAIuwB,EAAOp7C,KAAKo7C,KAMhB,OALgBA,EAAKA,EAAKj6C,OAAS,GACzBm5B,MAAMzP,GAChB0vB,GAAgB1vB,EAAM7qB,MACtBo8C,GAAkBp8C,MAClBo7C,EAAK9nC,KAAKuX,GACHA,CACX,CAEA,IAAIuxB,GAAoB,SAA2BvxB,GAC/C,IAAItN,EAAcsN,EAAKmvB,IACnBnvB,EAAKuwB,KAAK,KAAO79B,IACjBsN,EAAKuwB,KAAKmB,QACVh/B,EAAYza,SAEpB,EAEI05C,GAAsB,CACtB7/B,IAAK,SAAa8/B,GACd,IAAIC,EAAS18C,KAMb,GALIA,KAAKo7C,KAAK,KAAOp7C,KAAKg6C,KACtBh6C,KAAKo7C,KAAKp0C,QAAQiL,SAAQ,SAAU0qC,GAChC,OAAOD,EAAOlnC,YAAYmnC,EAC7B,IAEDF,EAAY,CACZ,IAAIG,EAASt9C,SAAS8V,cAAc,OACpCwnC,EAAO3/B,UAAYw/B,EACnBjyC,MAAM8tB,KAAKskB,EAAOlC,YAAYzoC,SAAQ,SAAU4Y,GAC5C6xB,EAAOnwC,YAAYse,EACtB,GACL,CACJ,EACA9T,IAAK,WACD,MAAO,EACX,GAGAqkC,GAAO,CACPyB,SAAU,SAAkB9Y,GACxB,IAAIxuB,EAAawuB,EAAQxuB,WAAYunC,EAAc/Y,EAAQ+Y,YAAaC,EAAkBhZ,EAAQgZ,gBAC9FrC,EAAalwC,MAAM8tB,KAAKyL,EAAQ2W,YAChCn9B,EAAcje,SAAS09C,cAAc,IACf,IAAtBtC,EAAWv5C,QACXu5C,EAAWpnC,KAAKiK,GAEpBwmB,EAAQqX,KAAOV,EACf3W,EAAQiW,IAAgBz8B,EACxB,IAAI0/B,EAAW39C,SAAS49C,yBACxBD,EAASZ,OAAO1sC,MAAMstC,EAAUvB,GAAqBhB,IACrD3W,EAAQoZ,YAAYF,GACpBvC,EAAWzoC,SAAQ,SAAU4Y,GACzB0vB,GAAgB1vB,EAAMkZ,GACtB4W,GAAiB9vB,EACpB,IACD0wB,GAAgBxX,GAChBtkC,OAAO+T,OAAOuwB,EAAS,CACnBjhC,OAAQA,GACRyJ,YAAaA,GACbF,aAAcA,GACdmJ,YAAaA,GACbkF,OAAQA,KAEZjb,OAAOoX,eAAektB,EAAS,YAAayY,IACxCjnC,IACA9V,OAAO+T,OAAO+B,EAAY,CACtBC,YAAaA,GACbnJ,aAAcA,KAElBkuC,GAAgBxW,EAASxuB,GACzBgmC,GAAgBhmC,IAEhBunC,GACAnC,GAAiB5W,GAEjBgZ,GACApC,GAAiBoC,EAEzB,EACAnP,OAAQ,SAAgB7J,GACpBA,EAAQjhC,QACZ,GAGAm6C,GAAW,CACXj/C,KAAM,WACNyL,WAAY,CACR2xC,KAAMA,IAEVh4C,OAAQ,SAAgBc,GACpB,OAAOA,EAAE,MAAO,CACZuF,WAAY,CAAE,CACVzL,KAAM,UAEXgC,KAAKqD,OAAgB,QAC5B,GCvNJ,SAAS,GAAkBkM,GACzB,SAAI,IAAAysB,sBACF,IAAAC,gBAAe1sB,IACR,EAGX,CAiJA,SAAS,GAAQ7R,GACf,MAAoB,mBAANA,EAAmBA,KAAM,IAAAo9B,OAAMp9B,EAC/C,CCrNW,UAAIoG,KAAKC,KCAT,UAAID,KAAKC,cFJFtE,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA6KpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAkHtC,MAAM,GAA6B,oBAAX35C,OAYlB,IALWlE,OAAOuX,UAAUtQ,SAKrB,QAQP,GAAwB62C,KAC9B,SAASA,KACP,IAAI/tB,EACJ,OAAO,KAAkE,OAApDA,EAAe,MAAV7rB,YAAiB,EAASA,OAAOuoB,gBAAqB,EAASsD,EAAGrD,YAA8B,iBAAiBvT,KAAKjV,OAAOuoB,UAAUC,UACnK,CG7SA,SAAS,GAAaqxB,GACpB,IAAIhuB,EACJ,MAAMiuB,EAAQ,GAAQD,GACtB,OAAoD,OAA5ChuB,EAAc,MAATiuB,OAAgB,EAASA,EAAMh8C,KAAe+tB,EAAKiuB,CAClE,CHwqBkBh+C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAgbpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2FpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAqGV79C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA6BV79C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAiCpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2CpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAwBpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAkGpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA+BpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2CpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA6CtB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBItrDzB,UAAIx5C,KAAKC,cCwEFtE,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA8GhB,IAAW35C,OACT,IAAWA,OAAOrE,SACjB,IAAWqE,OAAOuoB,UACnB,IAAWvoB,OAAOC,SAsGxBnE,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAkgBpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAqdpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA4HpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAwCA,oBAAf/rB,WAA6BA,WAA+B,oBAAX5tB,OAAyBA,OAA2B,oBAAX2tB,OAAyBA,OAAyB,oBAATp0B,MAAuBA,KAmB/JuC,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAoKpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA+HV79C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA4IpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA+HpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2EpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA+PpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAoIV79C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAgHpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAmTpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAmTpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2DpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2RpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAoOpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2LpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAwLpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAqhBpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA4LV79C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2CpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAgepB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAkTpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAoWpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAqBpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA4IpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAuEtB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,8BFruMpC,MAAM,GAAgB,GAAW35C,YAAS,EAE1C,SAAS,MAAoBksB,GAC3B,IAAI7tB,EACA4yB,EACA5vB,EACAyL,EAOJ,GANuB,iBAAZof,EAAK,IAAmBrlB,MAAM6I,QAAQwc,EAAK,MACnD+E,EAAQ5vB,EAAWyL,GAAWof,EAC/B7tB,EAAS,KAERA,EAAQ4yB,EAAQ5vB,EAAWyL,GAAWof,GAEpC7tB,EACH,OAAO,GACJwI,MAAM6I,QAAQuhB,KACjBA,EAAS,CAACA,IACPpqB,MAAM6I,QAAQrO,KACjBA,EAAY,CAACA,IACf,MAAM04C,EAAW,GACXC,EAAU,KACdD,EAASzrC,SAAS1C,GAAOA,MACzBmuC,EAASv8C,OAAS,CAAC,EAMfy8C,GAAY,IAAAr9C,QAChB,IAAM,CAAC,GAAayB,GAAS,GAAQyO,MACrC,EAAE+6B,EAAIqS,MACJF,IACKnS,GAELkS,EAASpqC,QACJshB,EAAOkpB,SAASnlC,GACV3T,EAAUpI,KAAKmhD,GAZb,EAACvS,EAAI7yB,EAAOolC,EAAUF,KACrCrS,EAAG7/B,iBAAiBgN,EAAOolC,EAAUF,GAC9B,IAAMrS,EAAG1/B,oBAAoB6M,EAAOolC,EAAUF,IAUZh4B,CAAS2lB,EAAI7yB,EAAOolC,EAAUF,OAEpE,GAEH,CAAE7G,WAAW,EAAM5b,MAAO,SAEtBwD,EAAO,KACXgf,IACAD,GAAS,EAGX,OADA,GAAkB/e,GACXA,CACT,CAEA,IAAI,IAAiB,EACrB,SAAS,GAAe58B,EAAQ2mB,EAASlY,EAAU,CAAC,GAClD,MAAM,OAAE9M,EAAS,GAAa,OAAEq6C,EAAS,GAAE,QAAEC,GAAU,EAAI,aAAEC,GAAe,GAAUztC,EACtF,IAAK9M,EACH,OACE,KAAU,KACZ,IAAiB,EACjB6G,MAAM8tB,KAAK30B,EAAOrE,SAAS8M,KAAKjH,UAAU8M,SAASu5B,GAAOA,EAAG7/B,iBAAiB,QAAS,OAEzF,IAAIwyC,GAAe,EACnB,MAAMC,EAAgBzlC,GACbqlC,EAAO3xB,MAAMgyB,IAClB,GAAuB,iBAAZA,EACT,OAAO7zC,MAAM8tB,KAAK30B,EAAOrE,SAAS6C,iBAAiBk8C,IAAUhyB,MAAMmf,GAAOA,IAAO7yB,EAAM3W,QAAU2W,EAAM2lC,eAAex9C,SAAS0qC,KAC1H,CACL,MAAMA,EAAK,GAAa6S,GACxB,OAAO7S,IAAO7yB,EAAM3W,SAAWwpC,GAAM7yB,EAAM2lC,eAAex9C,SAAS0qC,GACrE,KAeEmS,EAAU,CACd,GAAiBh6C,EAAQ,SAbTgV,IAChB,MAAM6yB,EAAK,GAAaxpC,GACnBwpC,GAAMA,IAAO7yB,EAAM3W,SAAU2W,EAAM2lC,eAAex9C,SAAS0qC,KAE3C,IAAjB7yB,EAAM49B,SACR4H,GAAgBC,EAAazlC,IAC1BwlC,EAILx1B,EAAQhQ,GAHNwlC,GAAe,EAGH,GAG8B,CAAErJ,SAAS,EAAMmJ,YAC7D,GAAiBt6C,EAAQ,eAAgB5G,IACvC,MAAMyuC,EAAK,GAAaxpC,GACpBwpC,IACF2S,GAAgBphD,EAAEuhD,eAAex9C,SAAS0qC,KAAQ4S,EAAarhD,GAAE,GAClE,CAAE+3C,SAAS,IACdoJ,GAAgB,GAAiBv6C,EAAQ,QAASgV,IAChD9P,YAAW,KACT,IAAI2mB,EACJ,MAAMgc,EAAK,GAAaxpC,GACqD,YAAhC,OAAvCwtB,EAAK7rB,EAAOrE,SAASyC,oBAAyB,EAASytB,EAAG4lB,WAAiC,MAAN5J,OAAa,EAASA,EAAGhyB,SAAS7V,EAAOrE,SAASyC,iBAC3I4mB,EAAQhQ,EAAM,GACf,EAAE,KAEPrV,OAAO9E,SAET,MADa,IAAMm/C,EAAQ1rC,SAAS1C,GAAOA,KAE7C,CAEA,MAAMgvC,GAAkB,CACtB,SAAyB/S,EAAIgT,GAC3B,MAAMP,GAAWO,EAAQ5vC,UAAU6vC,OACnC,GAA6B,mBAAlBD,EAAQlwC,MACjBk9B,EAAGkT,sBAAwB,GAAelT,EAAIgT,EAAQlwC,MAAO,CAAE2vC,gBAC1D,CACL,MAAOt1B,EAASlY,GAAW+tC,EAAQlwC,MACnCk9B,EAAGkT,sBAAwB,GAAelT,EAAI7iB,EAASlpB,OAAO+T,OAAO,CAAEyqC,WAAWxtC,GACpF,CACF,EACA,OAA2B+6B,GACzBA,EAAGkT,uBACL,GAiDgBj/C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAgIA,oBAAf/rB,WAA6BA,WAA+B,oBAAX5tB,OAAyBA,OAA2B,oBAAX2tB,OAAyBA,OAAyB,oBAATp0B,MAAuBA,KAgB/JuC,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAqNpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA2LpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA4HV79C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAkQpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAyEpB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAsNpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAqGpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAsCpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAyCpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBAgFpB79C,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA+GV79C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA6H7B9+C,QACEA,QACCA,QACFA,QA4BQiB,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,sBAyHtB,IAAAz3C,MAAI,GAYFpG,OAAOoX,eACNpX,OAAO+7C,iBACA/7C,OAAO29C,0BACL39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA0BpB79C,OAAOoX,eACRpX,OAAO+7C,iBACA/7C,OAAO29C,0BACH39C,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,qBA0BtB79C,OAAOoX,eACGpX,OAAO49C,sBACd59C,OAAOuX,UAAUC,eACjBxX,OAAOuX,UAAUsmC,+CGnnEpC,MCpBwG,GDoBxG,CACEt/C,KAAM,WACN6B,MAAO,CAAC,SACRxB,MAAO,CACLqH,MAAO,CACLnH,KAAMK,QAERkpC,UAAW,CACTvpC,KAAMK,OACNvB,QAAS,gBAEX4I,KAAM,CACJ1H,KAAMqB,OACNvC,QAAS,MEff,IAXgB,OACd,ICRW,WAAkB,IAAIwjB,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,OAAO0S,EAAItQ,GAAG,CAAC5K,YAAY,iCAAiCC,MAAM,CAAC,eAAeib,EAAInb,MAAM,aAAamb,EAAInb,MAAM,KAAO,OAAOI,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOtD,EAAI7f,MAAM,QAASmjB,EAAO,IAAI,OAAOtD,EAAItY,QAAO,GAAO,CAAC4F,EAAG,MAAM,CAACxI,YAAY,4BAA4BC,MAAM,CAAC,KAAOib,EAAIinB,UAAU,MAAQjnB,EAAI5a,KAAK,OAAS4a,EAAI5a,KAAK,QAAU,cAAc,CAACkI,EAAG,OAAO,CAACvI,MAAM,CAAC,EAAI,0FAA0F,CAAEib,EAAS,MAAE1S,EAAG,QAAQ,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAInb,UAAUmb,EAAIlS,UACtlB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,oHEGzB,MAAMgwC,GAAW,SAAUC,GAC9B,OAAOA,EAAIjiD,MAAM,IAAI4f,QAAO,SAAUpf,EAAGkH,GAErC,OADAlH,GAAMA,GAAK,GAAKA,EAAKkH,EAAEw6C,WAAW,IACvB1hD,CACf,GAAG,EACP,ECJa2hD,GAAsBnf,GAAY,cAAe,CAC1DrJ,MAAOA,KAAA,CACHv2B,OAAQ,SCxBoP,GCMpQ,CACI/B,KAAM,sBACNK,MAAO,CACHspB,OAAQ,CACJppB,KAAMkB,OACN4X,UAAU,GAEd6wB,YAAa,CACT3pC,KAAMkB,OACN4X,UAAU,GAEdjU,OAAQ,CACJ7E,KAAMwgD,SACN1nC,UAAU,IAGlB9W,MAAO,CACHonB,SACI,KAAKq3B,mBACT,EACA9W,cACI,KAAK8W,mBACT,GAEJ/yC,UACI,KAAK+yC,mBACT,EACAx+C,QAAS,CACL,0BACI,MAAMy+C,EAAO3/C,SAAS8V,cAAc,QACpC,KAAK3T,IAAI07C,YAAY8B,GACrB,KAAKx9C,IAAMw9C,EACX,MAAMlb,QAAgB,KAAK3gC,OAAO,KAAKukB,OAAQ,KAAKugB,aAChDnE,IACA,KAAKtiC,IAAI07C,YAAYpZ,GACrB,KAAKtiC,IAAMsiC,EAEnB,ICzBR,IAXgB,OACd,IDRW,WAA+C,OAAO51B,EAA5BnO,KAAYkO,MAAMC,IAAa,OACtE,GACsB,ICSpB,EACA,KACA,KACA,MAI8B,QClBhC,gBC6BA,MC7BgM,GD6BhM,CACAnQ,KAAA,sBACAK,MAAA,CACAye,IAAA,CACAve,KAAAK,OACAyY,UAAA,IAGA9W,MAAA,CACAuc,MACA,KAAArb,IAAAwb,WAAAiiC,EAAAA,GAAAA,UAAA,KAAApiC,IACA,GAEA7Q,UACA,KAAAxK,IAAAwb,WAAAiiC,EAAAA,GAAAA,UAAA,KAAApiC,IACA,mBEjCI,GAAU,CAAC,EAEf,GAAQ7V,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IJTW,WAA+C,OAAO4G,EAA5BnO,KAAYkO,MAAMC,IAAa,OAAO,CAACxI,YAAY,mBAC1F,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnByJ,GCwCzL,CACA3H,KAAA,eACAC,WAAA,CACAkhD,oBAAAA,IAEAr/C,KAAAA,KACA,CACA6sB,QAAAA,KAGA1gB,UAEA,MAAAu/B,EAAA,KAAA/pC,IAAAlC,cAAA,OACAisC,EAAAj4B,aAAA,yBACAi4B,EAAAj4B,aAAA,cACAi4B,EAAAj4B,aAAA,cACA,mBC7CI,GAAU,CAAC,EAEf,GAAQtM,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,ICTW,WAA+C,OAAO4G,EAA5BnO,KAAYkO,MAAMC,IAAa,sBAAsB,CAACxI,YAAY,uBAAuBC,MAAM,CAAC,IAAhG5F,KAA0G2sB,UACjJ,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QzBa1B9P,GAAU6N,KAChBlG,EAAAA,QAAIupB,UAAU,iBAAkBwQ,IAChC,SAAe/5B,EAAAA,QAAIM,OAAO,CACtB9mB,KAAM,YACNC,WAAY,CACRmhD,oBAAmB,GACnBD,oBAAmB,GACnBE,aAAY,GACZC,SAAQ,GACRC,WAAU,WACVC,SAAQ,GACRC,eAAc,KACdt2C,UAAS,KACTu2C,sBAAqB,KACrBC,cAAa,KACbC,YAAWA,MAEfvhD,MAAO,CACHgK,OAAQ,CACJ9J,KAAMC,QACNnB,SAAS,GAEbwiD,iBAAkB,CACdthD,KAAMC,QACNnB,SAAS,GAEbyiD,gBAAiB,CACbvhD,KAAMC,QACNnB,SAAS,GAEbsqB,OAAQ,CACJppB,KAAMkB,OACN4X,UAAU,GAEdyO,MAAO,CACHvnB,KAAMqB,OACNyX,UAAU,GAEdsT,MAAO,CACHpsB,KAAMiM,MACN6M,UAAU,GAEd0oC,eAAgB,CACZxhD,KAAMqB,OACNvC,QAAS,IAGjB2/B,QACI,MAAMgjB,EAAmBlB,KACnB7W,EAAa5C,KACb4a,E2BtDkB,WAC5B,MAmBMA,EAnBQtgB,GAAY,WAAY,CAClCrJ,MAAOA,KAAA,CACH4pB,QAAQ,EACRC,SAAS,EACTC,SAAS,EACT79C,UAAU,IAEdsa,QAAS,CACLwjC,QAAQ1nC,GACCA,IACDA,EAAQhV,OAAOgV,OAEnB6L,EAAAA,QAAAA,IAAQxkB,KAAM,WAAY2Y,EAAMunC,QAChC17B,EAAAA,QAAAA,IAAQxkB,KAAM,YAAa2Y,EAAMwnC,SACjC37B,EAAAA,QAAAA,IAAQxkB,KAAM,YAAa2Y,EAAMynC,SACjC57B,EAAAA,QAAAA,IAAQxkB,KAAM,aAAc2Y,EAAMpW,SACtC,IAGckyB,IAAMvzB,WAQ5B,OANK++C,EAAcha,eACftiC,OAAOgI,iBAAiB,UAAWs0C,EAAcI,SACjD18C,OAAOgI,iBAAiB,QAASs0C,EAAcI,SAC/C18C,OAAOgI,iBAAiB,YAAas0C,EAAcI,SACnDJ,EAAcha,cAAe,GAE1Bga,CACX,C3ByB8BK,GAChBC,E4B5DkB,WAC5B,MAMMA,EANQ5gB,GAAY,WAAY,CAClCrJ,MAAOA,KAAA,CACHkqB,kBAAc74C,EACd84C,QAAS,MAGKhsB,IAAMvzB,WAS5B,OAPKq/C,EAActa,gBACf1qB,EAAAA,EAAAA,IAAU,qBAAqB,SAAUsP,GACrC01B,EAAcC,aAAe31B,EAC7B01B,EAAcE,QAAU51B,EAAKvL,QACjC,IACAihC,EAActa,cAAe,GAE1Bsa,CACX,C5B2C8BG,GAGtB,MAAO,CACHV,mBACA/X,aACAgY,gBACAM,gBACAI,eAPmBpa,KAQnBY,gBAPoBD,KAS5B,EACApnC,KAAIA,KACO,CACH8gD,kBAAkB,EAClBvmC,gBAAiB,GACjBjb,kBAAmBE,SAASC,cAAc,8BAC1C0hB,QAAS,KAGjB5gB,SAAU,CACNymC,aACI,OAAO,KAAKK,gBAAgBL,UAChC,EACAoB,cACI,OAAO,KAAKC,YAAY9/B,MAC5B,EACAw4C,UAAU,IAAAnY,EAEN,OAAI,KAAKqX,eAAiB,IACf,IAEY,QAAhBrX,EAAA,KAAKR,mBAAW,IAAAQ,OAAA,EAAhBA,EAAkBmY,UAAW,EACxC,EACA78B,MAAM,IAAA88B,EAAAC,EAEF,QAAmB,QAAXD,EAAA,KAAKxY,cAAM,IAAAwY,GAAO,QAAPC,EAAXD,EAAax6B,aAAK,IAAAy6B,OAAP,EAAXA,EAAoB/8B,MAAO,KAAK5Q,QAAQ,WAAY,KAChE,EACAoM,SAAS,IAAAwhC,EAAAC,EAAAC,EACL,OAAkB,QAAlBF,EAAO,KAAKr5B,cAAM,IAAAq5B,GAAQ,QAARC,EAAXD,EAAaxhC,cAAM,IAAAyhC,GAAU,QAAVC,EAAnBD,EAAqBv6C,gBAAQ,IAAAw6C,OAAlB,EAAXA,EAAA57C,KAAA27C,EACX,EACA77B,cACI,MAAM+7B,EAAO,KAAKx5B,OAAOlF,WAAa,GAChCzkB,EAAQ,KAAK2pB,OAAOtS,WAAW+P,aAC9B,KAAKuC,OAAOrI,SAEnB,OAAQ6hC,EAAanjD,EAAKgJ,MAAM,EAAG,EAAIm6C,EAAIhgD,QAA7BnD,CAClB,EACAiI,OACI,MAAMA,EAAOqjC,SAAS,KAAK3hB,OAAO1hB,KAAM,KAAO,EAC/C,MAAoB,iBAATA,GAAqBA,EAAO,EAC5B,KAAKjJ,EAAE,QAAS,WAEpB0pB,EAAezgB,GAAM,EAChC,EACAm7C,cAGI,MAEMn7C,EAAOqjC,SAAS,KAAK3hB,OAAO1hB,KAAM,KAAO,EAC/C,OAAKA,GAAQA,EAAO,EAHD,OAME,EANF,IAMoBiN,KAAKgJ,IAAK,KAAKyL,OAAO1hB,KALtC,SAK8D,EACzF,EACA8hB,QACI,OAAI,KAAKJ,OAAOI,MACLs5B,OAAO,KAAK15B,OAAOI,OAAOu5B,UAE9B,KAAKtkD,EAAE,iBAAkB,kBACpC,EACAukD,aACI,OAAI,KAAK55B,OAAOI,MACLs5B,OAAO,KAAK15B,OAAOI,OAAOy5B,OAAO,OAErC,EACX,EACAC,SAAS,IAAAC,EACL,OAAI,KAAKC,sBAAsBxgD,OAAS,EAG7B,CACHuE,MAHW,KAAKi8C,sBAAsB,GACfv8B,YAAY,CAAC,KAAKuC,QAAS,KAAKugB,aAGvDnhC,KAAM,WAGC,QAAX26C,EAAA,KAAK/5B,cAAM,IAAA+5B,OAAA,EAAXA,EAAaz5B,aAAcV,GAAW8B,KAC/B,CACHvhB,SAAU,KAAK6f,OAAOrI,SACtB7b,KAAM,KAAKkkB,OAAOA,OAClBjiB,MAAO,KAAK1I,EAAE,QAAS,uBAAwB,CAAEgB,KAAM,KAAKonB,eAG7D,CACHw8B,GAAI,OAEZ,EACAC,gBACI,OAAO,KAAKlB,eAAena,QAC/B,EACAsb,aAAa,IAAAC,EAAAC,EAAAC,EACT,OAAO,KAAKJ,cAAc/gD,SAAoB,QAAZihD,EAAC,KAAKp6B,cAAM,IAAAo6B,GAAQ,QAARC,EAAXD,EAAaviC,cAAM,IAAAwiC,GAAU,QAAVC,EAAnBD,EAAqBt7C,gBAAQ,IAAAu7C,OAAlB,EAAXA,EAAA38C,KAAA08C,GACvC,EACAE,eACI,OAAO,KAAKpb,WAAWE,mBAC3B,EACAtnB,aACI,IACI,MAAMyJ,EAAM,IAAIjP,IAAIvW,OAAOC,SAASC,OAAS,KAAK8jB,OAAOtS,WAAWqK,YAMpE,OAJAyJ,EAAIg5B,aAAaxlC,IAAI,IAAK,MAC1BwM,EAAIg5B,aAAaxlC,IAAI,IAAK,MAE1BwM,EAAIg5B,aAAaxlC,IAAI,KAA2B,IAAtB,KAAKulC,aAAwB,IAAM,KACtD/4B,EAAI1lB,IACf,CACA,MAAO1G,GACH,OAAO,IACX,CACJ,EACAqlD,cAAc,IAAAC,EAAAC,EAAAC,EACV,MAAMC,EAAW,KAAK76B,OAAO/H,MAAQ,2BAC/BwiC,EAAuB,QAAZC,EAAG1+C,OAAO6c,UAAE,IAAA6hC,GAAU,QAAVC,EAATD,EAAW5hC,gBAAQ,IAAA6hC,GAAY,QAAZC,EAAnBD,EAAqB5hC,kBAAU,IAAA6hC,OAAtB,EAATA,EAAAj9C,KAAAg9C,EAAkCE,GACtD,OAAIJ,EACA,OAAAjiD,OAAciiD,EAAW,KAEtB,EACX,EAEAK,iBACI,OAAO5lC,GACFvZ,QAAOugB,IAAWA,EAAOqG,SAAWrG,EAAOqG,QAAQ,CAAC,KAAKvC,QAAS,KAAKugB,eACvE5rB,MAAK,CAACnf,EAAGkH,KAAOlH,EAAE0pB,OAAS,IAAMxiB,EAAEwiB,OAAS,IACrD,EAEA67B,uBACI,OAAI,KAAK3C,eAAiB,IACf,GAEJ,KAAK0C,eAAen/C,QAAOugB,IAAM,IAAA8+B,EAAA,OAAI9+B,SAAc,QAAR8+B,EAAN9+B,EAAQlkB,cAAM,IAAAgjD,OAAR,EAANA,EAAAr9C,KAAAue,EAAiB,KAAK8D,OAAQ,KAAKugB,YAAY,GAC/F,EAEA0a,uBACI,OAAK,KAAKv6C,OAGH,KAAKo6C,eAAen/C,QAAOugB,GAAyC,mBAAxBA,EAAOwG,eAF/C,EAGf,EAEAs3B,wBACI,OAAO,KAAKc,eAAen/C,QAAOugB,KAAYA,UAAAA,EAAQxmB,UAC1D,EAEAwlD,qBACI,MAAO,IAEA,KAAKH,wBAEL,KAAKD,eAAen/C,QAAOugB,GAAUA,EAAOxmB,UAAYwsB,GAAYqD,QAAyC,mBAAxBrJ,EAAOwG,gBACjG/mB,QAAO,CAACgL,EAAOwX,EAAO5oB,IAEb4oB,IAAU5oB,EAAK4lD,WAAUj/B,GAAUA,EAAO/c,KAAOwH,EAAMxH,MAEtE,EACAi8C,WAAY,CACRhsC,MACI,OAAO,KAAKipC,iBAAiBjgD,SAAW,KAAKijD,QACjD,EACArmC,IAAI5c,GACA,KAAKigD,iBAAiBjgD,OAASA,EAAS,KAAKijD,SAAW,IAC5D,GAEJA,WACI,OAAOrE,GAAS,KAAKh3B,OAAOA,OAChC,EACAs7B,aACI,OAA2C,IAApC,KAAKt7B,OAAOtS,WAAWiX,QAClC,EACA42B,aACI,OAAO,KAAK3C,cAAcC,eAAiB,KAAK74B,MACpD,EACAw7B,wBACI,OAAO,KAAKD,YAAc,KAAKnD,eAAiB,GACpD,EACAU,QAAS,CACL1pC,MACI,OAAO,KAAKwpC,cAAcE,OAC9B,EACA9jC,IAAI8jC,GACA,KAAKF,cAAcE,QAAUA,CACjC,IAGRlgD,MAAO,CACH8H,OAAOA,EAAQqS,GACX,IAAe,IAAXrS,IAA+B,IAAXqS,EAMpB,OALA,KAAK0oC,kBAIL,KAAK3hD,IAAI8T,WAAW/G,MAAM4lB,QAAU,QAIxC,KAAK3yB,IAAI8T,WAAW/G,MAAM4lB,QAAU,EACxC,EAKAzM,SACI,KAAKy7B,aACL,KAAKC,qBACT,EAKAH,aACI,KAAKI,eACT,GAKJr3C,UAAU,IAAAs3C,EAAAC,EAIN,KAAKC,oBAAqBC,EAAAA,GAAAA,WAAS,WAC/B,KAAKC,sBACT,GAAG,KAAK,GAER,KAAKN,sBAEc,QAAnBE,EAAA,KAAK9hD,IAAI8T,kBAAU,IAAAguC,GAAkB,QAAlBC,EAAnBD,EAAqB53C,wBAAgB,IAAA63C,GAArCA,EAAAl+C,KAAAi+C,EAAwC,cAAe,KAAKK,aAChE,EACA/3C,gBACI,KAAKu3C,YACT,EACA5iD,QAAS,CACL,4B6B3SuB,IAAUkf,E7B4S7B,GAAK,KAAKA,WAKV,a6BjT6BA,E7BgTU,KAAKA,W6B/S7CmkC,OAAOvlD,KALE,YAMX8kB,MAAK,SAAU0gC,GAChB,OAAOA,EAAMj8B,MAAMnI,GACd0D,MAAK,SAAU4C,GAChB,QAASA,CACb,GACJ,M7B2SY,KAAK3L,gBAAe,OAAAla,OAAU,KAAKuf,WAAU,UAC7C,KAAKkhC,kBAAmB,SAI5B,KAAK6C,oBACT,EACAE,uBAES,KAAKjkC,aAIN,KAAKqkC,gBACL,KAAKC,WAGT,KAAKD,eAAiB,IAAIE,KAAJ,EAAsB,CAACh0B,EAAS6G,EAAQotB,KAC1D,MAAMC,EAAM,IAAIC,MAEhBD,EAAIE,cAAgB,KAAKh8C,OAAS,OAAS,OAC3C87C,EAAIvyB,OAAS,KACT,KAAKvX,gBAAe,OAAAla,OAAU,KAAKuf,WAAU,KAC7C,KAAKkhC,kBAAmB,EACxB3wB,EAAQk0B,EAAI,EAEhBA,EAAIryB,QAAU,KACV,KAAK8uB,kBAAmB,EACxB9pB,EAAOqtB,EAAI,EAEfA,EAAIG,IAAM,KAAK5kC,WAEfwkC,GAAS,KACLC,EAAIryB,QAAU,KACdqyB,EAAIvyB,OAAS,KACbuyB,EAAIG,IAAM,EAAE,GACd,IAEV,EACAlB,aAEI,KAAKniC,QAAU,GAEf,KAAK+iC,WAEL,KAAKjB,YAAa,CACtB,EACAiB,WACI,KAAK3pC,gBAAkB,GACvB,KAAKumC,kBAAmB,EACpB,KAAKmD,iBACL,KAAKA,eAAeQ,SACpB,KAAKR,eAAiB,KAE9B,EACA,oBAAoBlgC,GAChB,MAAMuB,EAAcvB,EAAOuB,YAAY,CAAC,KAAKuC,QAAS,KAAKugB,aAC3D,IAEI,KAAKjnB,QAAU4C,EAAO/c,GACtB0d,EAAAA,QAAAA,IAAQ,KAAKmD,OAAQ,YAAY,GACjC,MAAMjK,QAAgBmG,EAAOsG,KAAK,KAAKxC,OAAQ,KAAKugB,YAAa,KAAKlkB,KAEtE,GAAgB,OAAZtG,EACA,OAEJ,GAAIA,EAEA,YADA8mC,EAAAA,EAAAA,IAAY,KAAKxnD,EAAE,QAAS,+CAAgD,CAAEooB,kBAGlFlB,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,gCAAiC,CAAEooB,gBACjE,CACA,MAAOroB,GACHikB,GAAOrD,MAAM,+BAAgC,CAAEkG,SAAQ9mB,OACvDmnB,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,gCAAiC,CAAEooB,gBACjE,CAAC,QAGG,KAAKnE,QAAU,GACfuD,EAAAA,QAAAA,IAAQ,KAAKmD,OAAQ,YAAY,EACrC,CACJ,EACA88B,kBAAkB9rC,GACV,KAAKgpC,sBAAsBxgD,OAAS,IACpCwX,EAAMhW,iBACNgW,EAAM1V,kBAEN,KAAK0+C,sBAAsB,GAAGx3B,KAAK,KAAKxC,OAAQ,KAAKugB,YAAa,KAAKlkB,KAE/E,EACA0gC,uBAAuB/rC,GACnB,MAAMgsC,EAAgB,KAAKlC,eAAehhC,MAAKoC,GAAUA,EAAO/c,KAAOqmB,KACnEw3B,IACAhsC,EAAMhW,iBACNgW,EAAM1V,kBACN0hD,EAAcx6B,KAAK,KAAKxC,OAAQ,KAAKugB,aAE7C,EACA0c,kBAAkBje,GAAW,IAAAke,EACzB,MAAMC,EAAmB,KAAKh/B,MACxB4gB,EAAoB,KAAKia,eAAeja,kBAE9C,GAAsB,QAAlBme,EAAA,KAAK5E,qBAAa,IAAA4E,GAAlBA,EAAoBtiD,UAAkC,OAAtBmkC,EAA4B,CAC5D,MAAMqe,EAAoB,KAAKlD,cAAc/gD,SAAS,KAAK0e,QACrD7W,EAAQuK,KAAK6T,IAAI+9B,EAAkBpe,GACnCyM,EAAMjgC,KAAKugC,IAAI/M,EAAmBoe,GAClCre,EAAgB,KAAKka,eAAela,cACpCue,EAAgB,KAAKr6B,MACtB/tB,KAAIo6B,IAAI,IAAAiuB,EAAAC,EAAA,OAAe,QAAfD,EAAIjuB,EAAKxX,cAAM,IAAAylC,GAAU,QAAVC,EAAXD,EAAav+C,gBAAQ,IAAAw+C,OAAV,EAAXA,EAAA5/C,KAAA2/C,EAAyB,IACrCj+C,MAAM2B,EAAOwqC,EAAM,GAElBxM,EAAY,IAAIF,KAAkBue,GACnC1hD,QAAOslC,IAAWmc,GAAqBnc,IAAW,KAAKppB,SAI5D,OAHAwB,GAAOwB,MAAM,oDAAqD,CAAE7Z,QAAOwqC,MAAK6R,gBAAeD,2BAE/F,KAAKpE,eAAehkC,IAAIgqB,EAE5B,CACA3lB,GAAOwB,MAAM,qBAAsB,CAAEmkB,cACrC,KAAKga,eAAehkC,IAAIgqB,GACxB,KAAKga,eAAe/Z,aAAake,EACrC,EAEAlB,aAAajrC,GAET,GAAI,KAAKoqC,WACL,OAGJ,MAAMoC,EAAwB,KAAKtD,cAAc1gD,OAAS,EAC1D,KAAK6+C,iBAAiBjgD,OAAS,KAAK+hD,YAAcqD,EAAwB,SAAW,KAAKnC,SAE1FrqC,EAAMhW,iBACNgW,EAAM1V,iBACV,EAMAmiD,mBAAmBzsC,GAAO,IAAA0sC,EAAAC,EACtB,MAAMjnC,EAAQ1F,aAAK,EAALA,EAAO3W,OACfy+C,GAA2B,QAAjB4E,GAAAC,EAAA,KAAK7E,SAAQp7C,YAAI,IAAAggD,OAAA,EAAjBA,EAAA//C,KAAAggD,KAAyB,GACzC,IACI,KAAKC,gBAAgB9E,GACrBpiC,EAAMmnC,kBAAkB,IACxBnnC,EAAM3Y,MAAQ,EAClB,CACA,MAAO3I,GACHshB,EAAMmnC,kBAAkBzoD,EAAE42B,SAC1BtV,EAAM3Y,MAAQ3I,EAAE42B,OACpB,CAAC,QAEGtV,EAAMonC,gBACV,CACJ,EACAF,gBAAgBvnD,GACZ,MAAM0nD,EAAc1nD,EAAKqH,OACzB,GAAoB,MAAhBqgD,GAAuC,OAAhBA,EACvB,MAAM,IAAIvwC,MAAM,KAAKnY,EAAE,QAAS,oCAAqC,CAAEgB,UAEtE,GAA2B,IAAvB0nD,EAAYvkD,OACjB,MAAM,IAAIgU,MAAM,KAAKnY,EAAE,QAAS,+BAE/B,IAAkC,IAA9B0oD,EAAY3mD,QAAQ,KACzB,MAAM,IAAIoW,MAAM,KAAKnY,EAAE,QAAS,2CAE/B,GAAI0oD,EAAY79B,MAAMrH,GAAGwtB,OAAO2X,uBACjC,MAAM,IAAIxwC,MAAM,KAAKnY,EAAE,QAAS,uCAAwC,CAAEgB,UAEzE,GAAI,KAAK4nD,kBAAkB5nD,GAC5B,MAAM,IAAImX,MAAM,KAAKnY,EAAE,QAAS,4BAA6B,CAAEyjD,QAASziD,KAE5E,OAAO,CACX,EACA4nD,kBAAkB5nD,GACd,OAAO,KAAK2sB,MAAMlJ,MAAKoJ,GAAQA,EAAKvL,WAAathB,GAAQ6sB,IAAS,KAAKlD,QAC3E,EACA27B,gBACI,KAAK8B,qBACL,KAAKxjD,WAAU,KAAM,IAAAikD,EAAAC,EAAAC,EAAAC,EACjB,MAAMC,GAAa,KAAKt+B,OAAOlF,WAAa,IAAIthB,OAC1CA,EAAS,KAAKwmB,OAAOrI,SAASne,OAAS8kD,EACvC5nC,EAA8B,QAAzBwnC,EAAG,KAAKzkD,MAAM8kD,mBAAW,IAAAL,GAAO,QAAPC,EAAtBD,EAAwBzkD,aAAK,IAAA0kD,GAAY,QAAZC,EAA7BD,EAA+BK,kBAAU,IAAAJ,GAAO,QAAPC,EAAzCD,EAA2C3kD,aAAK,IAAA4kD,OAA1B,EAAtBA,EAAkD3nC,MAC3DA,GAILA,EAAM+nC,kBAAkB,EAAGjlD,GAC3Bkd,EAAM3c,SAJFsf,GAAOrD,MAAM,kCAIJ,GAErB,EACA0oC,eACS,KAAKnD,YAIV,KAAK3C,cAAclpB,QACvB,EAEA,iBAAiB,IAAAivB,EAAAC,EACb,MAAMC,EAAU,KAAK7+B,OAAOrI,SACtBmnC,EAAY,KAAK9+B,OAAOA,OACxB84B,GAA2B,QAAjB6F,GAAAC,EAAA,KAAK9F,SAAQp7C,YAAI,IAAAihD,OAAA,EAAjBA,EAAAhhD,KAAAihD,KAAyB,GACzC,GAAgB,KAAZ9F,EAIJ,GAAI+F,IAAY/F,EAKhB,GAAI,KAAKmF,kBAAkBnF,IACvBv8B,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,wDAD9B,CAKA,KAAKikB,QAAU,WACfuD,EAAAA,QAAAA,IAAQ,KAAKmD,OAAQ,YAAY,GAEjC,KAAKA,OAAO8B,OAAOg3B,GACnB,UACU3+B,EAAAA,EAAAA,GAAM,CACRgO,OAAQ,OACR3G,IAAKs9B,EACLC,QAAS,CACLC,YAAaC,UAAU,KAAKj/B,OAAOA,YAI3CsD,EAAAA,EAAAA,IAAK,qBAAsB,KAAKtD,SAChCsD,EAAAA,EAAAA,IAAK,qBAAsB,KAAKtD,SAChC68B,EAAAA,EAAAA,IAAY,KAAKxnD,EAAE,QAAS,qCAAsC,CAAEwpD,UAAS/F,aAC7E,KAAK4F,eACL,KAAKzkD,WAAU,KACX,KAAKR,MAAMke,SAAS5d,OAAO,GAEnC,CACA,MAAOic,GAAO,IAAAkpC,EAAAC,EAKV,GAJA9lC,GAAOrD,MAAM,4BAA6B,CAAEA,UAC5C,KAAKgK,OAAO8B,OAAO+8B,GACnB,KAAKplD,MAAM8kD,YAAYxkD,QAES,OAA5Bic,SAAe,QAAVkpC,EAALlpC,EAAOqI,gBAAQ,IAAA6gC,OAAV,EAALA,EAAiBxjC,QAEjB,YADAa,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,2DAA4D,CAAEwpD,aAGvF,GAAgC,OAA5B7oC,SAAe,QAAVmpC,EAALnpC,EAAOqI,gBAAQ,IAAA8gC,OAAV,EAALA,EAAiBzjC,QAEtB,YADAa,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,+FAAgG,CAAEyjD,UAASz8B,IAAK,KAAKA,QAInJE,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,+BAAgC,CAAEwpD,YAChE,CAAC,QAEG,KAAKvlC,SAAU,EACfuD,EAAAA,QAAAA,IAAQ,KAAKmD,OAAQ,YAAY,EACrC,CA1CA,MAPI,KAAK0+B,oBAJLniC,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,wBAsDlC,EACAA,EAAG+pD,EAAAA,GACHrgC,eAAcA,K8BjlBoO,sBCWtP,GAAU,CAAC,EAEf,GAAQzf,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,uBCftD,GAAU,CAAC,EAEf,GAAQN,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCN1D,UAXgB,OACd,IjCVW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAgC,OAAtB0S,EAAI3S,MAAM86B,YAAmB76B,EAAG,WAAW,CAACA,EAAG,KAAK,CAACxI,YAAY,4BAA4B,CAAEkb,EAAIxY,OAAQ8F,EAAG,wBAAwB,CAACvI,MAAM,CAAC,aAAaib,EAAI7jB,EAAE,QAAS,mCAAoC,CAAEooB,YAAavE,EAAIuE,cAAe,QAAUvE,EAAIghC,cAAc,MAAQhhC,EAAIrB,OAAO,KAAO,iBAAiB1Z,GAAG,CAAC,iBAAiB+a,EAAI+jC,qBAAqB/jC,EAAIlS,MAAM,GAAGkS,EAAIpS,GAAG,KAAKN,EAAG,KAAK,CAACxI,YAAY,wBAAwB,CAACwI,EAAG,OAAO,CAACxI,YAAY,uBAAuBG,GAAG,CAAC,MAAQ+a,EAAI4jC,oBAAoB,CAAsB,WAApB5jC,EAAI8G,OAAOppB,KAAmB4P,EAAG,cAAe0S,EAAInB,aAAemB,EAAI+/B,iBAAkBzyC,EAAG,OAAO,CAACtI,IAAI,aAAaF,YAAY,+BAA+B6I,MAAO,CAAE6L,gBAAiBwG,EAAIxG,mBAAsBwG,EAAIuhC,YAAaj0C,EAAG,OAAO,CAACxI,YAAY,kEAAkE6I,MAAO,CAAE6L,gBAAiBwG,EAAIuhC,eAAiBj0C,EAAG,YAAY0S,EAAIpS,GAAG,KAAMoS,EAAIoiC,WAAY90C,EAAG,OAAO,CAACxI,YAAY,gCAAgCC,MAAM,CAAC,aAAaib,EAAI7jB,EAAE,QAAS,cAAc,CAACmR,EAAG,eAAe,CAACvI,MAAM,CAAC,eAAc,MAAS,GAAGib,EAAIlS,MAAM,GAAGkS,EAAIpS,GAAG,KAAKN,EAAG,OAAO,CAAC1E,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,MAAOuS,EAAIqiC,WAAY30C,WAAW,cAAc,CAACvQ,KAAK,mBAAmBqQ,QAAQ,qBAAqBC,MAAOuS,EAAIwlC,aAAc93C,WAAW,iBAAiB5I,YAAY,yBAAyBC,MAAM,CAAC,eAAeib,EAAIqiC,WAAW,aAAariC,EAAI7jB,EAAE,QAAS,gBAAgB8I,GAAG,CAAC,OAAS,SAASqe,GAAyD,OAAjDA,EAAOxhB,iBAAiBwhB,EAAOlhB,kBAAyB4d,EAAImmC,SAASr3C,MAAM,KAAMzO,UAAU,IAAI,CAACiN,EAAG,cAAc,CAACtI,IAAI,cAAcD,MAAM,CAAC,aAAaib,EAAI7jB,EAAE,QAAS,aAAa,WAAY,EAAK,UAAY,EAAE,UAAW,EAAK,MAAQ6jB,EAAI4/B,QAAQ,aAAe,QAAQ36C,GAAG,CAAC,eAAe,SAASqe,GAAQtD,EAAI4/B,QAAQt8B,CAAM,EAAE,MAAQ,CAACtD,EAAIukC,mBAAmB,SAASjhC,GAAQ,OAAIA,EAAO5lB,KAAKQ,QAAQ,QAAQ8hB,EAAIomC,GAAG9iC,EAAO7hB,QAAQ,MAAM,GAAG6hB,EAAO7U,IAAI,CAAC,MAAM,WAAkB,KAAYuR,EAAIwlC,aAAa12C,MAAM,KAAMzO,UAAU,OAAO,GAAG2f,EAAIpS,GAAG,KAAKN,EAAG,IAAI0S,EAAItQ,GAAG,CAAC9G,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,OAAQuS,EAAIqiC,WAAY30C,WAAW,gBAAgB1I,IAAI,WAAWD,MAAM,CAAC,cAAcib,EAAIqiC,YAAYp9C,GAAG,CAAC,MAAQ+a,EAAI4jC,oBAAoB,IAAI5jC,EAAI4gC,QAAO,GAAO,CAACtzC,EAAG,OAAO,CAACxI,YAAY,6BAA6B,CAACwI,EAAG,OAAO,CAACxI,YAAY,wBAAwB2U,SAAS,CAAC,YAAcuG,EAAInS,GAAGmS,EAAIuE,gBAAgBvE,EAAIpS,GAAG,KAAKN,EAAG,OAAO,CAACxI,YAAY,2BAA2B2U,SAAS,CAAC,YAAcuG,EAAInS,GAAGmS,EAAI8G,OAAOlF,oBAAoB5B,EAAIpS,GAAG,KAAKN,EAAG,KAAK,CAAC1E,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,OAAQuS,EAAIsiC,sBAAuB50C,WAAW,2BAA2B5I,YAAY,0BAA0Bb,MAAK,2BAAA3E,OAA4B0gB,EAAImiC,WAAY,CAACniC,EAAIuD,GAAIvD,EAAI+hC,sBAAsB,SAAS/+B,GAAQ,OAAO1V,EAAG,sBAAsB,CAACmB,IAAIuU,EAAO/c,GAAGlB,MAAM,CAAC,eAAeib,EAAIqnB,YAAY,OAASrkB,EAAOwG,aAAa,OAASxJ,EAAI8G,SAAS,IAAG9G,EAAIpS,GAAG,KAAMoS,EAAIxY,OAAQ8F,EAAG,YAAY,CAACtI,IAAI,cAAcD,MAAM,CAAC,qBAAqBib,EAAIzhB,kBAAkB,UAAYyhB,EAAIzhB,kBAAkB,SAAWyhB,EAAI8G,OAAOu/B,SAAS,eAAc,EAAK,aAAiD,IAApCrmC,EAAI6hC,qBAAqBvhD,OAAuD,OAAS0f,EAAI6hC,qBAAqBvhD,OAAO,KAAO0f,EAAIkiC,YAAYj9C,GAAG,CAAC,cAAc,SAASqe,GAAQtD,EAAIkiC,WAAW5+B,CAAM,IAAItD,EAAIuD,GAAIvD,EAAIgiC,oBAAoB,SAASh/B,GAAQ,OAAO1V,EAAG,iBAAiB,CAACmB,IAAIuU,EAAO/c,GAAGhC,MAAM,0BAA4B+e,EAAO/c,GAAGlB,MAAM,CAAC,qBAAoB,GAAME,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOtD,EAAIsmC,cAActjC,EAAO,GAAGjf,YAAYic,EAAIxR,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAEsR,EAAII,UAAY4C,EAAO/c,GAAIqH,EAAG,gBAAgB,CAACvI,MAAM,CAAC,KAAO,MAAMuI,EAAG,sBAAsB,CAACvI,MAAM,CAAC,IAAMie,EAAOoG,cAAc,CAACpJ,EAAI8G,QAAS9G,EAAIqnB,gBAAgB,EAAE14B,OAAM,IAAO,MAAK,IAAO,CAACqR,EAAIpS,GAAG,aAAaoS,EAAInS,GAAGmV,EAAOuB,YAAY,CAACvE,EAAI8G,QAAS9G,EAAIqnB,cAAc,aAAa,IAAG,GAAGrnB,EAAIlS,MAAM,GAAGkS,EAAIpS,GAAG,KAAMoS,EAAIi/B,gBAAiB3xC,EAAG,KAAK,CAACxI,YAAY,uBAAuB6I,MAAO,CAAE44C,QAASvmC,EAAIugC,aAAet7C,GAAG,CAAC,MAAQ+a,EAAI6jC,yBAAyB,CAACv2C,EAAG,OAAO,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAI5a,WAAW4a,EAAIlS,KAAKkS,EAAIpS,GAAG,KAAMoS,EAAIg/B,iBAAkB1xC,EAAG,KAAK,CAACxI,YAAY,wBAAwBG,GAAG,CAAC,MAAQ+a,EAAI6jC,yBAAyB,CAACv2C,EAAG,OAAO,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAIkH,YAAYlH,EAAIlS,KAAKkS,EAAIpS,GAAG,KAAKoS,EAAIuD,GAAIvD,EAAIggC,SAAS,SAASwG,GAAO,IAAAC,EAAC,OAAOn5C,EAAG,KAAK,CAACmB,IAAI+3C,EAAOvgD,GAAGnB,YAAY,gCAAgCb,MAAK,mBAAA3E,OAAmC,QAAnCmnD,EAAoBzmC,EAAIqnB,mBAAW,IAAAof,OAAA,EAAfA,EAAiBxgD,GAAE,KAAA3G,OAAIknD,EAAOvgD,IAAKhB,GAAG,CAAC,MAAQ+a,EAAI6jC,yBAAyB,CAAE7jC,EAAIxY,OAAQ8F,EAAG,sBAAsB,CAACvI,MAAM,CAAC,eAAeib,EAAIqnB,YAAY,OAASmf,EAAOjkD,OAAO,OAASyd,EAAI8G,UAAU9G,EAAIlS,MAAM,EAAE,KAAI,EAChnJ,GACsB,IiCWpB,EACA,KACA,WACA,MAI8B,QCpBgO,GCKjP6V,EAAAA,QAAIM,OAAO,CACtB9mB,KAAM,kBACNC,WAAY,CAAC,EACbI,MAAO,CACHwhD,iBAAkB,CACdthD,KAAMC,QACNnB,SAAS,GAEbyiD,gBAAiB,CACbvhD,KAAMC,QACNnB,SAAS,GAEbstB,MAAO,CACHpsB,KAAMiM,MACN6M,UAAU,GAEdkwC,QAAS,CACLhpD,KAAMK,OACNvB,QAAS,IAEb0iD,eAAgB,CACZxhD,KAAMqB,OACNvC,QAAS,IAGjB2/B,QACI,MAAMmJ,EAAaD,KAEnB,MAAO,CACH+B,WAFe5C,KAGfc,aAER,EACA9lC,SAAU,CACN6nC,cACI,OAAO,KAAKC,YAAY9/B,MAC5B,EACA2b,MAAM,IAAA88B,EAAAC,EAEF,QAAmB,QAAXD,EAAA,KAAKxY,cAAM,IAAAwY,GAAO,QAAPC,EAAXD,EAAax6B,aAAK,IAAAy6B,OAAP,EAAXA,EAAoB/8B,MAAO,KAAK5Q,QAAQ,WAAY,KAChE,EACAo0C,gBAAgB,IAAA9e,EACZ,GAAqB,QAAjBA,EAAC,KAAKR,mBAAW,IAAAQ,IAAhBA,EAAkB5hC,GACnB,OAEJ,GAAiB,MAAb,KAAKkd,IACL,OAAO,KAAKikB,WAAWvC,QAAQ,KAAKwC,YAAYphC,IAEpD,MAAM8hC,EAAS,KAAKzC,WAAWE,QAAQ,KAAK6B,YAAYphC,GAAI,KAAKkd,KACjE,OAAO,KAAKikB,WAAW1C,QAAQqD,EACnC,EACAiY,UAAU,IAAA4G,EAEN,OAAI,KAAK1H,eAAiB,IACf,IAEY,QAAhB0H,EAAA,KAAKvf,mBAAW,IAAAuf,OAAA,EAAhBA,EAAkB5G,UAAW,EACxC,EACA1Q,YAAY,IAAAuX,EAER,OAAsB,QAAtBA,EAAI,KAAKF,qBAAa,IAAAE,GAAlBA,EAAoBzhD,KACbygB,EAAe,KAAK8gC,cAAcvhD,MAAM,GAG5CygB,EAAe,KAAKiE,MAAMpO,QAAO,CAACorC,EAAO98B,IAAS88B,EAAQ98B,EAAK5kB,MAAQ,GAAG,IAAI,EACzF,GAEJzF,QAAS,CACLonD,eAAeP,GACX,MAAO,CACH,iCAAiC,EACjC,oBAAAlnD,OAAoB,KAAK+nC,YAAYphC,GAAE,KAAA3G,OAAIknD,EAAOvgD,MAAO,EAEjE,EACA9J,EAAG+pD,EAAAA,qBCpEP,GAAU,CAAC,EAEf,GAAQ9/C,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IFTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAgC,OAAtB0S,EAAI3S,MAAM86B,YAAmB76B,EAAG,KAAK,CAACA,EAAG,KAAK,CAACxI,YAAY,4BAA4B,CAACwI,EAAG,OAAO,CAACxI,YAAY,mBAAmB,CAACkb,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,4BAA4B6jB,EAAIpS,GAAG,KAAKN,EAAG,KAAK,CAACxI,YAAY,wBAAwB,CAACwI,EAAG,OAAO,CAACxI,YAAY,yBAAyBkb,EAAIpS,GAAG,KAAKN,EAAG,OAAO,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAI0mC,cAAc1mC,EAAIpS,GAAG,KAAKN,EAAG,KAAK,CAACxI,YAAY,4BAA4Bkb,EAAIpS,GAAG,KAAMoS,EAAIi/B,gBAAiB3xC,EAAG,KAAK,CAACxI,YAAY,2CAA2C,CAACwI,EAAG,OAAO,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAIsvB,gBAAgBtvB,EAAIlS,KAAKkS,EAAIpS,GAAG,KAAMoS,EAAIg/B,iBAAkB1xC,EAAG,KAAK,CAACxI,YAAY,6CAA6Ckb,EAAIlS,KAAKkS,EAAIpS,GAAG,KAAKoS,EAAIuD,GAAIvD,EAAIggC,SAAS,SAASwG,GAAO,IAAAQ,EAAC,OAAO15C,EAAG,KAAK,CAACmB,IAAI+3C,EAAOvgD,GAAGhC,MAAM+b,EAAI+mC,eAAeP,IAAS,CAACl5C,EAAG,OAAO,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAiB,QAAfm5C,EAACR,EAAOE,eAAO,IAAAM,OAAA,EAAdA,EAAAviD,KAAA+hD,EAAiBxmC,EAAI8J,MAAO9J,EAAIqnB,kBAAkB,KAAI,EACt6B,GACsB,IEUpB,EACA,KACA,WACA,MAI8B,QCGhC,GAAe1jB,EAAAA,QAAIM,OAAO,CACtBhlB,KAAIA,KACO,CACHigD,eAAgB,OAGxBptC,UACI,MAAMm1C,EAAaxoD,SAASC,cAAc,oBAC1CS,KAAK+nD,gBAAkB,IAAI3Y,gBAAgBnC,IACnCA,EAAQ9rC,OAAS,GAAK8rC,EAAQ,GAAGjrC,SAAW8lD,IAC5C9nD,KAAK+/C,eAAiB9S,EAAQ,GAAGuJ,YAAYznC,MACjD,IAEJ/O,KAAK+nD,gBAAgBva,QAAQsa,EACjC,EACAj8C,gBACI7L,KAAK+nD,gBAAgBta,YACzB,ICzBE5wB,GAAU6N,KCduP,GDexPlG,EAAAA,QAAIM,OAAO,CACtB9mB,KAAM,yBACNC,WAAY,CACRkhD,oBAAmB,GACnBh2C,UAAS,KACTs2C,eAAc,KACdE,cAAaA,MAEjBh2C,OAAQ,CACJq+C,IAEJ3pD,MAAO,CACH6pC,YAAa,CACT3pC,KAAMkB,OACN4X,UAAU,GAEd4wC,cAAe,CACX1pD,KAAMiM,MACNnN,QAASA,IAAO,KAGxB2/B,MAAKA,KAIM,CACHgjB,iBAJqBlB,KAKrB7W,WAJe5C,KAKfsb,eAJmBpa,OAO3BzmC,KAAIA,KACO,CACHmhB,QAAS,OAGjB5gB,SAAU,CACN2jB,MAAM,IAAA88B,EAAAC,EAEF,QAAmB,QAAXD,EAAA,KAAKxY,cAAM,IAAAwY,GAAO,QAAPC,EAAXD,EAAax6B,aAAK,IAAAy6B,OAAP,EAAXA,EAAoB/8B,MAAO,KAAK5Q,QAAQ,WAAY,KAChE,EACAqvC,iBACI,OAAO5lC,GACFvZ,QAAOugB,GAAUA,EAAOuG,YACxB9mB,QAAOugB,IAAWA,EAAOqG,SAAWrG,EAAOqG,QAAQ,KAAKS,MAAO,KAAKud,eACpE5rB,MAAK,CAACnf,EAAGkH,KAAOlH,EAAE0pB,OAAS,IAAMxiB,EAAEwiB,OAAS,IACrD,EACA8D,QACI,OAAO,KAAKs9B,cACPrrD,KAAI4iB,GAAU,KAAK+lB,QAAQ/lB,KAC3Blc,QAAOunB,GAAQA,GACxB,EACAq9B,sBACI,OAAO,KAAKv9B,MAAM0B,MAAKxB,GAAQA,EAAKq8B,UACxC,EACAnE,WAAY,CACRhsC,MACI,MAAwC,WAAjC,KAAKipC,iBAAiBjgD,MACjC,EACA4c,IAAI5c,GACA,KAAKigD,iBAAiBjgD,OAASA,EAAS,SAAW,IACvD,GAEJ0K,gBACI,OAAI,KAAKs1C,eAAiB,IACf,EAEP,KAAKA,eAAiB,IACf,EAEP,KAAKA,eAAiB,KACf,EAEJ,CACX,GAEJv/C,QAAS,CAOL+kC,QAAQqD,GACJ,OAAO,KAAKX,WAAW1C,QAAQqD,EACnC,EACA,oBAAoB/kB,GAChB,MAAMuB,EAAcvB,EAAOuB,YAAY,KAAKuF,MAAO,KAAKud,aAClDigB,EAAe,KAAKF,cAC1B,IAEI,KAAKhnC,QAAU4C,EAAO/c,GACtB,KAAK6jB,MAAM1Y,SAAQ4Y,IACfrG,EAAAA,QAAAA,IAAQqG,EAAM,YAAY,EAAK,IAGnC,MAAMu9B,QAAgBvkC,EAAOuG,UAAU,KAAKO,MAAO,KAAKud,YAAa,KAAKlkB,KAE1E,IAAKokC,EAAQ/7B,MAAKR,GAAqB,OAAXA,IAGxB,YADA,KAAK80B,eAAe9Z,QAIxB,GAAIuhB,EAAQ/7B,MAAKR,IAAqB,IAAXA,IAAmB,CAE1C,MAAMw8B,EAAYF,EACb7kD,QAAO,CAACkc,EAAQsG,KAA6B,IAAnBsiC,EAAQtiC,KAGvC,OAFA,KAAK66B,eAAehkC,IAAI0rC,QACxBnkC,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,2CAA4C,CAAEooB,gBAE5E,EAEAo/B,EAAAA,EAAAA,IAAY,KAAKxnD,EAAE,QAAS,qDAAsD,CAAEooB,iBACpF,KAAKu7B,eAAe9Z,OACxB,CACA,MAAO9pC,GACHikB,GAAOrD,MAAM,+BAAgC,CAAEkG,SAAQ9mB,OACvDmnB,EAAAA,EAAAA,IAAU,KAAKlnB,EAAE,QAAS,gCAAiC,CAAEooB,gBACjE,CAAC,QAGG,KAAKnE,QAAU,KACf,KAAK0J,MAAM1Y,SAAQ4Y,IACfrG,EAAAA,QAAAA,IAAQqG,EAAM,YAAY,EAAM,GAExC,CACJ,EACA7tB,EAAG+pD,EAAAA,sBEpIP,GAAU,CAAC,EAEf,GAAQ9/C,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IHTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAgC,OAAtB0S,EAAI3S,MAAM86B,YAAmB76B,EAAG,KAAK,CAACxI,YAAY,mDAAmDC,MAAM,CAAC,QAAU,MAAM,CAACuI,EAAG,YAAY,CAACtI,IAAI,cAAcD,MAAM,CAAC,WAAaib,EAAII,SAAWJ,EAAIqnC,oBAAoB,eAAc,EAAK,OAASrnC,EAAIpW,cAAc,aAAaoW,EAAIpW,eAAiB,EAAIoW,EAAI7jB,EAAE,QAAS,WAAa,KAAK,KAAO6jB,EAAIkiC,YAAYj9C,GAAG,CAAC,cAAc,SAASqe,GAAQtD,EAAIkiC,WAAW5+B,CAAM,IAAItD,EAAIuD,GAAIvD,EAAI4hC,gBAAgB,SAAS5+B,GAAQ,OAAO1V,EAAG,iBAAiB,CAACmB,IAAIuU,EAAO/c,GAAGhC,MAAM,iCAAmC+e,EAAO/c,GAAGhB,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOtD,EAAIsmC,cAActjC,EAAO,GAAGjf,YAAYic,EAAIxR,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAEsR,EAAII,UAAY4C,EAAO/c,GAAIqH,EAAG,gBAAgB,CAACvI,MAAM,CAAC,KAAO,MAAMuI,EAAG,sBAAsB,CAACvI,MAAM,CAAC,IAAMie,EAAOoG,cAAcpJ,EAAI8J,MAAO9J,EAAIqnB,gBAAgB,EAAE14B,OAAM,IAAO,MAAK,IAAO,CAACqR,EAAIpS,GAAG,WAAWoS,EAAInS,GAAGmV,EAAOuB,YAAYvE,EAAI8J,MAAO9J,EAAIqnB,cAAc,WAAW,IAAG,IAAI,EAC3/B,GACsB,IGUpB,EACA,KACA,WACA,MAI8B,QCnB4E,GCoB5G,CACElqC,KAAM,eACN6B,MAAO,CAAC,SACRxB,MAAO,CACLqH,MAAO,CACLnH,KAAMK,QAERkpC,UAAW,CACTvpC,KAAMK,OACNvB,QAAS,gBAEX4I,KAAM,CACJ1H,KAAMqB,OACNvC,QAAS,MCff,IAXgB,OACd,ICRW,WAAkB,IAAIwjB,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,OAAO0S,EAAItQ,GAAG,CAAC5K,YAAY,sCAAsCC,MAAM,CAAC,eAAeib,EAAInb,MAAM,aAAamb,EAAInb,MAAM,KAAO,OAAOI,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOtD,EAAI7f,MAAM,QAASmjB,EAAO,IAAI,OAAOtD,EAAItY,QAAO,GAAO,CAAC4F,EAAG,MAAM,CAACxI,YAAY,4BAA4BC,MAAM,CAAC,KAAOib,EAAIinB,UAAU,MAAQjnB,EAAI5a,KAAK,OAAS4a,EAAI5a,KAAK,QAAU,cAAc,CAACkI,EAAG,OAAO,CAACvI,MAAM,CAAC,EAAI,yBAAyB,CAAEib,EAAS,MAAE1S,EAAG,QAAQ,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAInb,UAAUmb,EAAIlS,UAC1hB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElB0E,GCoB1G,CACE3Q,KAAM,aACN6B,MAAO,CAAC,SACRxB,MAAO,CACLqH,MAAO,CACLnH,KAAMK,QAERkpC,UAAW,CACTvpC,KAAMK,OACNvB,QAAS,gBAEX4I,KAAM,CACJ1H,KAAMqB,OACNvC,QAAS,MCff,IAXgB,OACd,ICRW,WAAkB,IAAIwjB,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,OAAO0S,EAAItQ,GAAG,CAAC5K,YAAY,oCAAoCC,MAAM,CAAC,eAAeib,EAAInb,MAAM,aAAamb,EAAInb,MAAM,KAAO,OAAOI,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOtD,EAAI7f,MAAM,QAASmjB,EAAO,IAAI,OAAOtD,EAAItY,QAAO,GAAO,CAAC4F,EAAG,MAAM,CAACxI,YAAY,4BAA4BC,MAAM,CAAC,KAAOib,EAAIinB,UAAU,MAAQjnB,EAAI5a,KAAK,OAAS4a,EAAI5a,KAAK,QAAU,cAAc,CAACkI,EAAG,OAAO,CAACvI,MAAM,CAAC,EAAI,yBAAyB,CAAEib,EAAS,MAAE1S,EAAG,QAAQ,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAInb,UAAUmb,EAAIlS,UACxhB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QEMhC,GAAe6V,EAAAA,QAAIM,OAAO,CACtBzkB,SAAU,KvEuvDI0/B,GuEtvDEwH,GvEsvDQ+gB,GuEtvDY,CAAC,YAAa,eAAgB,0BvEuvD3D99C,MAAM6I,QAAQi1C,IACfA,GAAa/rC,QAAO,CAACgsC,EAASj5C,KAC5Bi5C,EAAQj5C,GAAO,WACX,OAAOywB,GAAS//B,KAAKwoD,QAAQl5C,EACjC,EACOi5C,IACR,CAAC,GACF9oD,OAAOuwB,KAAKs4B,IAAc/rC,QAAO,CAACgsC,EAASj5C,KAEzCi5C,EAAQj5C,GAAO,WACX,MAAMmlB,EAAQsL,GAAS//B,KAAKwoD,QACtBC,EAAWH,GAAah5C,GAG9B,MAA2B,mBAAbm5C,EACRA,EAASnjD,KAAKtF,KAAMy0B,GACpBA,EAAMg0B,EAChB,EACOF,IACR,CAAC,IuEzwDJrgB,cACI,OAAOloC,KAAKmoC,YAAY9/B,MAC5B,EAIAqgD,cAAc,IAAAC,EAAAjgB,EACV,OAA0C,QAAnCigB,EAAA3oD,KAAKwnC,UAAUxnC,KAAKkoC,YAAYphC,WAAG,IAAA6hD,OAAA,EAAnCA,EAAqCC,gBACrB,QADiClgB,EACjD1oC,KAAKkoC,mBAAW,IAAAQ,OAAA,EAAhBA,EAAkBmgB,iBAClB,UACX,EAIAC,eAAe,IAAAC,EAEX,MAA4B,SADgC,QAAtCA,EAAG/oD,KAAKwnC,UAAUxnC,KAAKkoC,YAAYphC,WAAG,IAAAiiD,OAAA,EAAnCA,EAAqCnhB,kBAElE,GAEJpnC,QAAS,CACLwoD,aAAa15C,GAELtP,KAAK0oD,cAAgBp5C,EAKzBtP,KAAKynC,aAAan4B,EAAKtP,KAAKkoC,YAAYphC,IAJpC9G,KAAK0nC,uBAAuB1nC,KAAKkoC,YAAYphC,GAKrD,KCvD8P,GCMvP0d,EAAAA,QAAIM,OAAO,CACtB9mB,KAAM,wBACNC,WAAY,CACRgrD,SAAQ,GACRC,OAAM,GACNhrD,SAAQA,MAEZyL,OAAQ,CACJw/C,IAEJ9qD,MAAO,CACHL,KAAM,CACFO,KAAMK,OACNyY,UAAU,GAEd+xC,KAAM,CACF7qD,KAAMK,OACNyY,UAAU,IAGlB7W,QAAS,CACL6oD,cAAchC,GACV,MAAMlZ,EAAY,KAAK2a,aACjB,KAAK9rD,EAAE,QAAS,aAChB,KAAKA,EAAE,QAAS,cACtB,OAAO,KAAKA,EAAE,QAAS,sCAAuC,CAC1DqqD,SACAlZ,aAER,EACAnxC,EAAG+pD,EAAAA,MzE4uDX,IAAkBhnB,GAAUuoB,e0ErwDxB,GAAU,CAAC,EAEf,GAAQrhD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IFTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAgC,OAAtB0S,EAAI3S,MAAM86B,YAAmB76B,EAAG,WAAW,CAACxI,YAAY,iCAAiCb,MAAM,CAAC,yCAA0C+b,EAAI6nC,cAAgB7nC,EAAIuoC,MAAMxjD,MAAM,CAAC,aAAaib,EAAIwoC,cAAcxoC,EAAI7iB,MAAM,KAAO,YAAY8H,GAAG,CAAC,MAAQ,SAASqe,GAAyD,OAAjDA,EAAOlhB,kBAAkBkhB,EAAOxhB,iBAAwBke,EAAImoC,aAAanoC,EAAIuoC,KAAK,IAAI,CAAEvoC,EAAI6nC,cAAgB7nC,EAAIuoC,MAAQvoC,EAAIioC,aAAc36C,EAAG,SAAS,CAACvI,MAAM,CAAC,KAAO,QAAQI,KAAK,SAASmI,EAAG,WAAW,CAACvI,MAAM,CAAC,KAAO,QAAQI,KAAK,SAAS6a,EAAIpS,GAAG,OAAOoS,EAAInS,GAAGmS,EAAI7iB,MAAM,OAAO,EAC/lB,GACsB,IEUpB,EACA,KACA,KACA,MAI8B,QCnBgO,GCSjPwmB,EAAAA,QAAIM,OAAO,CACtB9mB,KAAM,kBACNC,WAAY,CACRqrD,sBAAqB,GACrB5J,sBAAqB,KACrB6J,uBAAsBA,IAE1B5/C,OAAQ,CACJw/C,IAEJ9qD,MAAO,CACHwhD,iBAAkB,CACdthD,KAAMC,QACNnB,SAAS,GAEbyiD,gBAAiB,CACbvhD,KAAMC,QACNnB,SAAS,GAEbstB,MAAO,CACHpsB,KAAMiM,MACN6M,UAAU,GAEd0oC,eAAgB,CACZxhD,KAAMqB,OACNvC,QAAS,IAGjB2/B,MAAKA,KAGM,CACHiL,WAHe5C,KAIfsb,eAHmBpa,OAM3BlmC,SAAU,CACN6nC,cACI,OAAO,KAAKC,YAAY9/B,MAC5B,EACAw4C,UAAU,IAAAnY,EAEN,OAAI,KAAKqX,eAAiB,IACf,IAEY,QAAhBrX,EAAA,KAAKR,mBAAW,IAAAQ,OAAA,EAAhBA,EAAkBmY,UAAW,EACxC,EACA78B,MAAM,IAAA88B,EAAAC,EAEF,QAAmB,QAAXD,EAAA,KAAKxY,cAAM,IAAAwY,GAAO,QAAPC,EAAXD,EAAax6B,aAAK,IAAAy6B,OAAP,EAAXA,EAAoB/8B,MAAO,KAAK5Q,QAAQ,WAAY,KAChE,EACAo2C,gBACI,MAAMpsC,EAAQ,KAAKqsC,gBAAkB,KAAKC,eACpC,KAAK1sD,EAAE,QAAS,cAChB,KAAKA,EAAE,QAAS,gBACtB,MAAO,CACH,aAAcogB,EACdmC,QAAS,KAAKoqC,cACdC,cAAe,KAAKF,eACpBhkD,MAAO0X,EAEf,EACA6qC,gBACI,OAAO,KAAKtH,eAAena,QAC/B,EACAmjB,gBACI,OAAO,KAAK1B,cAAc9mD,SAAW,KAAKwpB,MAAMxpB,MACpD,EACAsoD,iBACI,OAAqC,IAA9B,KAAKxB,cAAc9mD,MAC9B,EACAuoD,iBACI,OAAQ,KAAKC,gBAAkB,KAAKF,cACxC,GAEJjpD,QAAS,CACLonD,eAAeP,GACX,MAAO,CACH,sBAAsB,EACtB,iCAAkCA,EAAO/qC,KACzC,iCAAiC,EACjC,oBAAAnc,OAAoB,KAAK+nC,YAAYphC,GAAE,KAAA3G,OAAIknD,EAAOvgD,MAAO,EAEjE,EACA+iD,YAAYrjB,GACR,GAAIA,EAAU,CACV,MAAMG,EAAY,KAAKhc,MAAM/tB,KAAIiuB,GAAQA,EAAKrL,OAAO9Y,aACrDsa,GAAOwB,MAAM,+BAAgC,CAAEmkB,cAC/C,KAAKga,eAAe/Z,aAAa,MACjC,KAAK+Z,eAAehkC,IAAIgqB,EAC5B,MAEI3lB,GAAOwB,MAAM,qBACb,KAAKm+B,eAAe9Z,OAE5B,EACA7pC,EAAG+pD,EAAAA,sBC9FP,GAAU,CAAC,EAEf,GAAQ9/C,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IFTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAgC,OAAtB0S,EAAI3S,MAAM86B,YAAmB76B,EAAG,KAAK,CAACA,EAAG,KAAK,CAACxI,YAAY,+CAA+C,CAACwI,EAAG,wBAAwB0S,EAAItQ,GAAG,CAACzK,GAAG,CAAC,iBAAiB+a,EAAIgpC,cAAc,wBAAwBhpC,EAAI2oC,eAAc,KAAS,GAAG3oC,EAAIpS,GAAG,KAAOoS,EAAI4oC,eAAyH,CAACt7C,EAAG,KAAK,CAACxI,YAAY,uEAAuEG,GAAG,CAAC,MAAQ,SAASqe,GAAyD,OAAjDA,EAAOlhB,kBAAkBkhB,EAAOxhB,iBAAwBke,EAAImoC,aAAa,WAAW,IAAI,CAAC76C,EAAG,OAAO,CAACxI,YAAY,yBAAyBkb,EAAIpS,GAAG,KAAKN,EAAG,wBAAwB,CAACvI,MAAM,CAAC,KAAOib,EAAI7jB,EAAE,QAAS,QAAQ,KAAO,eAAe,GAAG6jB,EAAIpS,GAAG,KAAKN,EAAG,KAAK,CAACxI,YAAY,4BAA4Bkb,EAAIpS,GAAG,KAAMoS,EAAIi/B,gBAAiB3xC,EAAG,KAAK,CAACxI,YAAY,0CAA0Cb,MAAM,CAAC,+BAAgC+b,EAAIi/B,kBAAkB,CAAC3xC,EAAG,wBAAwB,CAACvI,MAAM,CAAC,KAAOib,EAAI7jB,EAAE,QAAS,QAAQ,KAAO,WAAW,GAAG6jB,EAAIlS,KAAKkS,EAAIpS,GAAG,KAAMoS,EAAIg/B,iBAAkB1xC,EAAG,KAAK,CAACxI,YAAY,2CAA2Cb,MAAM,CAAC,+BAAgC+b,EAAIg/B,mBAAmB,CAAC1xC,EAAG,wBAAwB,CAACvI,MAAM,CAAC,KAAOib,EAAI7jB,EAAE,QAAS,YAAY,KAAO,YAAY,GAAG6jB,EAAIlS,KAAKkS,EAAIpS,GAAG,KAAKoS,EAAIuD,GAAIvD,EAAIggC,SAAS,SAASwG,GAAQ,OAAOl5C,EAAG,KAAK,CAACmB,IAAI+3C,EAAOvgD,GAAGhC,MAAM+b,EAAI+mC,eAAeP,IAAS,CAAIA,EAAO/qC,KAAMnO,EAAG,wBAAwB,CAACvI,MAAM,CAAC,KAAOyhD,EAAO3hD,MAAM,KAAO2hD,EAAOvgD,MAAMqH,EAAG,OAAO,CAAC0S,EAAIpS,GAAG,aAAaoS,EAAInS,GAAG24C,EAAO3hD,OAAO,eAAe,EAAE,KAAtyCyI,EAAG,yBAAyB,CAACvI,MAAM,CAAC,eAAeib,EAAIqnB,YAAY,iBAAiBrnB,EAAIonC,kBAAmtC,EAC3nD,GACsB,IEUpB,EACA,KACA,WACA,MAI8B,QCnBiO,GCOlPzjC,EAAAA,QAAIM,OAAO,CACtB9mB,KAAM,mBACNC,WAAY,CACRk4C,gBAAe,GACf2T,UAAS,GACTC,gBAAe,GACfC,gBAAeA,IAEnBrgD,OAAQ,CACJq+C,IAEJ3pD,MAAO,CACH6pC,YAAa,CACT3pC,KAAMkB,OACN4X,UAAU,GAEdsT,MAAO,CACHpsB,KAAMiM,MACN6M,UAAU,IAGlBvX,KAAIA,KACO,CACHgqD,UAASA,KAGjBzpD,SAAU,CACNorB,QACI,OAAO,KAAKd,MAAMrnB,QAAOunB,GAAsB,SAAdA,EAAKtsB,MAC1C,EACA0rD,cACI,MAAMvX,EAAQ,KAAKjnB,MAAMtqB,OACzB,OAAO+oD,EAAAA,EAAAA,IAAgB,QAAS,eAAgB,gBAAiBxX,EAAO,CAAEA,SAC9E,EACAyX,gBACI,MAAMzX,EAAQ,KAAK/nB,MAAMxpB,OAAS,KAAKsqB,MAAMtqB,OAC7C,OAAO+oD,EAAAA,EAAAA,IAAgB,QAAS,iBAAkB,kBAAmBxX,EAAO,CAAEA,SAClF,EACA6U,UACI,OAAOR,EAAAA,EAAAA,IAAU,QAAS,oCAAqC,KACnE,EACAlH,mBAEI,QAAI,KAAKE,eAAiB,MAGnB,KAAKp1B,MAAM0B,MAAKxB,QAAuBljB,IAAfkjB,EAAK9C,OACxC,EACA+3B,kBAEI,QAAI,KAAKC,eAAiB,MAGnB,KAAKp1B,MAAM0B,MAAKxB,QAAiCljB,IAAzBkjB,EAAKxV,WAAWpP,MACnD,GAEJgG,UAEI,MAAMm+C,EAAQ,KAAK3oD,IAAIU,iBAAiB,+BACxCioD,EAAM,GAAG72C,aAAa,OAAQ,SAC9B62C,EAAM,GAAG72C,aAAa,OAAQ,QAClC,EACA/S,QAAS,CACL6pD,UAAUx/B,GACCA,EAAKrL,OAEhBxiB,EAAG+pD,EAAAA,sBC9DP,GAAU,CAAC,EAEf,GAAQ9/C,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IFTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAgC,OAAtB0S,EAAI3S,MAAM86B,YAAmB76B,EAAG,kBAAkB,CAACtI,IAAI,kBAAkBF,YAAY,aAAaC,MAAM,CAAC,YAAY,SAAS,MAAQib,EAAI8J,MAAM,YAAY,GAAG,cAAa,EAAK,aAAa,kBAAkB,WAAW,KAAK,aAAa,mBAAmB,WAAW,QAAQ,KAAO,SAAS/lB,YAAYic,EAAIxR,GAAG,CAAC,CAACC,IAAI,UAAUC,GAAG,SAAA8W,GAAiC,IAAxB,KAAEqI,EAAI,OAAErmB,EAAM,MAAEyd,GAAOO,EAAE,MAAO,CAAClY,EAAG,YAAY,CAACvI,MAAM,CAAC,OAASyC,EAAO,MAAQyd,EAAM,qBAAqBjF,EAAIg/B,iBAAiB,oBAAoBh/B,EAAIi/B,gBAAgB,mBAAmBj/B,EAAIk/B,eAAe,MAAQl/B,EAAI8J,MAAM,OAAS+D,KAAQ,GAAG,CAACpf,IAAI,SAASC,GAAG,WAAW,MAAO,CAACpB,EAAG,UAAU,CAACxI,YAAY,mBAAmB,CAACkb,EAAIpS,GAAG,WAAWoS,EAAInS,GAAGmS,EAAIqnB,YAAYoiB,SAAWzpC,EAAI7jB,EAAE,QAAS,+BAA+B,WAAW6jB,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,2HAA2H,YAAY6jB,EAAIpS,GAAG,KAAKN,EAAG,kBAAkB,CAACvI,MAAM,CAAC,mBAAmBib,EAAIk/B,eAAe,qBAAqBl/B,EAAIg/B,iBAAiB,oBAAoBh/B,EAAIi/B,gBAAgB,MAAQj/B,EAAI8J,SAAS,EAAEnb,OAAM,GAAM,CAACF,IAAI,QAAQC,GAAG,WAAW,MAAO,CAACpB,EAAG,kBAAkB,CAACvI,MAAM,CAAC,mBAAmBib,EAAIk/B,eAAe,qBAAqBl/B,EAAIg/B,iBAAiB,oBAAoBh/B,EAAIi/B,gBAAgB,MAAQj/B,EAAI8J,MAAM,QAAU9J,EAAI0mC,WAAW,EAAE/3C,OAAM,MACp5C,GACsB,IEUpB,EACA,KACA,WACA,MAI8B,+bCjBhC,eAGIkZ,cAAc6hC,GAAA,cAFL,IAAEA,GAAA,oBACI,MAEXvpC,GAAOwB,MAAM,iCACjB,CACAqD,SAAS+E,GACL,IACI4/B,GAAkB5/B,GAClB6/B,GAAmB7/B,EAAM5qB,KAAK0qD,OAClC,CACA,MAAO3tD,GAIH,MAHIA,aAAaoY,OACb6L,GAAOrD,MAAM5gB,EAAE42B,QAAS,CAAE/I,SAExB7tB,CACV,CACI6tB,EAAK+/B,QACL3pC,GAAOjd,KAAK,+CAEZ6mB,EAAKtF,YACLsF,EAAK+/B,QAAS,GAElB3qD,KAAK0qD,OAAOp3C,KAAKsX,EACrB,CACA9nB,OAAOgE,GACH,MAAMgf,EAAQ9lB,KAAK0qD,OAAO5H,WAAUl4B,GAAQA,EAAK9jB,KAAOA,KACzC,IAAXgf,GACA9lB,KAAK0qD,OAAO51C,OAAOgR,EAAO,EAElC,CACI6sB,YACA,OAAO3yC,KAAK0qD,MAChB,CACAE,UAAUhgC,GACN5qB,KAAK6qD,aAAejgC,CACxB,CACIviB,aACA,OAAOrI,KAAK6qD,YAChB,GAMEJ,GAAqB,SAAU7/B,EAAM+nB,GACvC,GAAIA,EAAMlxB,MAAKgJ,GAAUA,EAAO3jB,KAAO8jB,EAAK9jB,KACxC,MAAM,IAAIqO,MAAM,iBAADhV,OAAkByqB,EAAK9jB,GAAE,2BAE5C,OAAO,CACX,EAKM0jD,GAAoB,SAAU5/B,GAChC,IAAKA,EAAK9jB,IAAyB,iBAAZ8jB,EAAK9jB,GACxB,MAAM,IAAIqO,MAAM,kDAEpB,IAAKyV,EAAK5sB,MAA6B,iBAAd4sB,EAAK5sB,KAC1B,MAAM,IAAImX,MAAM,oDAEpB,GAAIyV,EAAKi2B,SAAWj2B,EAAKi2B,QAAQ1/C,OAAS,KACjCypB,EAAK0/B,SAAmC,iBAAjB1/B,EAAK0/B,SACjC,MAAM,IAAIn1C,MAAM,2EAMpB,IAAKyV,EAAK+/B,OAAQ,CACd,IAAK//B,EAAKkgC,aAA2C,mBAArBlgC,EAAKkgC,YACjC,MAAM,IAAI31C,MAAM,6DAEpB,IAAKyV,EAAK/lB,MAA6B,iBAAd+lB,EAAK/lB,OC1EvB,SAAekmD,GAC7B,GAAsB,iBAAXA,EACV,MAAM,IAAI7f,UAAU,uCAAuC6f,OAK5D,GAAsB,KAFtBA,EAASA,EAAO1lD,QAELlE,OACV,OAAO,EAIR,IAAsC,IAAlC,GAAA6pD,aAAaC,SAASF,GACzB,OAAO,EAGR,IAAIG,EACJ,MAAMC,EAAS,IAAI,GAAAC,UAEnB,IACCF,EAAaC,EAAOl8B,MAAM87B,EAC3B,CAAE,MACD,OAAO,CACR,CAEA,QAAKG,GAIC,QAASA,CAKhB,CDwC4DG,CAAMzgC,EAAK/lB,MAC3D,MAAM,IAAIsQ,MAAM,6DAExB,CACA,KAAM,UAAWyV,IAA+B,iBAAfA,EAAK/D,MAClC,MAAM,IAAI1R,MAAM,qDAMpB,GAHIyV,EAAKi2B,SACLj2B,EAAKi2B,QAAQ5uC,QAAQq5C,IAErB1gC,EAAK2gC,WAAuC,mBAAnB3gC,EAAK2gC,UAC9B,MAAM,IAAIp2C,MAAM,2CAEpB,GAAIyV,EAAKzU,QAAiC,iBAAhByU,EAAKzU,OAC3B,MAAM,IAAIhB,MAAM,sCAEpB,GAAI,WAAYyV,GAA+B,kBAAhBA,EAAK4gC,OAChC,MAAM,IAAIr2C,MAAM,uCAEpB,GAAI,aAAcyV,GAAiC,kBAAlBA,EAAK6gC,SAClC,MAAM,IAAIt2C,MAAM,yCAEpB,GAAIyV,EAAKi+B,gBAAiD,iBAAxBj+B,EAAKi+B,eACnC,MAAM,IAAI1zC,MAAM,8CAEpB,OAAO,CACX,EAKMm2C,GAAgB,SAAUjE,GAC5B,IAAKA,EAAOvgD,IAA2B,iBAAdugD,EAAOvgD,GAC5B,MAAM,IAAIqO,MAAM,2BAEpB,IAAKkyC,EAAO3hD,OAAiC,iBAAjB2hD,EAAO3hD,MAC/B,MAAM,IAAIyP,MAAM,8BAEpB,IAAKkyC,EAAOjkD,QAAmC,mBAAlBikD,EAAOjkD,OAChC,MAAM,IAAI+R,MAAM,iCAGpB,GAAIkyC,EAAO/qC,MAA+B,mBAAhB+qC,EAAO/qC,KAC7B,MAAM,IAAInH,MAAM,0CAEpB,GAAIkyC,EAAOE,SAAqC,mBAAnBF,EAAOE,QAChC,MAAM,IAAIpyC,MAAM,qCAEpB,OAAO,CACX,6BnF1GA,MqFpB0P,GrFoB3OqP,EAAAA,QAAIM,OAAO,CACtB9mB,KAAM,YACNC,WAAY,CACRytD,YAAW,GACXC,iBAAgB,GAChBC,aAAY,KACZ1tD,SAAQ,KACR4iB,eAAc,IACd+qC,iBAAgB,KAChBlM,cAAaA,MAEjBh2C,OAAQ,CACJw/C,IAEJnsB,MAAKA,KAMM,CACHiL,WANe5C,KAOfc,WANeD,KAOfya,eANmBpa,KAOnBY,gBANoBD,KAOpBW,gBANoBN,OAS5BznC,KAAIA,KACO,CACHmhB,SAAS,EACT6qC,QAAS,OAGjBzrD,SAAU,CACNymC,aACI,OAAO,KAAKK,gBAAgBL,UAChC,EAEAoB,cACI,OAAO,KAAKC,YAAY9/B,QACjB,KAAK8/B,YAAYwK,MAAMlxB,MAAKmJ,GAAoB,UAAZA,EAAK9jB,IACpD,EAMAkd,MAAM,IAAA88B,EAAAC,EAEF,QAAmB,QAAXD,EAAA,KAAKxY,cAAM,IAAAwY,GAAO,QAAPC,EAAXD,EAAax6B,aAAK,IAAAy6B,OAAP,EAAXA,EAAoB/8B,MAAO,KAAK5Q,QAAQ,WAAY,KAChE,EAMAo0C,gBAAgB,IAAA9e,EACZ,GAAqB,QAAjBA,EAAC,KAAKR,mBAAW,IAAAQ,IAAhBA,EAAkB5hC,GACnB,OAEJ,GAAiB,MAAb,KAAKkd,IACL,OAAO,KAAKikB,WAAWvC,QAAQ,KAAKwC,YAAYphC,IAEpD,MAAM8hC,EAAS,KAAKzC,WAAWE,QAAQ,KAAK6B,YAAYphC,GAAI,KAAKkd,KACjE,OAAO,KAAKikB,WAAW1C,QAAQqD,EACnC,EAMAmjB,cAAc,IAAAtE,EAAAuE,EACV,IAAK,KAAK9jB,YACN,MAAO,GAEX,MAAM+jB,IAAgC,QAAhBxE,EAAA,KAAKvf,mBAAW,IAAAuf,OAAA,EAAhBA,EAAkB5G,UAAW,IAC9Cp/B,MAAK4lC,GAAUA,EAAOvgD,KAAO,KAAK4hD,cAEvC,GAAIuD,SAAAA,EAAc3vC,MAAqC,mBAAtB2vC,EAAa3vC,KAAqB,KAAAorC,EAC/D,MAAMU,EAAU,MAAuB,QAAlBV,EAAA,KAAKF,qBAAa,IAAAE,OAAA,EAAlBA,EAAoBwE,YAAa,IAAItvD,IAAI,KAAK2oC,SAASjiC,QAAO0zB,GAAQA,KACtF1a,KAAK2vC,EAAa3vC,MACvB,OAAO,KAAKwsC,aAAeV,EAAUA,EAAQ+D,SACjD,CACA,MAAM9oB,EAAc,IAEb,KAAKyD,WAAWG,qBAAuB,CAAC7iC,IAAC,IAAAgoD,EAAA,OAA+B,KAAf,QAAZA,EAAAhoD,EAAEiR,kBAAU,IAAA+2C,OAAA,EAAZA,EAAc9/B,SAAc,GAAI,MAExD,aAArB,KAAKo8B,YAA6B,CAACtkD,GAAgB,WAAXA,EAAE7F,MAAqB,MAE1C,aAArB,KAAKmqD,YAA6B,CAACtkD,GAAKA,EAAE,KAAKskD,cAAgB,GAElEtkD,IAAC,IAAAioD,EAAA,OAAgB,QAAZA,EAAAjoD,EAAEiR,kBAAU,IAAAg3C,OAAA,EAAZA,EAAcjnC,cAAehhB,EAAEkb,QAAQ,EAE5Clb,GAAKA,EAAEkb,UAELgkB,EAAS,IAAI94B,MAAM64B,EAAYliC,QAAQ8N,KAAK,KAAK65C,aAAe,MAAQ,QAC9E,OAAO3lB,GAAQ,MAAuB,QAAlB6oB,EAAA,KAAKxE,qBAAa,IAAAwE,OAAA,EAAlBA,EAAoBE,YAAa,IAAItvD,IAAI,KAAK2oC,SAASjiC,QAAO0zB,GAAQA,KAAQqM,EAAaC,EACnH,EAIAgpB,aACI,OAAmC,IAA5B,KAAKP,YAAY5qD,MAC5B,EAMAorD,eACI,YAA8B5kD,IAAvB,KAAK6/C,gBACJ,KAAK8E,YACN,KAAKrrC,OAChB,EAIAurC,gBACI,MAAMxoC,EAAM,KAAKA,IAAIrnB,MAAM,KAAKqK,MAAM,GAAI,GAAGlK,KAAK,MAAQ,IAC1D,MAAO,IAAK,KAAKwrC,OAAQhiB,MAAO,CAAEtC,OACtC,GAEJzjB,MAAO,CACH2nC,YAAYukB,EAASC,IACbD,aAAO,EAAPA,EAAS3lD,OAAO4lD,aAAO,EAAPA,EAAS5lD,MAG7Bka,GAAOwB,MAAM,eAAgB,CAAEiqC,UAASC,YACxC,KAAK/L,eAAe9Z,QACpB,KAAK8lB,eACT,EACA3oC,IAAI4oC,EAAQC,GAAQ,IAAAC,EAAAC,EAChB/rC,GAAOwB,MAAM,oBAAqB,CAAEoqC,SAAQC,WAE5C,KAAKlM,eAAe9Z,QACpB,KAAK8lB,eAES,QAAdG,EAAI,KAAK1rD,aAAK,IAAA0rD,GAAkB,QAAlBC,EAAVD,EAAYE,wBAAgB,IAAAD,GAA5BA,EAA8BtrD,MAC9B,KAAKL,MAAM4rD,iBAAiBvrD,IAAI6W,UAAY,EAEpD,GAEJ9X,QAAS,CACL,qBAAqB,IAAAysD,EAAAC,EACjB,GAAoB,QAApBD,EAAI,KAAK/kB,mBAAW,IAAA+kB,GAAhBA,EAAkBtC,OAClB,OAEJ,KAAK1pC,SAAU,EACf,MAAM+C,EAAM,KAAKA,IACXkkB,EAAc,KAAKA,YAEW,mBAAb,QAAnBglB,EAAO,KAAKpB,eAAO,IAAAoB,OAAA,EAAZA,EAAc3I,UACrB,KAAKuH,QAAQvH,SACbvjC,GAAOwB,MAAM,qCAIjB,KAAKspC,QAAU5jB,EAAY4iB,YAAY9mC,GACvC,IACI,MAAM,OAAEmpC,EAAM,SAAEC,SAAmB,KAAKtB,QACxC9qC,GAAOwB,MAAM,mBAAoB,CAAEwB,MAAKmpC,SAAQC,aAEhD,KAAKnlB,WAAWtC,YAAYynB,GAE5BD,EAAOjB,UAAYkB,EAASxwD,KAAIiuB,GAAQA,EAAKrL,SAEjC,MAARwE,EACA,KAAKikB,WAAWnC,QAAQ,CAAExd,QAAS4f,EAAYphC,GAAIuhB,KAAM8kC,IAIzDA,EAAO3tC,QACP,KAAKyoB,WAAWtC,YAAY,CAACwnB,IAC7B,KAAKhnB,WAAWG,QAAQ,CAAEhe,QAAS4f,EAAYphC,GAAI0Y,OAAQ2tC,EAAO3tC,OAAQ9iB,KAAMsnB,KAIhFhD,GAAOrD,MAAM,+BAAgC,CAAEqG,MAAKmpC,SAAQjlB,gBAGhDklB,EAAS9pD,QAAOunB,GAAsB,WAAdA,EAAKtsB,OACrC0T,SAAQ4Y,IACZ,KAAKsb,WAAWG,QAAQ,CAAEhe,QAAS4f,EAAYphC,GAAI0Y,OAAQqL,EAAKrL,OAAQ9iB,MAAMI,EAAAA,EAAAA,MAAKknB,EAAK6G,EAAKvL,WAAY,GAEjH,CACA,MAAO3B,GACHqD,GAAOrD,MAAM,+BAAgC,CAAEA,SACnD,CAAC,QAEG,KAAKsD,SAAU,CACnB,CACJ,EAOAskB,QAAQqD,GACJ,OAAO,KAAKX,WAAW1C,QAAQqD,EACnC,EACA5rC,EAAG+pD,EAAAA,sBsFnNP,GAAU,CAAC,EAEf,GAAQ9/C,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IvFTW,WAAiB,IAAA+/C,EAAA+F,EAAAC,EAAAC,EAAK1sC,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAgC,OAAtB0S,EAAI3S,MAAM86B,YAAmB76B,EAAG,eAAe,CAAC1E,WAAW,CAAC,CAACzL,KAAK,OAAOqQ,QAAQ,SAASC,QAAuB,QAAhBg5C,EAACzmC,EAAIqnB,mBAAW,IAAAof,GAAfA,EAAiBqD,QAAQp8C,WAAW,yBAAyBzJ,MAAM,CAAC,sBAAsC,QAAjBuoD,EAAExsC,EAAIqnB,mBAAW,IAAAmlB,OAAA,EAAfA,EAAiB1C,QAAQ/kD,MAAM,CAAC,wBAAwB,KAAK,CAACuI,EAAG,MAAM,CAACxI,YAAY,sBAAsB,CAACwI,EAAG,cAAc,CAACvI,MAAM,CAAC,KAAOib,EAAImD,KAAKle,GAAG,CAAC,OAAS+a,EAAI8rC,gBAAgB9rC,EAAIpS,GAAG,KAAMoS,EAAI0rC,aAAcp+C,EAAG,gBAAgB,CAACxI,YAAY,6BAA6Bkb,EAAIlS,MAAM,GAAGkS,EAAIpS,GAAG,KAAMoS,EAAII,UAAYJ,EAAI0rC,aAAcp+C,EAAG,gBAAgB,CAACxI,YAAY,2BAA2BC,MAAM,CAAC,KAAO,GAAG,MAAQib,EAAI7jB,EAAE,QAAS,8BAA+B6jB,EAAII,SAAWJ,EAAIyrC,WAAYn+C,EAAG,iBAAiB,CAACvI,MAAM,CAAC,OAAuB,QAAf0nD,EAAAzsC,EAAIqnB,mBAAW,IAAAolB,OAAA,EAAfA,EAAiBE,aAAc3sC,EAAI7jB,EAAE,QAAS,oBAAoB,aAA6B,QAAfuwD,EAAA1sC,EAAIqnB,mBAAW,IAAAqlB,OAAA,EAAfA,EAAiBE,eAAgB5sC,EAAI7jB,EAAE,QAAS,kDAAkD,8BAA8B,IAAI4H,YAAYic,EAAIxR,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAO,CAAc,MAAZsR,EAAImD,IAAa7V,EAAG,WAAW,CAACvI,MAAM,CAAC,aAAa,0CAA0C,KAAO,UAAU,GAAKib,EAAI2rC,gBAAgB,CAAC3rC,EAAIpS,GAAG,aAAaoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,YAAY,cAAc6jB,EAAIlS,KAAK,EAAEa,OAAM,GAAM,CAACF,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACpB,EAAG,mBAAmB,CAACvI,MAAM,CAAC,IAAMib,EAAIqnB,YAAYrjC,QAAQ,EAAE2K,OAAM,OAAUrB,EAAG,mBAAmB,CAACtI,IAAI,mBAAmBD,MAAM,CAAC,eAAeib,EAAIqnB,YAAY,MAAQrnB,EAAIkrC,gBAAgB,EACn+C,GACsB,IuFUpB,EACA,KACA,WACA,MAI8B,QCnBhC,4BCkBA,UAXgB,OACd,KACA,KACA,MACA,EACA,KACA,KACA,MAI8B,0DCKhC,SAAS,GAAU7lD,EAAO01B,EAAUnrB,GAClC,IAcIi9C,EAdArnC,EAAO5V,GAAW,CAAC,EACnBk9C,EAAkBtnC,EAAKunC,WACvBA,OAAiC,IAApBD,GAAqCA,EAClDE,EAAiBxnC,EAAKynC,UACtBA,OAA+B,IAAnBD,GAAoCA,EAChDE,EAAoB1nC,EAAK2nC,aACzBA,OAAqC,IAAtBD,OAA+BpmD,EAAYomD,EAS1DE,GAAY,EAEZC,EAAW,EAEf,SAASC,IACHT,GACF3kD,aAAa2kD,EAEjB,CAkBA,SAASU,IACP,IAAK,IAAIxhB,EAAO1rC,UAAUC,OAAQktD,EAAa,IAAI7jD,MAAMoiC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACrFwhB,EAAWxhB,GAAQ3rC,UAAU2rC,GAG/B,IAAI3vC,EAAO8C,KACPsuD,EAAU1lD,KAAK0mB,MAAQ4+B,EAO3B,SAAS/jC,IACP+jC,EAAWtlD,KAAK0mB,MAChBsM,EAASjsB,MAAMzS,EAAMmxD,EACvB,CAOA,SAASrlD,IACP0kD,OAAY/lD,CACd,CAjBIsmD,IAmBCH,IAAaE,GAAiBN,GAMjCvjC,IAGFgkC,SAEqBxmD,IAAjBqmD,GAA8BM,EAAUpoD,EACtC4nD,GAMFI,EAAWtlD,KAAK0mB,MAEXs+B,IACHF,EAAY7kD,WAAWmlD,EAAehlD,EAAQmhB,EAAMjkB,KAOtDikB,KAEsB,IAAfyjC,IAYTF,EAAY7kD,WAAWmlD,EAAehlD,EAAQmhB,OAAuBxiB,IAAjBqmD,EAA6B9nD,EAAQooD,EAAUpoD,IAEvG,CAIA,OAFAkoD,EAAQ7J,OAxFR,SAAgB9zC,GACd,IACI89C,GADQ99C,GAAW,CAAC,GACO+9C,aAC3BA,OAAsC,IAAvBD,GAAwCA,EAE3DJ,IACAF,GAAaO,CACf,EAmFOJ,CACT,CCzHA,MCpB4G,GDoB5G,CACEpwD,KAAM,eACN6B,MAAO,CAAC,SACRxB,MAAO,CACLqH,MAAO,CACLnH,KAAMK,QAERkpC,UAAW,CACTvpC,KAAMK,OACNvB,QAAS,gBAEX4I,KAAM,CACJ1H,KAAMqB,OACNvC,QAAS,MEff,IAXgB,OACd,ICRW,WAAkB,IAAIwjB,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,OAAO0S,EAAItQ,GAAG,CAAC5K,YAAY,sCAAsCC,MAAM,CAAC,eAAeib,EAAInb,MAAM,aAAamb,EAAInb,MAAM,KAAO,OAAOI,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOtD,EAAI7f,MAAM,QAASmjB,EAAO,IAAI,OAAOtD,EAAItY,QAAO,GAAO,CAAC4F,EAAG,MAAM,CAACxI,YAAY,4BAA4BC,MAAM,CAAC,KAAOib,EAAIinB,UAAU,MAAQjnB,EAAI5a,KAAK,OAAS4a,EAAI5a,KAAK,QAAU,cAAc,CAACkI,EAAG,OAAO,CAACvI,MAAM,CAAC,EAAI,8HAA8H,CAAEib,EAAS,MAAE1S,EAAG,QAAQ,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAInb,UAAUmb,EAAIlS,UAC/nB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,mCEiBhC,MCnC4L,GDmC5L,CACA3Q,KAAA,kBAEAC,WAAA,CACAwwD,SAAA,GACAC,oBAAA,KACAC,cAAAA,MAGA7uD,KAAAA,KACA,CACA8uD,qBAAA,EACAC,cAAAlqC,EAAAA,EAAAA,GAAA,+BAIAtkB,SAAA,CACAyuD,oBAAA,IAAAC,EAAAC,EAAAC,EACA,MAAAC,EAAAxoC,EAAA,QAAAqoC,EAAA,KAAAF,oBAAA,IAAAE,OAAA,EAAAA,EAAAnd,MACAud,EAAAzoC,EAAA,QAAAsoC,EAAA,KAAAH,oBAAA,IAAAG,OAAA,EAAAA,EAAAI,OAGA,eAAAH,EAAA,KAAAJ,oBAAA,IAAAI,OAAA,EAAAA,EAAAG,OAAA,EACA,KAAApyD,EAAA,gCAAAkyD,kBAGA,KAAAlyD,EAAA,kCACA40C,KAAAsd,EACAE,MAAAD,GAEA,EACAE,sBACA,YAAAR,aAAAS,SAIA,KAAAtyD,EAAA,gCAAA6xD,cAHA,EAIA,GAGAnjD,cAKA6jD,YAAA,KAAAC,2BAAA,MAEAj0C,EAAAA,EAAAA,IAAA,0BAAAi0C,6BACAj0C,EAAAA,EAAAA,IAAA,0BAAAi0C,6BACAj0C,EAAAA,EAAAA,IAAA,wBAAAi0C,6BACAj0C,EAAAA,EAAAA,IAAA,0BAAAi0C,2BACA,EAEAhvD,QAAA,CAEAivD,4BLwEMC,GADkB,CAAC,EACCC,QAGjB,GK3ET,cAAAh3C,GACA,KAAAi3C,mBAAAj3C,EACA,GLyEmC,CAC/Bq1C,cAA0B,UAHG,IAAjB0B,IAAkCA,OKrElDF,2BAAApjB,GAAA,cAAAzzB,GACA,KAAAi3C,mBAAAj3C,EACA,IAQA,+BAAAA,EAAAzX,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,QACA,SAAA0tD,oBAAA,CAIA,KAAAA,qBAAA,EACA,QAAAiB,EACA,MAAA7pC,QAAAlE,EAAAA,EAAA/K,KAAAoJ,EAAAA,EAAAA,aAAA,6BACA,GAAA6F,SAAA,QAAA6pC,EAAA7pC,EAAAlmB,YAAA,IAAA+vD,IAAAA,EAAA/vD,KACA,UAAAqV,MAAA,yBAEA,KAAA05C,aAAA7oC,EAAAlmB,KAAAA,IACA,OAAA6d,GACAqD,GAAArD,MAAA,mCAAAA,UAEAhF,IACAuL,EAAAA,EAAAA,IAAAlnB,EAAA,2CAEA,SACA,KAAA4xD,qBAAA,CACA,CAjBA,CAkBA,EAEA5xD,EAAA+pD,EAAAA,KLiCA,IAEM2I,eOvJF,GAAU,CAAC,EAEf,GAAQzoD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,ICTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAQ0S,EAAIguC,aAAc1gD,EAAG,sBAAsB,CAACxI,YAAY,uCAAuCb,MAAM,CAAE,sDAAuD+b,EAAIguC,aAAaO,OAAS,GAAGxpD,MAAM,CAAC,aAAaib,EAAI7jB,EAAE,QAAS,wBAAwB,QAAU6jB,EAAI+tC,oBAAoB,KAAO/tC,EAAIiuC,kBAAkB,MAAQjuC,EAAIwuC,oBAAoB,0CAA0C,IAAIvpD,GAAG,CAAC,MAAQ,SAASqe,GAAyD,OAAjDA,EAAOlhB,kBAAkBkhB,EAAOxhB,iBAAwBke,EAAI4uC,2BAA2B9/C,MAAM,KAAMzO,UAAU,IAAI,CAACiN,EAAG,WAAW,CAACvI,MAAM,CAAC,KAAO,OAAO,KAAO,IAAII,KAAK,SAAS6a,EAAIpS,GAAG,KAAMoS,EAAIguC,aAAaO,OAAS,EAAGjhD,EAAG,gBAAgB,CAACvI,MAAM,CAAC,KAAO,QAAQ,MAAQib,EAAIguC,aAAaS,SAAW,GAAG,MAAQp8C,KAAK6T,IAAIlG,EAAIguC,aAAaS,SAAU,MAAMtpD,KAAK,UAAU6a,EAAIlS,MAAM,GAAGkS,EAAIlS,IACh2B,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnBhC,kDCoBA,MCpB6G,GDoB7G,CACE3Q,KAAM,gBACN6B,MAAO,CAAC,SACRxB,MAAO,CACLqH,MAAO,CACLnH,KAAMK,QAERkpC,UAAW,CACTvpC,KAAMK,OACNvB,QAAS,gBAEX4I,KAAM,CACJ1H,KAAMqB,OACNvC,QAAS,MEff,IAXgB,OACd,ICRW,WAAkB,IAAIwjB,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,OAAO0S,EAAItQ,GAAG,CAAC5K,YAAY,sCAAsCC,MAAM,CAAC,eAAeib,EAAInb,MAAM,aAAamb,EAAInb,MAAM,KAAO,OAAOI,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOtD,EAAI7f,MAAM,QAASmjB,EAAO,IAAI,OAAOtD,EAAItY,QAAO,GAAO,CAAC4F,EAAG,MAAM,CAACxI,YAAY,4BAA4BC,MAAM,CAAC,KAAOib,EAAIinB,UAAU,MAAQjnB,EAAI5a,KAAK,OAAS4a,EAAI5a,KAAK,QAAU,cAAc,CAACkI,EAAG,OAAO,CAACvI,MAAM,CAAC,EAAI,oMAAoM,CAAEib,EAAS,MAAE1S,EAAG,QAAQ,CAAC0S,EAAIpS,GAAGoS,EAAInS,GAAGmS,EAAInb,UAAUmb,EAAIlS,UACrsB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,mCEQhC,MC1BoL,GD0BpL,CACA3Q,KAAA,UACAK,MAAA,CACAmtC,GAAA,CACAjtC,KAAAwgD,SACA1nC,UAAA,IAGApL,UACA,KAAAxK,IAAA8K,YAAA,KAAAi/B,KACA,GElBA,IAXgB,OACd,ICRW,WAA+C,OAAOr9B,EAA5BnO,KAAYkO,MAAMC,IAAa,MACtE,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QEgFhC,IACAnQ,KAAA,WACAC,WAAA,CACA6xD,UAAA,GACAC,oBAAA,KACAC,qBAAA,KACAtQ,sBAAA,KACAuQ,aAAA,KACAC,QAAAA,IAGA7xD,MAAA,CACAC,KAAA,CACAC,KAAAC,QACAnB,SAAA,IAIA2/B,MAAAA,KAEA,CACAmK,gBAFAD,OAMApnC,OAAA,IAAAutB,EAAAC,EAAA6iC,EAAAvkC,EACA,OAEA6C,UAAA,QAAApB,EAAA1pB,OAAAqb,WAAA,IAAAqO,GAAA,QAAAC,EAAAD,EAAApO,aAAA,IAAAqO,GAAA,QAAA6iC,EAAA7iC,EAAAzb,gBAAA,IAAAs+C,OAAA,EAAAA,EAAA1hC,WAAA,GAGA2hC,WAAAC,EAAAA,EAAAA,mBAAA,aAAAxzD,mBAAA,QAAA+uB,GAAA1L,EAAAA,EAAAA,aAAA,IAAA0L,OAAA,EAAAA,EAAAnE,MACA6oC,WAAA,iEACAC,gBAAApwC,EAAAA,EAAAA,aAAA,sDACAqwC,iBAAA,EAEA,EAEAnwD,SAAA,CACAymC,aACA,YAAAK,gBAAAL,UACA,GAGAp7B,cAEA,KAAA+iB,SAAAxc,SAAAw+C,GAAAA,EAAAnyD,QACA,EAEAuN,gBAEA,KAAA4iB,SAAAxc,SAAAw+C,GAAAA,EAAA7jD,SACA,EAEApM,QAAA,CACAkwD,UACA,KAAA1vD,MAAA,QACA,EAEA2vD,UAAArhD,EAAAhB,GACA,KAAA64B,gBAAApyB,OAAAzF,EAAAhB,EACA,EAEA,oBACAhP,SAAAC,cAAA,0BAAA+e,SAEA4N,UAAAkK,iBAMAlK,UAAAkK,UAAAC,UAAA,KAAA+5B,WACA,KAAAI,iBAAA,GACAhM,EAAAA,EAAAA,IAAAxnD,EAAA,2CACA6L,YAAA,KACA,KAAA2nD,iBAAA,IACA,OATAtsC,EAAAA,EAAAA,IAAAlnB,EAAA,sCAUA,EAEAA,EAAA+pD,EAAAA,KClLqL,sBCWjL,GAAU,CAAC,EAEf,GAAQ9/C,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IZTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,sBAAsB,CAACvI,MAAM,CAAC,KAAOib,EAAIviB,KAAK,mBAAkB,EAAK,MAAQuiB,EAAI7jB,EAAE,QAAS,mBAAmB8I,GAAG,CAAC,cAAc+a,EAAI6vC,UAAU,CAACviD,EAAG,uBAAuB,CAACvI,MAAM,CAAC,GAAK,WAAW,MAAQib,EAAI7jB,EAAE,QAAS,oBAAoB,CAACmR,EAAG,wBAAwB,CAACvI,MAAM,CAAC,QAAUib,EAAIimB,WAAWG,sBAAsBnhC,GAAG,CAAC,iBAAiB,SAASqe,GAAQ,OAAOtD,EAAI8vC,UAAU,uBAAwBxsC,EAAO,IAAI,CAACtD,EAAIpS,GAAG,WAAWoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,yBAAyB,YAAY6jB,EAAIpS,GAAG,KAAKN,EAAG,wBAAwB,CAACvI,MAAM,CAAC,QAAUib,EAAIimB,WAAWC,aAAajhC,GAAG,CAAC,iBAAiB,SAASqe,GAAQ,OAAOtD,EAAI8vC,UAAU,cAAexsC,EAAO,IAAI,CAACtD,EAAIpS,GAAG,WAAWoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,sBAAsB,YAAY6jB,EAAIpS,GAAG,KAAKN,EAAG,wBAAwB,CAACvI,MAAM,CAAC,QAAUib,EAAIimB,WAAWE,qBAAqBlhC,GAAG,CAAC,iBAAiB,SAASqe,GAAQ,OAAOtD,EAAI8vC,UAAU,sBAAuBxsC,EAAO,IAAI,CAACtD,EAAIpS,GAAG,WAAWoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,wBAAwB,aAAa,GAAG6jB,EAAIpS,GAAG,KAA8B,IAAxBoS,EAAI4N,SAASttB,OAAcgN,EAAG,uBAAuB,CAACvI,MAAM,CAAC,GAAK,gBAAgB,MAAQib,EAAI7jB,EAAE,QAAS,yBAAyB,CAAC6jB,EAAIuD,GAAIvD,EAAI4N,UAAU,SAASgiC,GAAS,MAAO,CAACtiD,EAAG,UAAU,CAACmB,IAAImhD,EAAQzyD,KAAK4H,MAAM,CAAC,GAAK6qD,EAAQjlB,MAAM,KAAI,GAAG3qB,EAAIlS,KAAKkS,EAAIpS,GAAG,KAAKN,EAAG,uBAAuB,CAACvI,MAAM,CAAC,GAAK,SAAS,MAAQib,EAAI7jB,EAAE,QAAS,YAAY,CAACmR,EAAG,eAAe,CAACvI,MAAM,CAAC,GAAK,mBAAmB,wBAAuB,EAAK,QAAUib,EAAI2vC,gBAAgB,wBAAwB3vC,EAAI7jB,EAAE,QAAS,qBAAqB,MAAQ6jB,EAAIuvC,UAAU,SAAW,WAAW,KAAO,OAAOtqD,GAAG,CAAC,MAAQ,SAASqe,GAAQ,OAAOA,EAAOniB,OAAOsc,QAAQ,EAAE,wBAAwBuC,EAAI+vC,aAAahsD,YAAYic,EAAIxR,GAAG,CAAC,CAACC,IAAI,uBAAuBC,GAAG,WAAW,MAAO,CAACpB,EAAG,YAAY,CAACvI,MAAM,CAAC,KAAO,MAAM,EAAE4J,OAAM,OAAUqR,EAAIpS,GAAG,KAAKN,EAAG,KAAK,CAACA,EAAG,IAAI,CAACxI,YAAY,eAAeC,MAAM,CAAC,KAAOib,EAAIyvC,WAAW,OAAS,SAAS,IAAM,wBAAwB,CAACzvC,EAAIpS,GAAG,aAAaoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,qDAAqD,kBAAkB6jB,EAAIpS,GAAG,KAAKN,EAAG,MAAM0S,EAAIpS,GAAG,KAAKN,EAAG,KAAK,CAACA,EAAG,IAAI,CAACxI,YAAY,eAAeC,MAAM,CAAC,KAAOib,EAAI0vC,iBAAiB,CAAC1vC,EAAIpS,GAAG,aAAaoS,EAAInS,GAAGmS,EAAI7jB,EAAE,QAAS,0FAA0F,mBAAmB,IAAI,EACj2E,GACsB,IYUpB,EACA,KACA,WACA,MAI8B,QCsEhC,IACAgB,KAAA,aAEAC,WAAA,CACA4yD,IAAA,GACAC,gBAAA,GACAC,gBAAA,KACArC,oBAAA,KACA7C,iBAAA,KACAmF,cAAAA,IAGA3yD,MAAA,CAEA4yD,WAAA,CACA1yD,KAAA0yD,GACA55C,UAAA,IAIA2lB,MAAAA,KAEA,CACA6K,gBAFAN,OAMAznC,KAAAA,KACA,CACAoxD,gBAAA,IAIA7wD,SAAA,CACA8wD,gBAAA,IAAArQ,EAAAsQ,EACA,eAAAtQ,EAAA,KAAAxY,cAAA,IAAAwY,GAAA,QAAAsQ,EAAAtQ,EAAAuQ,cAAA,IAAAD,OAAA,EAAAA,EAAAxmC,OAAA,OACA,EAGAsd,cACA,YAAAyK,MAAAlxB,MAAAmJ,GAAAA,EAAA9jB,KAAA,KAAAqqD,eACA,EAGAxe,QACA,YAAAse,WAAAte,KACA,EAGA2e,cACA,YAAA3e,MAEArvC,QAAAsnB,IAAAA,EAAAzU,SAEAmG,MAAA,CAAAnf,EAAAkH,IACAlH,EAAA0pB,MAAAxiB,EAAAwiB,OAEA,EAGA0qC,aACA,YAAA5e,MAEArvC,QAAAsnB,KAAAA,EAAAzU,SAEAoG,QAAA,CAAAi1C,EAAA5mC,KACA4mC,EAAA5mC,EAAAzU,QAAA,IAAAq7C,EAAA5mC,EAAAzU,SAAA,GAAAyU,GAEA4mC,EAAA5mC,EAAAzU,QAAAmG,MAAA,CAAAnf,EAAAkH,IACAlH,EAAA0pB,MAAAxiB,EAAAwiB,QAEA2qC,IACA,GACA,GAGAjxD,MAAA,CACA2nC,YAAAtd,EAAA8hC,IAIA9hC,aAAA,EAAAA,EAAA9jB,OAAA4lD,aAAA,EAAAA,EAAA5lD,MAIA,KAAAmqD,WAAArG,UAAAhgC,GACA5J,GAAAwB,MAAA,sBAAA1b,GAAA8jB,EAAA9jB,GAAA8jB,SAEA,KAAA6mC,SAAA7mC,EAAA8hC,GACA,GAGAhhD,cACA,KAAAw8B,cACAlnB,GAAAwB,MAAA,8CAAAoI,KAAA,KAAAsd,cACA,KAAAupB,SAAA,KAAAvpB,eAGA3sB,EAAAA,EAAAA,IAAA,uCAAAm2C,4BAGAn2C,EAAAA,EAAAA,IAAA,sCACAyF,GAAAwB,MAAA,mCAAA0lB,cACA,KAAAupB,SAAA,KAAAvpB,YAAA,GAEA,EAEA1nC,QAAA,CAKAixD,SAAA7mC,EAAA8hC,GAAA,IAAAt/B,EAAAC,EAAAC,EAAAqkC,EAAAC,EAIA,GAFA,QAAAxkC,EAAAzpB,cAAA,IAAAypB,GAAA,QAAAC,EAAAD,EAAApO,WAAA,IAAAqO,GAAA,QAAAC,EAAAD,EAAApO,aAAA,IAAAqO,GAAA,QAAAqkC,EAAArkC,EAAAE,eAAA,IAAAmkC,GAAA,QAAAC,EAAAD,EAAA/kD,aAAA,IAAAglD,GAAAA,EAAAtsD,KAAAqsD,GAEA/mC,SAAAA,EAAA+/B,OAAA,CACA,MAAAkH,EAAAvyD,SAAAC,cAAA,kCAAA2oC,YAAAphC,GAAA,kBACAxH,SAAA6C,iBAAA,+BAAA8P,SAAAu5B,IACAA,EAAA3oC,UAAAE,IAAA,aAEA8uD,EAAAhvD,UAAAC,OAAA,UAGA,UAAAkhB,EAAA,KAAAxD,GAAAsxC,KAAAC,QAAAC,gBACAX,EAAA,CAAAY,OAAArnC,EAAA9jB,GAAAkd,OAEAhD,GAAAwB,MAAA,qCAAA6uC,GACA1tD,OAAAuuD,OAAAL,GAAAM,QAAA,IAAAxuD,OAAAuuD,OAAAE,MAAA,OAAAf,IACA1tD,OAAAuuD,OAAAL,GAAAM,QAAA,IAAAxuD,OAAAuuD,OAAAE,MAAA,aAAAf,GACA,CAEA,KAAAJ,WAAArG,UAAAhgC,GC/LO,SAAwBynC,GAC9B,MAAMC,EAAYhzD,SAAS4Y,eAAe,wBACtCo6C,IACHA,EAAU/3C,YAAc83C,EAE1B,CD2LAE,CAAA3nC,EAAA5sB,OACAitB,EAAAA,EAAAA,IAAA,2BAAAL,EACA,EAQA8mC,4BAAA,OAAA5qD,GAAA5F,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,IAAA4F,GAAA,SACA,MAAA8jB,EAAA,KAAAqmC,WAAAte,MAAAlxB,MAAAmJ,GAAAA,EAAA9jB,KAAAA,IACA8jB,GAAAA,EAAA+/B,QAAA//B,EAAA9jB,KAAA,KAAAohC,YAAAphC,KAGA,KAAA0rD,QAAAp/C,QAAA,SAAAk1B,OAAA+oB,OAAA,CAAAzmC,KAAAA,EAAA9jB,MACA,KAAAmqD,WAAArG,UAAAhgC,GACA,KAAA6mC,SAAA7mC,GAEA,EAQA6nC,eAAA7nC,GAEA,MAAA8nC,EAAA,KAAAA,WAAA9nC,GAEAA,EAAA6gC,UAAAiH,EACA,KAAA7qB,gBAAA9yB,OAAA6V,EAAA9jB,GAAA,YAAA4rD,EACA,EAQAA,WAAA9nC,GAAA,IAAA+nC,EACA,gCAAAA,EAAA,KAAA9qB,gBAAAL,UAAA5c,EAAA9jB,WAAA,IAAA6rD,OAAA,EAAAA,EAAAlH,WACA,SAAA5jB,gBAAAL,UAAA5c,EAAA9jB,IAAA2kD,UACA,IAAA7gC,EAAA6gC,QACA,EAOAmH,qBAAAhoC,GACA,GAAAA,EAAAymC,OAAA,CACA,UAAArtC,EAAA,OAAAxE,GAAAoL,EAAAymC,OACA,OAAArzD,KAAA,WAAAqzD,OAAAzmC,EAAAymC,OAAA/qC,MAAA,CAAAtC,MAAAxE,UACA,CACA,OAAAxhB,KAAA,WAAAqzD,OAAA,CAAAzmC,KAAAA,EAAA9jB,IACA,EAKA+rD,eACA,KAAA3B,gBAAA,CACA,EAKA4B,kBACA,KAAA5B,gBAAA,CACA,EAEAl0D,EAAA+pD,EAAAA,KExSuL,sBCWnL,GAAU,CAAC,EAEf,GAAQ9/C,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQE,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,I7BTW,WAAkB,IAAIsZ,EAAI7gB,KAAKmO,EAAG0S,EAAI3S,MAAMC,GAAG,OAAOA,EAAG,kBAAkB,CAACvI,MAAM,CAAC,2BAA2B,IAAIhB,YAAYic,EAAIxR,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,OAAOsR,EAAIuD,GAAIvD,EAAIywC,aAAa,SAAS1mC,GAAM,OAAOzc,EAAG,sBAAsB,CAACmB,IAAIsb,EAAK9jB,GAAGlB,MAAM,CAAC,kBAAiB,EAAK,gCAAgCglB,EAAK9jB,GAAG,KAAO8jB,EAAKtF,UAAU,KAAOzE,EAAI6xC,WAAW9nC,GAAM,OAASA,EAAK4gC,OAAO,MAAQ5gC,EAAK5sB,KAAK,GAAK6iB,EAAI+xC,qBAAqBhoC,IAAO9kB,GAAG,CAAC,cAAc,SAASqe,GAAQ,OAAOtD,EAAI4xC,eAAe7nC,EAAK,IAAI,CAAEA,EAAK/lB,KAAMsJ,EAAG,mBAAmB,CAACvI,MAAM,CAAC,KAAO,OAAO,IAAMglB,EAAK/lB,MAAMmB,KAAK,SAAS6a,EAAIlS,KAAKkS,EAAIpS,GAAG,KAAKoS,EAAIuD,GAAIvD,EAAI0wC,WAAW3mC,EAAK9jB,KAAK,SAAS61C,GAAO,OAAOxuC,EAAG,sBAAsB,CAACmB,IAAIqtC,EAAM71C,GAAGlB,MAAM,CAAC,gCAAgC+2C,EAAM71C,GAAG,OAAQ,EAAK,KAAO61C,EAAMr3B,UAAU,MAAQq3B,EAAM3+C,KAAK,GAAK6iB,EAAI+xC,qBAAqBjW,KAAS,CAAEA,EAAM93C,KAAMsJ,EAAG,mBAAmB,CAACvI,MAAM,CAAC,KAAO,OAAO,IAAM+2C,EAAM93C,MAAMmB,KAAK,SAAS6a,EAAIlS,MAAM,EAAE,KAAI,EAAE,GAAE,EAAEa,OAAM,GAAM,CAACF,IAAI,SAASC,GAAG,WAAW,MAAO,CAACpB,EAAG,KAAK,CAACxI,YAAY,kCAAkC,CAACwI,EAAG,mBAAmB0S,EAAIpS,GAAG,KAAKN,EAAG,sBAAsB,CAACvI,MAAM,CAAC,aAAaib,EAAI7jB,EAAE,QAAS,+BAA+B,MAAQ6jB,EAAI7jB,EAAE,QAAS,kBAAkB,2CAA2C,IAAI8I,GAAG,CAAC,MAAQ,SAASqe,GAAyD,OAAjDA,EAAOxhB,iBAAiBwhB,EAAOlhB,kBAAyB4d,EAAIgyC,aAAaljD,MAAM,KAAMzO,UAAU,IAAI,CAACiN,EAAG,MAAM,CAACvI,MAAM,CAAC,KAAO,OAAO,KAAO,IAAII,KAAK,UAAU,IAAI,GAAG,EAAEwJ,OAAM,MAAS,CAACqR,EAAIpS,GAAG,KAAKoS,EAAIpS,GAAG,KAAKN,EAAG,gBAAgB,CAACvI,MAAM,CAAC,KAAOib,EAAIqwC,eAAe,oCAAoC,IAAIprD,GAAG,CAAC,MAAQ+a,EAAIiyC,oBAAoB,EACtoD,GACsB,I6BUpB,EACA,KACA,WACA,MAI8B,QCuB1BC,GAAqB,SAAA1sC,GAA4E,IAAnE,GAAEvf,EAAE,KAAE9I,EAAI,MAAE6oB,EAAK,KAAEhiB,EAAI,OAAEsR,EAAM,QAAE68C,EAAU,GAAE,SAAEvH,EAAQ,OAAE4F,GAAQhrC,EACpG0G,IAAI9N,MAAMgyC,WAAWprC,SAAS,CAC7B/e,KACA9I,OACA6oB,QACAwqC,SACAl7C,SACAs1C,UAAuB,IAAbA,EACVnmC,UAAWzgB,EAAO,QAAH1E,OAAW0E,GAAS,YAAciC,EACjD6jD,QAAQ,EACRa,OAAQwH,EAAQlyD,SAAS,WAE3B,yCCtDA,MAEMunB,GAF2C,oBAAtB4qC,mBACvB/1D,gBAAgB+1D,kBAEd/1D,KACkB,oBAAXyG,OACHA,OACA4tB,WACG2hC,GAAQ7qC,GAAK6qC,MAAM9rD,KAAKihB,IACdA,GAAK8qC,QACL9qC,GAAK+qC,QACJ/qC,GAAKgrC,SCT7B,MAAMC,GAAmB,eACnBC,GAAO,OACb,SAASC,GAAc1jC,GACnB,MAAO,CACH2jC,SAAU3jC,EACVtvB,QAAS,CAACsvB,GACV4jC,OAAO,EAEf,CAIO,MAAMC,GACTjrC,cACI1oB,KAAK4zD,eAAiB,CAClBC,SAAU,CAAC,EACXC,eAAgB,QAEpB9zD,KAAK+zD,SAAWT,EACpB,CAKIU,oBACA,OAAOh0D,KAAK4zD,cAChB,CAKIE,qBACA,OAAO9zD,KAAKg0D,cAAcF,cAC9B,CACIA,mBAAeG,GACfj0D,KAAKg0D,cAAcF,eAAiBG,CACxC,CAUAC,QAAQlyD,EAAQmyD,GAAuB,GACnC,IAAKnyD,GAAUA,EAAO+xD,WAAaT,GAC/B,MAAM,IAAIn+C,MAAM,+EAapB,OAXA1V,OAAOuwB,KAAKhuB,EAAOgyD,cAAcH,UAAU5hD,SAAQmiD,IAC3Cp0D,KAAKg0D,cAAcH,SAAS58C,eAAem9C,GACvCD,IACAn0D,KAAKg0D,cAAcH,SAASO,GAAc30D,OAAO+T,OAAO,CAAC,EAAGxR,EAAOgyD,cAAcH,SAASO,KAI9Fp0D,KAAKg0D,cAAcH,SAASO,GAAc30D,OAAO+T,OAAO,CAAC,EAAGxR,EAAOgyD,cAAcH,SAASO,GAC9F,IAEJpyD,EAAO4xD,eAAiB5zD,KAAKg0D,cACtBh0D,IACX,CAQAq0D,QAAQ/kD,KAAQugB,GAEZ,OADe7vB,KAAK+W,IAAIzH,IAAQikD,OACf1jC,EACrB,CAUA9Y,IAAIzH,GACA,MAAMof,EAAO1uB,KAAKg0D,cAAcH,SAASvkD,GACzC,IAAKof,EACD,OAAQ1uB,KAAK8zD,gBACT,IAAK,OACD,OAAO,KACX,IAAK,QACD,MAAM,IAAI3+C,MAAM,oEAAoE7F,KACxF,QACI,MAAM,IAAI6F,MAAM,8FAA8FnV,KAAK8zD,kBAG/H,OChGD,YAAqBtzD,GACxB,GAAuB,IAAnBA,EAAQW,OACR,MAAM,IAAIgU,MAAM,mDAEpB,OAAO,YAA8B0a,GACjC,IAAIhE,EAASgE,EACb,MAAMsa,EAAQnqC,KACd,KAAOQ,EAAQW,OAAS,GAEpB0qB,EAAS,CADMrrB,EAAQ+7C,QACN5sC,MAAMw6B,EAAOte,IAElC,OAAOA,EAAO,EAClB,CACJ,CDmFeyoC,IAAY5lC,EAAKluB,QAC5B,CAMA+zD,UAAUjlD,GACN,QAAStP,KAAKg0D,cAAcH,SAASvkD,EACzC,CAQAklD,MAAMllD,EAAKwgB,EAAQ0B,EAAO,CAAC,GACvB,MAAM,MAAEijC,GAAQ,GAAUjjC,EAC1B,GAAIxxB,KAAKg0D,cAAcH,SAASvkD,IAAQtP,KAAKg0D,cAAcH,SAASvkD,GAAKokD,MACrE,MAAM,IAAIv+C,MAAM,oBAAoB7F,oCAExC,GAAsB,mBAAXwgB,EACP,MAAM,IAAI3a,MAAM,oBAAoB7F,yCAExC,GAAImlD,EAEKz0D,KAAKg0D,cAAcH,SAASvkD,GAM7BtP,KAAKg0D,cAAcH,SAASvkD,GAAK9O,QAAQ8S,KAAKwc,GAJ9C9vB,KAAKg0D,cAAcH,SAASvkD,GAAOkkD,GAAc1jC,QASrD,GAAI9vB,KAAKu0D,UAAUjlD,GAAM,CACrB,MAAM,SAAEmkD,GAAazzD,KAAKg0D,cAAcH,SAASvkD,GACjDtP,KAAKg0D,cAAcH,SAASvkD,GAAO7P,OAAO+T,OAAOggD,GAAc1jC,GAAS,CACpE2jC,YAER,MAEIzzD,KAAKg0D,cAAcH,SAASvkD,GAAOkkD,GAAc1jC,GAGzD,OAAO9vB,IACX,CAkBA00D,YAAYplD,EAAKwgB,KAAWD,GAIxB,OAHK7vB,KAAKu0D,UAAUjlD,IAChBtP,KAAKw0D,MAAMllD,EAAKwgB,GAEb9vB,KAAKq0D,QAAQ/kD,KAAQugB,EAChC,CASAzB,OAAO9e,KAAQ9O,GAIX,OAHAA,EAAQyR,SAAQ6d,IACZ9vB,KAAKw0D,MAAMllD,EAAKwgB,EAAQ,CAAE2kC,OAAO,GAAO,IAErCz0D,IACX,CAMA20D,QAAQrlD,GACJ,IAAKtP,KAAKu0D,UAAUjlD,GAChB,MAAM,IAAI6F,MAAM,uDAAuD7F,KAEtE,GAAyD,mBAA9CtP,KAAKg0D,cAAcH,SAASvkD,GAAKmkD,SAC7C,MAAM,IAAIt+C,MAAM,kFAAkF7F,KAGtG,OADAtP,KAAKg0D,cAAcH,SAASvkD,GAAK9O,QAAU,CAACR,KAAKg0D,cAAcH,SAASvkD,GAAKmkD,UACtEzzD,IACX,CAQA40D,SAAStlD,GACL,IAAKtP,KAAKg0D,cAAcH,SAAS58C,eAAe3H,GAC5C,MAAM,IAAI6F,MAAM,mBAAmB7F,wCAGvC,OADAtP,KAAKg0D,cAAcH,SAASvkD,GAAKokD,OAAQ,EAClC1zD,IACX,EElNJ,IAAI60D,GAAY,KCDT,SAASC,KACZ,MAAmB,kBAARC,MAA6B,IAARA,GAIpC,gBCHA,MAAMC,GAAc,mBAKb,SAASC,GAAyBxkD,EAASykD,GAC9C,MAAM/rC,EAAM1Y,EAAQ0Y,IAAI/V,QAAQ,KAAM,IAChC+hD,GAA2B,GAArBhsC,EAAIpqB,QAAQ,KAAa,IAAMoqB,EAAIniB,MAAMmiB,EAAIpqB,QAAQ,MAC3D+wB,EAASrf,EAAQqf,OAASrf,EAAQqf,OAAOslC,cAAgB,MACzDC,IAAM,uBAAuBz8C,KAAKs8C,EAAOG,MAAO,OAChDC,EAAW,WAAWJ,EAAO5/C,KAAKtO,OAAO,GACzCuuD,ECZH,SAAoBC,EAAWnuC,EAAMouC,EAAOC,EAAMC,EAAOC,EAAQL,GACpE,MAAMM,EAAUN,GAAOO,GAAI,GAAGzuC,KAAQouC,KAASC,KAC/C,OAAIF,GAAyC,aAA5BA,EAAUvhC,cAChB6hC,GAAI,GAAGD,KAAWF,KAASC,KAE/BC,CACX,CDMgBE,CAAWb,EAAOM,UAAWN,EAAOc,SAAUd,EAAOO,MAAOP,EAAOe,SAAUf,EAAOS,MAAOT,EAAOU,OAAQV,EAAOK,KACvHW,EAAMJ,GAAI,GAAGhmC,KAAUqlC,KACvBgB,EACAL,GADiBT,EACb,GAAGE,KAAOL,EAAOS,SAASL,KAAYJ,EAAOU,UAAUP,KAAOa,IAC9D,GAAGX,KAAOL,EAAOS,SAASO,KAC9BE,EAAa,CACfJ,SAAUd,EAAOc,SACjBP,MAAOP,EAAOO,MACdE,MAAOT,EAAOS,MACdR,MACAE,MACArvC,SAAUmwC,EACV7gD,GAAIggD,EACJM,OAAQV,EAAOU,OACfJ,UAAWN,EAAOM,UAClBa,OAAQnB,EAAOmB,QAEbC,EAAa,GACnB,IAAK,MAAM7xD,KAAK2xD,EACRA,EAAW3xD,KACD,QAANA,GAAqB,OAANA,GAAoB,cAANA,EAC7B6xD,EAAWhjD,KAAK,GAAG7O,KAAK2xD,EAAW3xD,MAGnC6xD,EAAWhjD,KAAK,GAAG7O,MAAM2xD,EAAW3xD,QAIhD,MAAO,UAAU6xD,EAAWx5D,KAAK,OACrC,CE1CO,SAAS,GAAaqiC,GACzB,OAIJ,SAAuBA,GACnB,GAAmB,iBAARA,GACC,OAARA,GACuC,mBAAvC1/B,OAAOuX,UAAUtQ,SAASpB,KAAK65B,GAE/B,OAAO,EAEX,GAAmC,OAA/B1/B,OAAO82D,eAAep3B,GACtB,OAAO,EAEX,IAAIq3B,EAAQr3B,EAEZ,KAAwC,OAAjC1/B,OAAO82D,eAAeC,IACzBA,EAAQ/2D,OAAO82D,eAAeC,GAElC,OAAO/2D,OAAO82D,eAAep3B,KAASq3B,CAC1C,CApBW,CAAcr3B,GACf1/B,OAAO+T,OAAO,CAAC,EAAG2rB,GAClB1/B,OAAOg3D,eAAeh3D,OAAO+T,OAAO,CAAC,EAAG2rB,GAAM1/B,OAAO82D,eAAep3B,GAC9E,CAkBO,SAASu3B,MAAS7mC,GACrB,IAAI8mC,EAAS,KAAM3kD,EAAQ,IAAI6d,GAC/B,KAAO7d,EAAM7Q,OAAS,GAAG,CACrB,MAAMy1D,EAAW5kD,EAAMuqC,QAKnBoa,EAJCA,EAIQE,GAAaF,EAAQC,GAHrB,GAAaA,EAK9B,CACA,OAAOD,CACX,CACA,SAASE,GAAaC,EAAMC,GACxB,MAAMJ,EAAS,GAAaG,GAqB5B,OApBAr3D,OAAOuwB,KAAK+mC,GAAM9kD,SAAQ3C,IACjBqnD,EAAO1/C,eAAe3H,GAIvB9E,MAAM6I,QAAQ0jD,EAAKznD,IACnBqnD,EAAOrnD,GAAO9E,MAAM6I,QAAQsjD,EAAOrnD,IAC7B,IAAIqnD,EAAOrnD,MAASynD,EAAKznD,IACzB,IAAIynD,EAAKznD,IAEW,iBAAdynD,EAAKznD,IAAuBynD,EAAKznD,GAC7CqnD,EAAOrnD,GACoB,iBAAhBqnD,EAAOrnD,IAAuBqnD,EAAOrnD,GACtCunD,GAAaF,EAAOrnD,GAAMynD,EAAKznD,IAC/B,GAAaynD,EAAKznD,IAG5BqnD,EAAOrnD,GAAOynD,EAAKznD,GAfnBqnD,EAAOrnD,GAAOynD,EAAKznD,EAgBvB,IAEGqnD,CACX,CCnDO,SAAS,MAAgBK,GAC5B,GAA8B,IAA1BA,EAAe71D,OACf,MAAO,CAAC,EACZ,MAAM81D,EAAa,CAAC,EACpB,OAAOD,EAAez6C,QAAO,CAACo6C,EAAQjQ,KAClCjnD,OAAOuwB,KAAK02B,GAASz0C,SAAQilD,IACzB,MAAMC,EAAcD,EAAOjjC,cACvBgjC,EAAWhgD,eAAekgD,GAC1BR,EAAOM,EAAWE,IAAgBzQ,EAAQwQ,IAG1CD,EAAWE,GAAeD,EAC1BP,EAAOO,GAAUxQ,EAAQwQ,GAC7B,IAEGP,IACR,CAAC,EACR,iBCxBA,MAAMS,GAAwC,mBAAhBC,aACtB3wD,SAAU4wD,IAAgB73D,OAAOuX,UCQzC,SAASugD,GAASC,GACd,MAAMC,GPPD5C,KACDA,GAAY,IAAIlB,IAEbkB,IOKP,OAAO4C,EAAQ/C,YAAY,WAAYjkD,GAAYgnD,EAAQ/C,YAAY,QAASxB,GAAOziD,EAAQ0Y,IAEnG,SAAyBquC,GACrB,IAAI9Q,EAAU,CAAC,EAEf,MAAMl1B,EAAO,CACT1B,OAAQ0nC,EAAe1nC,QAK3B,GAHI0nC,EAAe9Q,UACfA,EAAU,GAAaA,EAAS8Q,EAAe9Q,eAEhB,IAAxB8Q,EAAe13D,KAAsB,CAC5C,MAAOsM,EAAMsrD,GCnBd,SAAgC53D,GACnC,IAAKg1D,MAAWh1D,aAAgB,YAE5B,MAAO,CAACA,EAAM,CAAC,GAEnB,GAAoB,iBAATA,EACP,MAAO,CAACA,EAAM,CAAC,GAEd,GCXY,OADIwO,EDYHxO,ICVO,MAArBwO,EAAMoa,aACgC,mBAA/Bpa,EAAMoa,YAAYivC,UACzBrpD,EAAMoa,YAAYivC,SAASrpD,GDS3B,MAAO,CAACxO,EAAM,CAAC,GAEd,GFZF,SAAuBwO,GAC1B,OAAQ8oD,KACH9oD,aAAiB+oD,aAA2C,yBAA5BC,GAAYhyD,KAAKgJ,GAC1D,CESaspD,CAAc93D,GACnB,MAAO,CAACA,EAAM,CAAC,GAEd,GAAIA,GAAwB,iBAATA,EACpB,MAAO,CACHoU,KAAKC,UAAUrU,GACf,CACI,eAAgB,qBCtBzB,IAAkBwO,ED0BrB,MAAM,IAAI6G,MAAM,gEAAgErV,EACpF,CDJmC+3D,CAAuBL,EAAe13D,MACjE0xB,EAAKplB,KAAOA,EACZs6C,EAAU,GAAaA,EAASgR,EACpC,CAoBA,OAnBIF,EAAeM,SACftmC,EAAKsmC,OAASN,EAAeM,QAE7BN,EAAeO,kBACfvmC,EAAKwmC,YAAc,WAGlBlD,OACG0C,EAAeS,WAAaT,EAAeU,cAC3C1mC,EAAK2mC,MAASC,GACiB,UAAvBA,EAAUC,SACHb,EAAeS,WAAa,IAAI,SAEpCT,EAAeU,YAAc,IAAI,UAKpD1mC,EAAKk1B,QAAUA,EACRl1B,CACX,CApCwG8mC,CAAgB7nD,KAAW+mD,EACnI,QGRO,MAAMe,GAAW,UAAHp4D,OAA6B,QAA7ByrB,IAAa1L,EAAAA,EAAAA,aAAgB,IAAA0L,QAAA,EAAhBA,GAAkBnE,KACvC+wC,IAAiBnI,EAAAA,EAAAA,mBAAkB,MAAQkI,ICiBlDE,GAAuB,CACzB,qBACA,mBACA,YACA,oBACA,0BACA,iBACA,iBACA,kBACA,gBACA,sBACA,qBACA,cACA,YACA,wBACA,cACA,iBACA,iBACA,UACA,yBAEEC,GAAuB,CACzBt7D,EAAG,OACHkY,GAAI,0BACJqjD,GAAI,yBACJ32C,IAAK,6CAiCI42C,GAAmB,WAI5B,YAHyC,IAA9Bj1D,OAAOk1D,qBACdl1D,OAAOk1D,mBAAqBJ,IAEzB90D,OAAOk1D,mBAAmBj8D,KAAIgsB,GAAQ,IAAJzoB,OAAQyoB,EAAI,SAAO9rB,KAAK,IACrE,EAIag8D,GAAmB,WAI5B,YAHyC,IAA9Bn1D,OAAOo1D,qBACdp1D,OAAOo1D,mBAAqBL,IAEzBj5D,OAAOuwB,KAAKrsB,OAAOo1D,oBAAoBn8D,KAAIo8D,GAAM,SAAJ74D,OAAa64D,EAAE,MAAA74D,OAAKwD,OAAOo1D,mBAAmBC,GAAG,OAAKl8D,KAAK,IACnH,EAIam8D,GAAqB,WAC9B,MAAO,0CAAP94D,OACY24D,KAAkB,+BAAA34D,OAE5By4D,KAAkB,uCAGxB,EC/EMM,GFpBmB,WAA8B,IAA7BC,EAAOj4D,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,GAAGs3D,GAChC,MAAMU,GAASE,EAAAA,GAAAA,IAAaD,EAAS,CACjCzS,QAAS,CACL2S,cAAcC,EAAAA,EAAAA,OAAqB,MAmB3C,OAXgBC,EAAAA,GAAAA,MAIR/E,MAAM,WAAY/jD,IAAY,IAAA+oD,EAKlC,OAJmB,QAAnBA,EAAI/oD,EAAQi2C,eAAO,IAAA8S,GAAfA,EAAiB1pC,SACjBrf,EAAQqf,OAASrf,EAAQi2C,QAAQ52B,cAC1Brf,EAAQi2C,QAAQ52B,QH+C5B9iB,eAAuBwqD,GAE1B,IAAKA,EAAeiC,QAChB,OAAOlC,GAASC,GAGpB,MAAMiC,EAAUjC,EAAeiC,eACxBjC,EAAeiC,QAElBA,EAAQC,gBACRlC,EAAiBd,GAAMc,EAAgB,CACnC9Q,QAAS,CACLiT,cAAe1E,GAAyBuC,EAAgBiC,OAKpE,MAAMzzC,QAAiBuxC,GAASC,GAChC,GAAuB,KAAnBxxC,EAAS3C,QAET,GADAo2C,EAAQC,cLxCT,SAAyB1zC,EAAUyzC,GACtC,MAAMnD,EAActwC,EAAS0gC,SAAW1gC,EAAS0gC,QAAQ3vC,IAAI,qBAAwB,GACrF,GAAgD,WAA5Cu/C,EAAW35D,MAAM,MAAM,GAAGs3B,cAC1B,OAAO,EAEX,MAAM2lC,EAAK,8CACX,OAAS,CACL,MAAM/xC,EAAQ+xC,EAAGzvC,KAAKmsC,GACtB,IAAKzuC,EACD,MAEJ4xC,EAAQ5xC,EAAM,IAAMA,EAAM,IAAMA,EAAM,EAC1C,CAGA,OAFA4xC,EAAQnkD,IAAM,EACdmkD,EAAQ7D,OArBZ,WACI,IAAInuC,EAAM,GACV,IAAK,IAAIjqB,EAAI,EAAGA,EA1CD,KA0CmBA,EAC9BiqB,EAAM,GAAGA,IAAMutC,GAAY9hD,KAAK+I,MAAsB+4C,GAAhB9hD,KAAKC,aAE/C,OAAOsU,CACX,CAeqBoyC,IACV,CACX,CKwBgCC,CAAgB9zC,EAAUyzC,GAC9CA,EAAQC,cAAe,CACvBlC,EAAiBd,GAAMc,EAAgB,CACnC9Q,QAAS,CACLiT,cAAe1E,GAAyBuC,EAAgBiC,MAGhE,MAAMM,QAAkBxC,GAASC,GAOjC,OANwB,KAApBuC,EAAU12C,OACVo2C,EAAQC,eAAgB,EAGxBD,EAAQnkD,KAELykD,CACX,OAGAN,EAAQnkD,KAEZ,OAAO0Q,CACX,CGrFeg0C,CAAQvpD,EAAQ,IAEpByoD,CACX,CEHee,GACTC,GAAgB,2CAAH/5D,OACA24D,KAAkB,uBAAA34D,OAEjCy4D,KAAkB,kHAMhBuB,GAAe,SAAUtvC,GAAM,IAAAe,EACjC,MAAMvtB,EAAQwsB,EAAKxsB,MACb4pB,ExJkNqB,SAAUmyC,EAAa,IAClD,IAAInyC,EAAcV,GAAWW,KAC7B,OAAKkyC,IAEDA,EAAWt5D,SAAS,MAAQs5D,EAAWt5D,SAAS,QAChDmnB,GAAeV,GAAW8yC,QAC1BD,EAAWt5D,SAAS,OACpBmnB,GAAeV,GAAW8B,OAC1B+wC,EAAWt5D,SAAS,MAAQs5D,EAAWt5D,SAAS,MAAQs5D,EAAWt5D,SAAS,QAC5EmnB,GAAeV,GAAWmE,QAC1B0uC,EAAWt5D,SAAS,OACpBmnB,GAAeV,GAAWwD,QAC1BqvC,EAAWt5D,SAAS,OACpBmnB,GAAeV,GAAW+yC,OACvBryC,GAXIA,CAYf,CwJjOwBsyC,CAAuBl8D,aAAK,EAALA,EAAO4pB,aAC5CG,EAAwB,QAAnBwD,GAAG1L,EAAAA,EAAAA,aAAgB,IAAA0L,OAAA,EAAhBA,EAAkBnE,IAC1B+yC,EAAW,CACb1zD,IAAIzI,aAAK,EAALA,EAAOmhB,SAAU,EACrBmI,QAAQ0oC,EAAAA,EAAAA,mBAAkB,MAAQkI,GAAW1tC,EAAKpL,UAClDsI,MAAO,IAAInf,KAAKiiB,EAAK4vC,SACrB76C,KAAMiL,EAAKjL,KACX3Z,MAAM5H,aAAK,EAALA,EAAO4H,OAAQ,EACrBgiB,cACAG,QACAC,KAAMkwC,GACNljD,WAAY,IACLwV,KACAxsB,EACHshB,WAAYthB,aAAK,EAALA,EAAQ,iBAI5B,cADOm8D,EAASnlD,WAAWhX,MACN,SAAdwsB,EAAKtsB,KACN,IAAImrB,GAAK8wC,GACT,IAAI7wC,GAAO6wC,EACrB,EACa1P,GAAc99C,iBAAsB,IAAA0tD,EAAA,IAAfh+D,EAAIwE,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,GAAG,IACrC,MAAMy5D,EAAkB1B,KAExB,IAAI2B,EACS,MAATl+D,IACAk+D,QAAqB1B,GAAO2B,KAAKn+D,EAAM,CACnCo+D,SAAS,EACTh7D,KAAMm5D,QAGd,MAAM8B,QAAyB7B,GAAO8B,qBAAqBt+D,EAAM,CAC7Do+D,SAAS,EAETh7D,KAAe,MAATpD,EAAew9D,GAAgBS,EACrCjU,QAAS,CAEL52B,OAAiB,MAATpzB,EAAe,SAAW,YAEtCu+D,aAAa,IAEX5yC,GAAmB,QAAZqyC,EAAAE,SAAY,IAAAF,OAAA,EAAZA,EAAc56D,OAAQi7D,EAAiBj7D,KAAK,GACnDstD,EAAW2N,EAAiBj7D,KAAKwD,QAAOunB,GAAQA,EAAKpL,WAAa/iB,IACxE,MAAO,CACHywD,OAAQgN,GAAa9xC,GACrB+kC,SAAUA,EAASxwD,IAAIu9D,IAE/B,EC5Eae,GAAqB,SAAU/N,GAAmB,IAAXrnC,EAAK5kB,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,GAAAA,UAAA,GAAG,EACxD,MAAO,CACH4F,GAAIq0D,GAAmBhO,GACvBnvD,MAAMshB,EAAAA,EAAAA,UAAS6tC,GACftoD,KAAMioB,GACNjG,MAAOf,EACPurC,OAAQ,CACJrtC,IAAKmpC,EACLviC,KAAM,aAEVzU,OAAQ,YACR0qC,QAAS,GACTiK,YAAWA,GAEnB,EACaqQ,GAAqB,SAAUz+D,GACxC,MAAO,YAAPyD,OAAmBw+C,GAASjiD,GAChC,kBCRA,SAASooB,GAAQ3nB,EAAGkH,GAClB,IAAK,IAAIiL,KAAOjL,EACdlH,EAAEmS,GAAOjL,EAAEiL,GAEb,OAAOnS,CACT,CAIA,IAAIi+D,GAAkB,WAClBC,GAAwB,SAAUx9D,GAAK,MAAO,IAAMA,EAAEghD,WAAW,GAAGn4C,SAAS,GAAK,EAClF40D,GAAU,OAKVC,GAAS,SAAU3c,GAAO,OAAO/hD,mBAAmB+hD,GACnDxrC,QAAQgoD,GAAiBC,IACzBjoD,QAAQkoD,GAAS,IAAM,EAE5B,SAASE,GAAQ5c,GACf,IACE,OAAO6c,mBAAmB7c,EAC5B,CAAE,MAAO8c,GAIT,CACA,OAAO9c,CACT,CA0BA,IAAI+c,GAAsB,SAAUrtD,GAAS,OAAiB,MAATA,GAAkC,iBAAVA,EAAqBA,EAAQ1P,OAAO0P,EAAS,EAE1H,SAASstD,GAAYt1C,GACnB,IAAIu1C,EAAM,CAAC,EAIX,OAFAv1C,EAAQA,EAAMjhB,OAAO+N,QAAQ,YAAa,MAM1CkT,EAAM3pB,MAAM,KAAKsV,SAAQ,SAAU6pD,GACjC,IAAIC,EAAQD,EAAM1oD,QAAQ,MAAO,KAAKzW,MAAM,KACxC2S,EAAMksD,GAAOO,EAAMxf,SACnByf,EAAMD,EAAM56D,OAAS,EAAIq6D,GAAOO,EAAMj/D,KAAK,MAAQ,UAEtC6K,IAAbk0D,EAAIvsD,GACNusD,EAAIvsD,GAAO0sD,EACFxxD,MAAM6I,QAAQwoD,EAAIvsD,IAC3BusD,EAAIvsD,GAAKgE,KAAK0oD,GAEdH,EAAIvsD,GAAO,CAACusD,EAAIvsD,GAAM0sD,EAE1B,IAEOH,GAjBEA,CAkBX,CAEA,SAASI,GAAgB98B,GACvB,IAAI08B,EAAM18B,EACN1/B,OAAOuwB,KAAKmP,GACXviC,KAAI,SAAU0S,GACb,IAAI0sD,EAAM78B,EAAI7vB,GAEd,QAAY3H,IAARq0D,EACF,MAAO,GAGT,GAAY,OAARA,EACF,OAAOT,GAAOjsD,GAGhB,GAAI9E,MAAM6I,QAAQ2oD,GAAM,CACtB,IAAInwC,EAAS,GAWb,OAVAmwC,EAAI/pD,SAAQ,SAAUq5B,QACP3jC,IAAT2jC,IAGS,OAATA,EACFzf,EAAOvY,KAAKioD,GAAOjsD,IAEnBuc,EAAOvY,KAAKioD,GAAOjsD,GAAO,IAAMisD,GAAOjwB,IAE3C,IACOzf,EAAO/uB,KAAK,IACrB,CAEA,OAAOy+D,GAAOjsD,GAAO,IAAMisD,GAAOS,EACpC,IACC14D,QAAO,SAAUyB,GAAK,OAAOA,EAAE5D,OAAS,CAAG,IAC3CrE,KAAK,KACN,KACJ,OAAO++D,EAAO,IAAMA,EAAO,EAC7B,CAIA,IAAIK,GAAkB,OAEtB,SAASC,GACPC,EACAx4D,EACAy4D,EACAC,GAEA,IAAIL,EAAiBK,GAAUA,EAAO7rD,QAAQwrD,eAE1C31C,EAAQ1iB,EAAS0iB,OAAS,CAAC,EAC/B,IACEA,EAAQi2C,GAAMj2C,EAChB,CAAE,MAAOvpB,GAAI,CAEb,IAAIy/D,EAAQ,CACVx+D,KAAM4F,EAAS5F,MAASo+D,GAAUA,EAAOp+D,KACzCy+D,KAAOL,GAAUA,EAAOK,MAAS,CAAC,EAClC//D,KAAMkH,EAASlH,MAAQ,IACvBggE,KAAM94D,EAAS84D,MAAQ,GACvBp2C,MAAOA,EACP+qC,OAAQztD,EAASytD,QAAU,CAAC,EAC5BsL,SAAUC,GAAYh5D,EAAUq4D,GAChCY,QAAST,EAASU,GAAYV,GAAU,IAK1C,OAHIC,IACFG,EAAMH,eAAiBO,GAAYP,EAAgBJ,IAE9Cx8D,OAAOs9D,OAAOP,EACvB,CAEA,SAASD,GAAOjuD,GACd,GAAI9D,MAAM6I,QAAQ/E,GAChB,OAAOA,EAAM1R,IAAI2/D,IACZ,GAAIjuD,GAA0B,iBAAVA,EAAoB,CAC7C,IAAIutD,EAAM,CAAC,EACX,IAAK,IAAIvsD,KAAOhB,EACdutD,EAAIvsD,GAAOitD,GAAMjuD,EAAMgB,IAEzB,OAAOusD,CACT,CACE,OAAOvtD,CAEX,CAGA,IAAI0uD,GAAQb,GAAY,KAAM,CAC5Bz/D,KAAM,MAGR,SAASogE,GAAaV,GAEpB,IADA,IAAIP,EAAM,GACHO,GACLP,EAAI3iC,QAAQkjC,GACZA,EAASA,EAAOjmD,OAElB,OAAO0lD,CACT,CAEA,SAASe,GACP/2D,EACAo3D,GAEA,IAAIvgE,EAAOmJ,EAAInJ,KACX4pB,EAAQzgB,EAAIygB,WAAsB,IAAVA,IAAmBA,EAAQ,CAAC,GACxD,IAAIo2C,EAAO72D,EAAI62D,KAGf,YAHmC,IAATA,IAAkBA,EAAO,KAG3ChgE,GAAQ,MADAugE,GAAmBhB,IACF31C,GAASo2C,CAC5C,CAEA,SAASQ,GAAa//D,EAAGkH,EAAG84D,GAC1B,OAAI94D,IAAM24D,GACD7/D,IAAMkH,IACHA,IAEDlH,EAAET,MAAQ2H,EAAE3H,KACdS,EAAET,KAAK0W,QAAQ8oD,GAAiB,MAAQ73D,EAAE3H,KAAK0W,QAAQ8oD,GAAiB,MAAQiB,GACrFhgE,EAAEu/D,OAASr4D,EAAEq4D,MACbU,GAAcjgE,EAAEmpB,MAAOjiB,EAAEiiB,WAClBnpB,EAAEa,OAAQqG,EAAErG,OAEnBb,EAAEa,OAASqG,EAAErG,OACZm/D,GACChgE,EAAEu/D,OAASr4D,EAAEq4D,MACfU,GAAcjgE,EAAEmpB,MAAOjiB,EAAEiiB,QACzB82C,GAAcjgE,EAAEk0D,OAAQhtD,EAAEgtD,SAMhC,CAEA,SAAS+L,GAAejgE,EAAGkH,GAKzB,QAJW,IAANlH,IAAeA,EAAI,CAAC,QACd,IAANkH,IAAeA,EAAI,CAAC,IAGpBlH,IAAMkH,EAAK,OAAOlH,IAAMkH,EAC7B,IAAIg5D,EAAQ59D,OAAOuwB,KAAK7yB,GAAGmf,OACvBghD,EAAQ79D,OAAOuwB,KAAK3rB,GAAGiY,OAC3B,OAAI+gD,EAAMl8D,SAAWm8D,EAAMn8D,QAGpBk8D,EAAM95D,OAAM,SAAU+L,EAAK9R,GAChC,IAAI+/D,EAAOpgE,EAAEmS,GAEb,GADWguD,EAAM9/D,KACJ8R,EAAO,OAAO,EAC3B,IAAIkuD,EAAOn5D,EAAEiL,GAEb,OAAY,MAARiuD,GAAwB,MAARC,EAAuBD,IAASC,EAEhC,iBAATD,GAAqC,iBAATC,EAC9BJ,GAAcG,EAAMC,GAEtB5+D,OAAO2+D,KAAU3+D,OAAO4+D,EACjC,GACF,CAqBA,SAASC,GAAoBjB,GAC3B,IAAK,IAAIh/D,EAAI,EAAGA,EAAIg/D,EAAMK,QAAQ17D,OAAQ3D,IAAK,CAC7C,IAAI4+D,EAASI,EAAMK,QAAQr/D,GAC3B,IAAK,IAAIQ,KAAQo+D,EAAOsB,UAAW,CACjC,IAAIhyB,EAAW0wB,EAAOsB,UAAU1/D,GAC5B2/D,EAAMvB,EAAOwB,WAAW5/D,GAC5B,GAAK0tC,GAAaiyB,EAAlB,QACOvB,EAAOwB,WAAW5/D,GACzB,IAAK,IAAI6/D,EAAM,EAAGA,EAAMF,EAAIx8D,OAAQ08D,IAC7BnyB,EAASoyB,mBAAqBH,EAAIE,GAAKnyB,EAHZ,CAKpC,CACF,CACF,CAEA,IAAI,GAAO,CACT1tC,KAAM,aACN+X,YAAY,EACZ1X,MAAO,CACLL,KAAM,CACJO,KAAMK,OACNvB,QAAS,YAGb+F,OAAQ,SAAiBsE,EAAG7B,GAC1B,IAAIxH,EAAQwH,EAAIxH,MACZ8G,EAAWU,EAAIV,SACfgR,EAAStQ,EAAIsQ,OACbrW,EAAO+F,EAAI/F,KAGfA,EAAKi+D,YAAa,EAalB,IATA,IAAI75D,EAAIiS,EAAOwzB,eACX3rC,EAAOK,EAAML,KACbw+D,EAAQrmD,EAAOmyB,OACfwb,EAAQ3tC,EAAO6nD,mBAAqB7nD,EAAO6nD,iBAAmB,CAAC,GAI/DC,EAAQ,EACRC,GAAW,EACR/nD,GAAUA,EAAOgoD,cAAgBhoD,GAAQ,CAC9C,IAAIioD,EAAYjoD,EAAOF,OAASE,EAAOF,OAAOnW,KAAO,CAAC,EAClDs+D,EAAUL,YACZE,IAEEG,EAAUC,WAAaloD,EAAOmoD,iBAAmBnoD,EAAOooD,YAC1DL,GAAW,GAEb/nD,EAASA,EAAOkD,OAClB,CAIA,GAHAvZ,EAAK0+D,gBAAkBP,EAGnBC,EAAU,CACZ,IAAIO,EAAa3a,EAAM9lD,GACnB0gE,EAAkBD,GAAcA,EAAWn0B,UAC/C,OAAIo0B,GAGED,EAAWE,aACbC,GAAgBF,EAAiB5+D,EAAM2+D,EAAWjC,MAAOiC,EAAWE,aAE/Dz6D,EAAEw6D,EAAiB5+D,EAAMqF,IAGzBjB,GAEX,CAEA,IAAI24D,EAAUL,EAAMK,QAAQoB,GACxB3zB,EAAYuyB,GAAWA,EAAQ5+D,WAAWD,GAG9C,IAAK6+D,IAAYvyB,EAEf,OADAwZ,EAAM9lD,GAAQ,KACPkG,IAIT4/C,EAAM9lD,GAAQ,CAAEssC,UAAWA,GAI3BxqC,EAAK++D,sBAAwB,SAAUC,EAAI9C,GAEzC,IAAIvrB,EAAUosB,EAAQa,UAAU1/D,IAE7Bg+D,GAAOvrB,IAAYquB,IAClB9C,GAAOvrB,IAAYquB,KAErBjC,EAAQa,UAAU1/D,GAAQg+D,EAE9B,GAIEl8D,EAAKuuB,OAASvuB,EAAKuuB,KAAO,CAAC,IAAI0wC,SAAW,SAAUr3D,EAAG+jC,GACvDoxB,EAAQa,UAAU1/D,GAAQytC,EAAMhU,iBAClC,EAIA33B,EAAKuuB,KAAK8a,KAAO,SAAUsC,GACrBA,EAAM3rC,KAAKu+D,WACb5yB,EAAMhU,mBACNgU,EAAMhU,oBAAsBolC,EAAQa,UAAU1/D,KAE9C6+D,EAAQa,UAAU1/D,GAAQytC,EAAMhU,mBAMlCgmC,GAAmBjB,EACrB,EAEA,IAAImC,EAAc9B,EAAQx+D,OAASw+D,EAAQx+D,MAAML,GAUjD,OARI2gE,IACF75C,GAAOg/B,EAAM9lD,GAAO,CAClBw+D,MAAOA,EACPmC,YAAaA,IAEfC,GAAgBt0B,EAAWxqC,EAAM08D,EAAOmC,IAGnCz6D,EAAEomC,EAAWxqC,EAAMqF,EAC5B,GAGF,SAASy5D,GAAiBt0B,EAAWxqC,EAAM08D,EAAOmC,GAEhD,IAAIK,EAAcl/D,EAAKzB,MAezB,SAAuBm+D,EAAOxuB,GAC5B,cAAeA,GACb,IAAK,YACH,OACF,IAAK,SACH,OAAOA,EACT,IAAK,WACH,OAAOA,EAAOwuB,GAChB,IAAK,UACH,OAAOxuB,EAASwuB,EAAMnL,YAAS1pD,EAUrC,CAlCiCs3D,CAAazC,EAAOmC,GACnD,GAAIK,EAAa,CAEfA,EAAcl/D,EAAKzB,MAAQymB,GAAO,CAAC,EAAGk6C,GAEtC,IAAIp5D,EAAQ9F,EAAK8F,MAAQ9F,EAAK8F,OAAS,CAAC,EACxC,IAAK,IAAI0J,KAAO0vD,EACT10B,EAAUjsC,OAAWiR,KAAOg7B,EAAUjsC,QACzCuH,EAAM0J,GAAO0vD,EAAY1vD,UAClB0vD,EAAY1vD,GAGzB,CACF,CAyBA,SAAS4vD,GACP5P,EACAj7C,EACAgoC,GAEA,IAAI8iB,EAAY7P,EAAS8P,OAAO,GAChC,GAAkB,MAAdD,EACF,OAAO7P,EAGT,GAAkB,MAAd6P,GAAmC,MAAdA,EACvB,OAAO9qD,EAAOi7C,EAGhB,IAAI+P,EAAQhrD,EAAK1X,MAAM,KAKlB0/C,GAAWgjB,EAAMA,EAAMl+D,OAAS,IACnCk+D,EAAM/1C,MAKR,IADA,IAAIg2C,EAAWhQ,EAASl8C,QAAQ,MAAO,IAAIzW,MAAM,KACxCa,EAAI,EAAGA,EAAI8hE,EAASn+D,OAAQ3D,IAAK,CACxC,IAAI+hE,EAAUD,EAAS9hE,GACP,OAAZ+hE,EACFF,EAAM/1C,MACe,MAAZi2C,GACTF,EAAM/rD,KAAKisD,EAEf,CAOA,MAJiB,KAAbF,EAAM,IACRA,EAAMnmC,QAAQ,IAGTmmC,EAAMviE,KAAK,IACpB,CAyBA,SAAS0iE,GAAW9iE,GAClB,OAAOA,EAAK0W,QAAQ,gBAAiB,IACvC,CAEA,IAAIqsD,GAAUj1D,MAAM6I,SAAW,SAAUw3B,GACvC,MAA8C,kBAAvCprC,OAAOuX,UAAUtQ,SAASpB,KAAKulC,EACxC,EAKI60B,GAmZJ,SAASC,EAAcjjE,EAAMszB,EAAMvf,GAQjC,OAPKgvD,GAAQzvC,KACXvf,EAAkCuf,GAAQvf,EAC1Cuf,EAAO,IAGTvf,EAAUA,GAAW,CAAC,EAElB/T,aAAgBkjE,OAlJtB,SAAyBljE,EAAMszB,GAE7B,IAAI6vC,EAASnjE,EAAKirB,OAAOE,MAAM,aAE/B,GAAIg4C,EACF,IAAK,IAAIriE,EAAI,EAAGA,EAAIqiE,EAAO1+D,OAAQ3D,IACjCwyB,EAAK1c,KAAK,CACRtV,KAAMR,EACNq8C,OAAQ,KACRimB,UAAW,KACXC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,QAAS,OAKf,OAAOC,GAAW1jE,EAAMszB,EAC1B,CA+HWqwC,CAAe3jE,EAA4B,GAGhD+iE,GAAQ/iE,GAxHd,SAAwBA,EAAMszB,EAAMvf,GAGlC,IAFA,IAAIsrD,EAAQ,GAEHv+D,EAAI,EAAGA,EAAId,EAAKyE,OAAQ3D,IAC/Bu+D,EAAMzoD,KAAKqsD,EAAajjE,EAAKc,GAAIwyB,EAAMvf,GAASkX,QAKlD,OAAOy4C,GAFM,IAAIR,OAAO,MAAQ7D,EAAMj/D,KAAK,KAAO,IAAKwjE,GAAM7vD,IAEnCuf,EAC5B,CA+GWuwC,CAAoC,EAA8B,EAAQ9vD,GArGrF,SAAyB/T,EAAMszB,EAAMvf,GACnC,OAAO+vD,GAAevxC,GAAMvyB,EAAM+T,GAAUuf,EAAMvf,EACpD,CAsGSgwD,CAAqC,EAA8B,EAAQhwD,EACpF,EAnaIiwD,GAAUzxC,GAEV0xC,GAAqBC,GACrBC,GAAmBL,GAOnBM,GAAc,IAAIlB,OAAO,CAG3B,UAOA,0GACA9iE,KAAK,KAAM,KASb,SAASmyB,GAAO2vB,EAAKnuC,GAQnB,IAPA,IAKIorD,EALAkF,EAAS,GACTzxD,EAAM,EACNwW,EAAQ,EACRppB,EAAO,GACPskE,EAAmBvwD,GAAWA,EAAQqvD,WAAa,IAGf,OAAhCjE,EAAMiF,GAAY32C,KAAKy0B,KAAe,CAC5C,IAAI36C,EAAI43D,EAAI,GACRoF,EAAUpF,EAAI,GACdhoB,EAASgoB,EAAI/1C,MAKjB,GAJAppB,GAAQkiD,EAAI53C,MAAM8e,EAAO+tB,GACzB/tB,EAAQ+tB,EAAS5vC,EAAE9C,OAGf8/D,EACFvkE,GAAQukE,EAAQ,OADlB,CAKA,IAAIt0D,EAAOiyC,EAAI94B,GACX+zB,EAASgiB,EAAI,GACb79D,EAAO69D,EAAI,GACX5d,EAAU4d,EAAI,GACdqF,EAAQrF,EAAI,GACZsF,EAAWtF,EAAI,GACfqE,EAAWrE,EAAI,GAGfn/D,IACFqkE,EAAOztD,KAAK5W,GACZA,EAAO,IAGT,IAAIujE,EAAoB,MAAVpmB,GAA0B,MAARltC,GAAgBA,IAASktC,EACrDmmB,EAAsB,MAAbmB,GAAiC,MAAbA,EAC7BpB,EAAwB,MAAboB,GAAiC,MAAbA,EAC/BrB,EAAYjE,EAAI,IAAMmF,EACtBb,EAAUliB,GAAWijB,EAEzBH,EAAOztD,KAAK,CACVtV,KAAMA,GAAQsR,IACduqC,OAAQA,GAAU,GAClBimB,UAAWA,EACXC,SAAUA,EACVC,OAAQA,EACRC,QAASA,EACTC,WAAYA,EACZC,QAASA,EAAUiB,GAAYjB,GAAYD,EAAW,KAAO,KAAOmB,GAAavB,GAAa,OA9BhG,CAgCF,CAYA,OATIh6C,EAAQ84B,EAAIz9C,SACdzE,GAAQkiD,EAAI0iB,OAAOx7C,IAIjBppB,GACFqkE,EAAOztD,KAAK5W,GAGPqkE,CACT,CAmBA,SAASQ,GAA0B3iB,GACjC,OAAOgI,UAAUhI,GAAKxrC,QAAQ,WAAW,SAAUvV,GACjD,MAAO,IAAMA,EAAEghD,WAAW,GAAGn4C,SAAS,IAAI0uD,aAC5C,GACF,CAiBA,SAASwL,GAAkBG,EAAQtwD,GAKjC,IAHA,IAAI+wD,EAAU,IAAIh3D,MAAMu2D,EAAO5/D,QAGtB3D,EAAI,EAAGA,EAAIujE,EAAO5/D,OAAQ3D,IACR,iBAAdujE,EAAOvjE,KAChBgkE,EAAQhkE,GAAK,IAAIoiE,OAAO,OAASmB,EAAOvjE,GAAG2iE,QAAU,KAAMG,GAAM7vD,KAIrE,OAAO,SAAU0uB,EAAK3N,GAMpB,IALA,IAAI90B,EAAO,GACPoD,EAAOq/B,GAAO,CAAC,EAEfo8B,GADU/pC,GAAQ,CAAC,GACFiwC,OAASF,GAA2B1kE,mBAEhDW,EAAI,EAAGA,EAAIujE,EAAO5/D,OAAQ3D,IAAK,CACtC,IAAIwuB,EAAQ+0C,EAAOvjE,GAEnB,GAAqB,iBAAVwuB,EAAX,CAMA,IACIuzC,EADAjxD,EAAQxO,EAAKksB,EAAMhuB,MAGvB,GAAa,MAATsQ,EAAe,CACjB,GAAI0d,EAAM+zC,SAAU,CAEd/zC,EAAMi0C,UACRvjE,GAAQsvB,EAAM6tB,QAGhB,QACF,CACE,MAAM,IAAI3O,UAAU,aAAelf,EAAMhuB,KAAO,kBAEpD,CAEA,GAAIyhE,GAAQnxD,GAAZ,CACE,IAAK0d,EAAMg0C,OACT,MAAM,IAAI90B,UAAU,aAAelf,EAAMhuB,KAAO,kCAAoCkW,KAAKC,UAAU7F,GAAS,KAG9G,GAAqB,IAAjBA,EAAMnN,OAAc,CACtB,GAAI6qB,EAAM+zC,SACR,SAEA,MAAM,IAAI70B,UAAU,aAAelf,EAAMhuB,KAAO,oBAEpD,CAEA,IAAK,IAAIwH,EAAI,EAAGA,EAAI8I,EAAMnN,OAAQqE,IAAK,CAGrC,GAFA+5D,EAAUhE,EAAOjtD,EAAM9I,KAElBg8D,EAAQhkE,GAAGob,KAAK2mD,GACnB,MAAM,IAAIr0B,UAAU,iBAAmBlf,EAAMhuB,KAAO,eAAiBguB,EAAMm0C,QAAU,oBAAsBjsD,KAAKC,UAAUorD,GAAW,KAGvI7iE,IAAe,IAAN8I,EAAUwmB,EAAM6tB,OAAS7tB,EAAM8zC,WAAaP,CACvD,CAGF,KAxBA,CA4BA,GAFAA,EAAUvzC,EAAMk0C,SA5EbtZ,UA4EuCt4C,GA5ExB8E,QAAQ,SAAS,SAAUvV,GAC/C,MAAO,IAAMA,EAAEghD,WAAW,GAAGn4C,SAAS,IAAI0uD,aAC5C,IA0EuDmG,EAAOjtD,IAErDkzD,EAAQhkE,GAAGob,KAAK2mD,GACnB,MAAM,IAAIr0B,UAAU,aAAelf,EAAMhuB,KAAO,eAAiBguB,EAAMm0C,QAAU,oBAAsBZ,EAAU,KAGnH7iE,GAAQsvB,EAAM6tB,OAAS0lB,CARvB,CA1CA,MAHE7iE,GAAQsvB,CAsDZ,CAEA,OAAOtvB,CACT,CACF,CAQA,SAAS2kE,GAAcziB,GACrB,OAAOA,EAAIxrC,QAAQ,6BAA8B,OACnD,CAQA,SAASguD,GAAaF,GACpB,OAAOA,EAAM9tD,QAAQ,gBAAiB,OACxC,CASA,SAASgtD,GAAYxG,EAAI5pC,GAEvB,OADA4pC,EAAG5pC,KAAOA,EACH4pC,CACT,CAQA,SAAS0G,GAAO7vD,GACd,OAAOA,GAAWA,EAAQixD,UAAY,GAAK,GAC7C,CAuEA,SAASlB,GAAgBO,EAAQ/wC,EAAMvf,GAChCgvD,GAAQzvC,KACXvf,EAAkCuf,GAAQvf,EAC1Cuf,EAAO,IAUT,IALA,IAAI2xC,GAFJlxD,EAAUA,GAAW,CAAC,GAEDkxD,OACjBxuB,GAAsB,IAAhB1iC,EAAQ0iC,IACdqpB,EAAQ,GAGHh/D,EAAI,EAAGA,EAAIujE,EAAO5/D,OAAQ3D,IAAK,CACtC,IAAIwuB,EAAQ+0C,EAAOvjE,GAEnB,GAAqB,iBAAVwuB,EACTwwC,GAAS6E,GAAar1C,OACjB,CACL,IAAI6tB,EAASwnB,GAAar1C,EAAM6tB,QAC5BoE,EAAU,MAAQjyB,EAAMm0C,QAAU,IAEtCnwC,EAAK1c,KAAK0Y,GAENA,EAAMg0C,SACR/hB,GAAW,MAAQpE,EAASoE,EAAU,MAaxCue,GANIve,EAJAjyB,EAAM+zC,SACH/zC,EAAMi0C,QAGCpmB,EAAS,IAAMoE,EAAU,KAFzB,MAAQpE,EAAS,IAAMoE,EAAU,MAKnCpE,EAAS,IAAMoE,EAAU,GAIvC,CACF,CAEA,IAAI6hB,EAAYuB,GAAa5wD,EAAQqvD,WAAa,KAC9C8B,EAAoBpF,EAAMx1D,OAAO84D,EAAU3+D,UAAY2+D,EAkB3D,OAZK6B,IACHnF,GAASoF,EAAoBpF,EAAMx1D,MAAM,GAAI84D,EAAU3+D,QAAUq7D,GAAS,MAAQsD,EAAY,WAI9FtD,GADErpB,EACO,IAIAwuB,GAAUC,EAAoB,GAAK,MAAQ9B,EAAY,MAG3DM,GAAW,IAAIR,OAAO,IAAMpD,EAAO8D,GAAM7vD,IAAWuf,EAC7D,CAgCA0vC,GAAezwC,MAAQyxC,GACvBhB,GAAemC,QA9Tf,SAAkBjjB,EAAKnuC,GACrB,OAAOmwD,GAAiB3xC,GAAM2vB,EAAKnuC,GAAUA,EAC/C,EA6TAivD,GAAekB,iBAAmBD,GAClCjB,GAAec,eAAiBK,GAKhC,IAAIiB,GAAqBriE,OAAOsiE,OAAO,MAEvC,SAASC,GACPtlE,EACA20D,EACA4Q,GAEA5Q,EAASA,GAAU,CAAC,EACpB,IACE,IAAI6Q,EACFJ,GAAmBplE,KAClBolE,GAAmBplE,GAAQgjE,GAAemC,QAAQnlE,IAMrD,MAFgC,iBAArB20D,EAAO8Q,YAA0B9Q,EAAO,GAAKA,EAAO8Q,WAExDD,EAAO7Q,EAAQ,CAAEoQ,QAAQ,GAClC,CAAE,MAAO1kE,GAKP,MAAO,EACT,CAAE,eAEOs0D,EAAO,EAChB,CACF,CAIA,SAAS+Q,GACPtzC,EACA2hB,EACA4L,EACAigB,GAEA,IAAI3vD,EAAsB,iBAARmiB,EAAmB,CAAEpyB,KAAMoyB,GAAQA,EAErD,GAAIniB,EAAK01D,YACP,OAAO11D,EACF,GAAIA,EAAK3O,KAAM,CAEpB,IAAIqzD,GADJ1kD,EAAOmY,GAAO,CAAC,EAAGgK,IACAuiC,OAIlB,OAHIA,GAA4B,iBAAXA,IACnB1kD,EAAK0kD,OAASvsC,GAAO,CAAC,EAAGusC,IAEpB1kD,CACT,CAGA,IAAKA,EAAKjQ,MAAQiQ,EAAK0kD,QAAU5gB,EAAS,EACxC9jC,EAAOmY,GAAO,CAAC,EAAGnY,IACb01D,aAAc,EACnB,IAAIC,EAAWx9C,GAAOA,GAAO,CAAC,EAAG2rB,EAAQ4gB,QAAS1kD,EAAK0kD,QACvD,GAAI5gB,EAAQzyC,KACV2O,EAAK3O,KAAOyyC,EAAQzyC,KACpB2O,EAAK0kD,OAASiR,OACT,GAAI7xB,EAAQosB,QAAQ17D,OAAQ,CACjC,IAAIohE,EAAU9xB,EAAQosB,QAAQpsB,EAAQosB,QAAQ17D,OAAS,GAAGzE,KAC1DiQ,EAAKjQ,KAAOslE,GAAWO,EAASD,EAAsB7xB,EAAY,KACpE,CAGA,OAAO9jC,CACT,CAEA,IAAI61D,EAnhBN,SAAoB9lE,GAClB,IAAIggE,EAAO,GACPp2C,EAAQ,GAERm8C,EAAY/lE,EAAKqC,QAAQ,KACzB0jE,GAAa,IACf/F,EAAOhgE,EAAKsK,MAAMy7D,GAClB/lE,EAAOA,EAAKsK,MAAM,EAAGy7D,IAGvB,IAAIC,EAAahmE,EAAKqC,QAAQ,KAM9B,OALI2jE,GAAc,IAChBp8C,EAAQ5pB,EAAKsK,MAAM07D,EAAa,GAChChmE,EAAOA,EAAKsK,MAAM,EAAG07D,IAGhB,CACLhmE,KAAMA,EACN4pB,MAAOA,EACPo2C,KAAMA,EAEV,CA8fmBiG,CAAUh2D,EAAKjQ,MAAQ,IACpCkmE,EAAYnyB,GAAWA,EAAQ/zC,MAAS,IACxCA,EAAO8lE,EAAW9lE,KAClBwiE,GAAYsD,EAAW9lE,KAAMkmE,EAAUvmB,GAAU1vC,EAAK0vC,QACtDumB,EAEAt8C,EAv9BN,SACEA,EACAu8C,EACAC,QAEoB,IAAfD,IAAwBA,EAAa,CAAC,GAE3C,IACIE,EADA9zC,EAAQ6zC,GAAelH,GAE3B,IACEmH,EAAc9zC,EAAM3I,GAAS,GAC/B,CAAE,MAAOvpB,GAEPgmE,EAAc,CAAC,CACjB,CACA,IAAK,IAAIzzD,KAAOuzD,EAAY,CAC1B,IAAIv0D,EAAQu0D,EAAWvzD,GACvByzD,EAAYzzD,GAAO9E,MAAM6I,QAAQ/E,GAC7BA,EAAM1R,IAAI++D,IACVA,GAAoBrtD,EAC1B,CACA,OAAOy0D,CACT,CAi8BcC,CACVR,EAAWl8C,MACX3Z,EAAK2Z,MACLg2C,GAAUA,EAAO7rD,QAAQmrD,YAGvBc,EAAO/vD,EAAK+vD,MAAQ8F,EAAW9F,KAKnC,OAJIA,GAA2B,MAAnBA,EAAK0C,OAAO,KACtB1C,EAAO,IAAMA,GAGR,CACL2F,aAAa,EACb3lE,KAAMA,EACN4pB,MAAOA,EACPo2C,KAAMA,EAEV,CAKA,IA4NIuG,GAzNA,GAAO,WAAa,EAMpBC,GAAO,CACTllE,KAAM,aACNK,MAAO,CACL0J,GAAI,CACFxJ,KAbQ,CAACK,OAAQa,QAcjB4X,UAAU,GAEZxW,IAAK,CACHtC,KAAMK,OACNvB,QAAS,KAEXoL,OAAQjK,QACRwJ,MAAOxJ,QACP2kE,UAAW3kE,QACX69C,OAAQ79C,QACR4U,QAAS5U,QACT4kE,YAAaxkE,OACbykE,iBAAkBzkE,OAClB0kE,iBAAkB,CAChB/kE,KAAMK,OACNvB,QAAS,QAEXsb,MAAO,CACLpa,KA/BW,CAACK,OAAQ4L,OAgCpBnN,QAAS,UAGb+F,OAAQ,SAAiBc,GACvB,IAAIq/D,EAAWvjE,KAEXs8D,EAASt8D,KAAKwyD,QACd/hB,EAAUzwC,KAAKsoC,OACfziC,EAAMy2D,EAAOrsC,QACfjwB,KAAK+H,GACL0oC,EACAzwC,KAAKq8C,QAEHz4C,EAAWiC,EAAIjC,SACf44D,EAAQ32D,EAAI22D,MACZ/4D,EAAOoC,EAAIpC,KAEXuvD,EAAU,CAAC,EACXwQ,EAAoBlH,EAAO7rD,QAAQgzD,gBACnCC,EAAyBpH,EAAO7rD,QAAQkzD,qBAExCC,EACmB,MAArBJ,EAA4B,qBAAuBA,EACjDK,EACwB,MAA1BH,EACI,2BACAA,EACFN,EACkB,MAApBpjE,KAAKojE,YAAsBQ,EAAsB5jE,KAAKojE,YACpDC,EACuB,MAAzBrjE,KAAKqjE,iBACDQ,EACA7jE,KAAKqjE,iBAEPS,EAAgBtH,EAAMH,eACtBF,GAAY,KAAMiG,GAAkB5F,EAAMH,gBAAiB,KAAMC,GACjEE,EAEJxJ,EAAQqQ,GAAoBnG,GAAYzsB,EAASqzB,EAAe9jE,KAAKmjE,WACrEnQ,EAAQoQ,GAAepjE,KAAKgI,OAAShI,KAAKmjE,UACtCnQ,EAAQqQ,GAn2BhB,SAA0B5yB,EAASzuC,GACjC,OAGQ,IAFNyuC,EAAQ/zC,KAAK0W,QAAQ8oD,GAAiB,KAAKn9D,QACzCiD,EAAOtF,KAAK0W,QAAQ8oD,GAAiB,SAErCl6D,EAAO06D,MAAQjsB,EAAQisB,OAAS16D,EAAO06D,OAK7C,SAAwBjsB,EAASzuC,GAC/B,IAAK,IAAIsN,KAAOtN,EACd,KAAMsN,KAAOmhC,GACX,OAAO,EAGX,OAAO,CACT,CAXIszB,CAActzB,EAAQnqB,MAAOtkB,EAAOskB,MAExC,CA41BQ09C,CAAgBvzB,EAASqzB,GAE7B,IAAIR,EAAmBtQ,EAAQqQ,GAAoBrjE,KAAKsjE,iBAAmB,KAEvE36C,EAAU,SAAU5rB,GAClBknE,GAAWlnE,KACTwmE,EAASnwD,QACXkpD,EAAOlpD,QAAQxP,EAAU,IAEzB04D,EAAOhpD,KAAK1P,EAAU,IAG5B,EAEIkC,EAAK,CAAEb,MAAOg/D,IACdz5D,MAAM6I,QAAQrT,KAAK2Y,OACrB3Y,KAAK2Y,MAAM1G,SAAQ,SAAUlV,GAC3B+I,EAAG/I,GAAK4rB,CACV,IAEA7iB,EAAG9F,KAAK2Y,OAASgQ,EAGnB,IAAI7oB,EAAO,CAAEgF,MAAOkuD,GAEhBkR,GACDlkE,KAAKmkE,aAAaC,YACnBpkE,KAAKmkE,aAAa9mE,SAClB2C,KAAKmkE,aAAa9mE,QAAQ,CACxBoG,KAAMA,EACN+4D,MAAOA,EACPt0D,SAAUygB,EACVxgB,SAAU6qD,EAAQoQ,GAClBh7D,cAAe4qD,EAAQqQ,KAG3B,GAAIa,EAAY,CAKd,GAA0B,IAAtBA,EAAW/iE,OACb,OAAO+iE,EAAW,GACb,GAAIA,EAAW/iE,OAAS,IAAM+iE,EAAW/iE,OAO9C,OAA6B,IAAtB+iE,EAAW/iE,OAAe+C,IAAMA,EAAE,OAAQ,CAAC,EAAGggE,EAEzD,CAmBA,GAAiB,MAAblkE,KAAKa,IACPf,EAAKgG,GAAKA,EACVhG,EAAK8F,MAAQ,CAAEnC,KAAMA,EAAM,eAAgB6/D,OACtC,CAEL,IAAInmE,EAAIknE,GAAWrkE,KAAKqD,OAAOhG,SAC/B,GAAIF,EAAG,CAELA,EAAEmnE,UAAW,EACb,IAAIC,EAASpnE,EAAE2C,KAAOglB,GAAO,CAAC,EAAG3nB,EAAE2C,MAGnC,IAAK,IAAI6Y,KAFT4rD,EAAMz+D,GAAKy+D,EAAMz+D,IAAM,CAAC,EAENy+D,EAAMz+D,GAAI,CAC1B,IAAI0+D,EAAYD,EAAMz+D,GAAG6S,GACrBA,KAAS7S,IACXy+D,EAAMz+D,GAAG6S,GAASnO,MAAM6I,QAAQmxD,GAAaA,EAAY,CAACA,GAE9D,CAEA,IAAK,IAAIC,KAAW3+D,EACd2+D,KAAWF,EAAMz+D,GAEnBy+D,EAAMz+D,GAAG2+D,GAASnxD,KAAKxN,EAAG2+D,IAE1BF,EAAMz+D,GAAG2+D,GAAW97C,EAIxB,IAAI+7C,EAAUvnE,EAAE2C,KAAK8F,MAAQkf,GAAO,CAAC,EAAG3nB,EAAE2C,KAAK8F,OAC/C8+D,EAAOjhE,KAAOA,EACdihE,EAAO,gBAAkBpB,CAC3B,MAEExjE,EAAKgG,GAAKA,CAEd,CAEA,OAAO5B,EAAElE,KAAKa,IAAKf,EAAME,KAAKqD,OAAOhG,QACvC,GAGF,SAAS4mE,GAAYlnE,GAEnB,KAAIA,EAAEqjD,SAAWrjD,EAAEmjD,QAAUnjD,EAAEojD,SAAWpjD,EAAEwF,UAExCxF,EAAE4nE,uBAEWh9D,IAAb5K,EAAE6nE,QAAqC,IAAb7nE,EAAE6nE,QAAhC,CAEA,GAAI7nE,EAAE2S,eAAiB3S,EAAE2S,cAAcm1D,aAAc,CACnD,IAAI7iE,EAASjF,EAAE2S,cAAcm1D,aAAa,UAC1C,GAAI,cAAcjsD,KAAK5W,GAAW,MACpC,CAKA,OAHIjF,EAAE4F,gBACJ5F,EAAE4F,kBAEG,CAVgD,CAWzD,CAEA,SAAS0hE,GAAYl/D,GACnB,GAAIA,EAEF,IADA,IAAIw3C,EACKn/C,EAAI,EAAGA,EAAI2H,EAAShE,OAAQ3D,IAAK,CAExC,GAAkB,OADlBm/C,EAAQx3C,EAAS3H,IACPqD,IACR,OAAO87C,EAET,GAAIA,EAAMx3C,WAAaw3C,EAAQ0nB,GAAW1nB,EAAMx3C,WAC9C,OAAOw3C,CAEX,CAEJ,CAsDA,IAAImoB,GAA8B,oBAAXnhE,OAIvB,SAASohE,GACPC,EACAC,EACAC,EACAC,EACAC,GAGA,IAAIC,EAAWJ,GAAe,GAE1BK,EAAUJ,GAAczlE,OAAOsiE,OAAO,MAEtCwD,EAAUJ,GAAc1lE,OAAOsiE,OAAO,MAE1CiD,EAAO/yD,SAAQ,SAAUuqD,GACvBgJ,GAAeH,EAAUC,EAASC,EAAS/I,EAAO4I,EACpD,IAGA,IAAK,IAAI5nE,EAAI,EAAGI,EAAIynE,EAASlkE,OAAQ3D,EAAII,EAAGJ,IACtB,MAAhB6nE,EAAS7nE,KACX6nE,EAAS/xD,KAAK+xD,EAASvwD,OAAOtX,EAAG,GAAG,IACpCI,IACAJ,KAgBJ,MAAO,CACL6nE,SAAUA,EACVC,QAASA,EACTC,QAASA,EAEb,CAEA,SAASC,GACPH,EACAC,EACAC,EACA/I,EACArmD,EACAsvD,GAEA,IAAI/oE,EAAO8/D,EAAM9/D,KACbsB,EAAOw+D,EAAMx+D,KAmBb0nE,EACFlJ,EAAMkJ,qBAAuB,CAAC,EAC5BC,EA2HN,SACEjpE,EACAyZ,EACAwrD,GAGA,OADKA,IAAUjlE,EAAOA,EAAK0W,QAAQ,MAAO,KAC1B,MAAZ1W,EAAK,IACK,MAAVyZ,EAD0BzZ,EAEvB8iE,GAAYrpD,EAAW,KAAI,IAAMzZ,EAC1C,CApIuBkpE,CAAclpE,EAAMyZ,EAAQuvD,EAAoB/D,QAElC,kBAAxBnF,EAAMqJ,gBACfH,EAAoBhE,UAAYlF,EAAMqJ,eAGxC,IAAIzJ,EAAS,CACX1/D,KAAMipE,EACNG,MAAOC,GAAkBJ,EAAgBD,GACzCznE,WAAYu+D,EAAMv+D,YAAc,CAAEZ,QAASm/D,EAAMlyB,WACjD07B,MAAOxJ,EAAMwJ,MACc,iBAAhBxJ,EAAMwJ,MACX,CAACxJ,EAAMwJ,OACPxJ,EAAMwJ,MACR,GACJtI,UAAW,CAAC,EACZE,WAAY,CAAC,EACb5/D,KAAMA,EACNmY,OAAQA,EACRsvD,QAASA,EACTQ,SAAUzJ,EAAMyJ,SAChBC,YAAa1J,EAAM0J,YACnBzJ,KAAMD,EAAMC,MAAQ,CAAC,EACrBp+D,MACiB,MAAfm+D,EAAMn+D,MACF,CAAC,EACDm+D,EAAMv+D,WACJu+D,EAAMn+D,MACN,CAAEhB,QAASm/D,EAAMn+D,QAoC3B,GAjCIm+D,EAAMr3D,UAoBRq3D,EAAMr3D,SAAS8M,SAAQ,SAAU0qC,GAC/B,IAAIwpB,EAAeV,EACfjG,GAAWiG,EAAU,IAAO9oB,EAAU,WACtCh1C,EACJ69D,GAAeH,EAAUC,EAASC,EAAS5oB,EAAOyf,EAAQ+J,EAC5D,IAGGb,EAAQlJ,EAAO1/D,QAClB2oE,EAAS/xD,KAAK8oD,EAAO1/D,MACrB4oE,EAAQlJ,EAAO1/D,MAAQ0/D,QAGLz0D,IAAhB60D,EAAMwJ,MAER,IADA,IAAII,EAAU57D,MAAM6I,QAAQmpD,EAAMwJ,OAASxJ,EAAMwJ,MAAQ,CAACxJ,EAAMwJ,OACvDxoE,EAAI,EAAGA,EAAI4oE,EAAQjlE,SAAU3D,EAAG,CAWvC,IAAI6oE,EAAa,CACf3pE,KAXU0pE,EAAQ5oE,GAYlB2H,SAAUq3D,EAAMr3D,UAElBqgE,GACEH,EACAC,EACAC,EACAc,EACAlwD,EACAimD,EAAO1/D,MAAQ,IAEnB,CAGEsB,IACGunE,EAAQvnE,KACXunE,EAAQvnE,GAAQo+D,GAStB,CAEA,SAAS2J,GACPrpE,EACAgpE,GAaA,OAXYhG,GAAehjE,EAAM,GAAIgpE,EAYvC,CAiBA,SAASY,GACPtB,EACA1I,GAEA,IAAIz2D,EAAMk/D,GAAeC,GACrBK,EAAWx/D,EAAIw/D,SACfC,EAAUz/D,EAAIy/D,QACdC,EAAU1/D,EAAI0/D,QA4BlB,SAAS19C,EACPiH,EACAy3C,EACAlK,GAEA,IAAIz4D,EAAWw+D,GAAkBtzC,EAAKy3C,GAAc,EAAOjK,GACvDt+D,EAAO4F,EAAS5F,KAEpB,GAAIA,EAAM,CACR,IAAIo+D,EAASmJ,EAAQvnE,GAIrB,IAAKo+D,EAAU,OAAOoK,EAAa,KAAM5iE,GACzC,IAAI6iE,EAAarK,EAAO0J,MAAM91C,KAC3B1sB,QAAO,SAAUgM,GAAO,OAAQA,EAAIywD,QAAU,IAC9CnjE,KAAI,SAAU0S,GAAO,OAAOA,EAAItR,IAAM,IAMzC,GAJ+B,iBAApB4F,EAASytD,SAClBztD,EAASytD,OAAS,CAAC,GAGjBkV,GAA+C,iBAAxBA,EAAalV,OACtC,IAAK,IAAI/hD,KAAOi3D,EAAalV,SACrB/hD,KAAO1L,EAASytD,SAAWoV,EAAW1nE,QAAQuQ,IAAQ,IAC1D1L,EAASytD,OAAO/hD,GAAOi3D,EAAalV,OAAO/hD,IAMjD,OADA1L,EAASlH,KAAOslE,GAAW5F,EAAO1/D,KAAMkH,EAASytD,QAC1CmV,EAAapK,EAAQx4D,EAAUy4D,EACxC,CAAO,GAAIz4D,EAASlH,KAAM,CACxBkH,EAASytD,OAAS,CAAC,EACnB,IAAK,IAAI7zD,EAAI,EAAGA,EAAI6nE,EAASlkE,OAAQ3D,IAAK,CACxC,IAAId,EAAO2oE,EAAS7nE,GAChBkpE,EAAWpB,EAAQ5oE,GACvB,GAAIiqE,GAAWD,EAASZ,MAAOliE,EAASlH,KAAMkH,EAASytD,QACrD,OAAOmV,EAAaE,EAAU9iE,EAAUy4D,EAE5C,CACF,CAEA,OAAOmK,EAAa,KAAM5iE,EAC5B,CAsFA,SAAS4iE,EACPpK,EACAx4D,EACAy4D,GAEA,OAAID,GAAUA,EAAO6J,SAzFvB,SACE7J,EACAx4D,GAEA,IAAIgjE,EAAmBxK,EAAO6J,SAC1BA,EAAuC,mBAArBW,EAClBA,EAAiBzK,GAAYC,EAAQx4D,EAAU,KAAM04D,IACrDsK,EAMJ,GAJwB,iBAAbX,IACTA,EAAW,CAAEvpE,KAAMupE,KAGhBA,GAAgC,iBAAbA,EAMtB,OAAOO,EAAa,KAAM5iE,GAG5B,IAAIg2D,EAAKqM,EACLjoE,EAAO47D,EAAG57D,KACVtB,EAAOk9D,EAAGl9D,KACV4pB,EAAQ1iB,EAAS0iB,MACjBo2C,EAAO94D,EAAS84D,KAChBrL,EAASztD,EAASytD,OAKtB,GAJA/qC,EAAQszC,EAAG3iD,eAAe,SAAW2iD,EAAGtzC,MAAQA,EAChDo2C,EAAO9C,EAAG3iD,eAAe,QAAU2iD,EAAG8C,KAAOA,EAC7CrL,EAASuI,EAAG3iD,eAAe,UAAY2iD,EAAGvI,OAASA,EAE/CrzD,EAMF,OAJmBunE,EAAQvnE,GAIpB6pB,EAAM,CACXw6C,aAAa,EACbrkE,KAAMA,EACNsoB,MAAOA,EACPo2C,KAAMA,EACNrL,OAAQA,QACP1pD,EAAW/D,GACT,GAAIlH,EAAM,CAEf,IAAI6lE,EAmFV,SAA4B7lE,EAAM0/D,GAChC,OAAO8C,GAAYxiE,EAAM0/D,EAAOjmD,OAASimD,EAAOjmD,OAAOzZ,KAAO,KAAK,EACrE,CArFoBmqE,CAAkBnqE,EAAM0/D,GAItC,OAAOv0C,EAAM,CACXw6C,aAAa,EACb3lE,KAJiBslE,GAAWO,EAASlR,GAKrC/qC,MAAOA,EACPo2C,KAAMA,QACL/0D,EAAW/D,EAChB,CAIE,OAAO4iE,EAAa,KAAM5iE,EAE9B,CA2BWqiE,CAAS7J,EAAQC,GAAkBz4D,GAExCw4D,GAAUA,EAAOqJ,QA3BvB,SACErJ,EACAx4D,EACA6hE,GAEA,IACIqB,EAAej/C,EAAM,CACvBw6C,aAAa,EACb3lE,KAHgBslE,GAAWyD,EAAS7hE,EAASytD,UAK/C,GAAIyV,EAAc,CAChB,IAAIjK,EAAUiK,EAAajK,QACvBkK,EAAgBlK,EAAQA,EAAQ17D,OAAS,GAE7C,OADAyC,EAASytD,OAASyV,EAAazV,OACxBmV,EAAaO,EAAenjE,EACrC,CACA,OAAO4iE,EAAa,KAAM5iE,EAC5B,CAWWoiE,CAAM5J,EAAQx4D,EAAUw4D,EAAOqJ,SAEjCtJ,GAAYC,EAAQx4D,EAAUy4D,EAAgBC,EACvD,CAEA,MAAO,CACLz0C,MAAOA,EACPm/C,SAxKF,SAAmBC,EAAezK,GAChC,IAAIrmD,EAAmC,iBAAlB8wD,EAA8B1B,EAAQ0B,QAAiBt/D,EAE5Eo9D,GAAe,CAACvI,GAASyK,GAAgB5B,EAAUC,EAASC,EAASpvD,GAGjEA,GAAUA,EAAO6vD,MAAM7kE,QACzB4jE,GAEE5uD,EAAO6vD,MAAMppE,KAAI,SAAUopE,GAAS,MAAO,CAAGtpE,KAAMspE,EAAO7gE,SAAU,CAACq3D,GAAW,IACjF6I,EACAC,EACAC,EACApvD,EAGN,EAyJE+wD,UAvJF,WACE,OAAO7B,EAASzoE,KAAI,SAAUF,GAAQ,OAAO4oE,EAAQ5oE,EAAO,GAC9D,EAsJEyqE,UA9KF,SAAoBnC,GAClBD,GAAeC,EAAQK,EAAUC,EAASC,EAC5C,EA8KF,CAEA,SAASoB,GACPb,EACAppE,EACA20D,GAEA,IAAIptD,EAAIvH,EAAKmrB,MAAMi+C,GAEnB,IAAK7hE,EACH,OAAO,EACF,IAAKotD,EACV,OAAO,EAGT,IAAK,IAAI7zD,EAAI,EAAG4pE,EAAMnjE,EAAE9C,OAAQ3D,EAAI4pE,IAAO5pE,EAAG,CAC5C,IAAI8R,EAAMw2D,EAAM91C,KAAKxyB,EAAI,GACrB8R,IAEF+hD,EAAO/hD,EAAItR,MAAQ,aAA+B,iBAATiG,EAAEzG,GAAkBg+D,GAAOv3D,EAAEzG,IAAMyG,EAAEzG,GAElF,CAEA,OAAO,CACT,CASA,IAAI6pE,GACFvC,IAAanhE,OAAO4rB,aAAe5rB,OAAO4rB,YAAYD,IAClD3rB,OAAO4rB,YACP3mB,KAEN,SAAS0+D,KACP,OAAOD,GAAK/3C,MAAMpI,QAAQ,EAC5B,CAEA,IAAI2lB,GAAOy6B,KAEX,SAASC,KACP,OAAO16B,EACT,CAEA,SAAS26B,GAAal4D,GACpB,OAAQu9B,GAAOv9B,CACjB,CAIA,IAAIm4D,GAAgBhoE,OAAOsiE,OAAO,MAElC,SAAS2F,KAEH,sBAAuB/jE,OAAOgkE,UAChChkE,OAAOgkE,QAAQC,kBAAoB,UAOrC,IAAIC,EAAkBlkE,OAAOC,SAASy0D,SAAW,KAAO10D,OAAOC,SAASkoB,KACpEg8C,EAAenkE,OAAOC,SAASH,KAAK2P,QAAQy0D,EAAiB,IAE7DE,EAAYjjD,GAAO,CAAC,EAAGnhB,OAAOgkE,QAAQrxC,OAI1C,OAHAyxC,EAAUz4D,IAAMi4D,KAChB5jE,OAAOgkE,QAAQK,aAAaD,EAAW,GAAID,GAC3CnkE,OAAOgI,iBAAiB,WAAYs8D,IAC7B,WACLtkE,OAAOmI,oBAAoB,WAAYm8D,GACzC,CACF,CAEA,SAASlwD,GACPukD,EACAv0D,EACAuwB,EACA4vC,GAEA,GAAK5L,EAAOp6C,IAAZ,CAIA,IAAI9J,EAAWkkD,EAAO7rD,QAAQ03D,eACzB/vD,GASLkkD,EAAOp6C,IAAItgB,WAAU,WACnB,IAAI8vC,EA6CR,WACE,IAAIpiC,EAAMi4D,KACV,GAAIj4D,EACF,OAAOm4D,GAAcn4D,EAEzB,CAlDmB84D,GACXC,EAAejwD,EAAS9S,KAC1Bg3D,EACAv0D,EACAuwB,EACA4vC,EAAQx2B,EAAW,MAGhB22B,IAI4B,mBAAtBA,EAAajlD,KACtBilD,EACGjlD,MAAK,SAAUilD,GACd92B,GAAiB,EAAgBG,EACnC,IACCnT,OAAM,SAAUm9B,GAIjB,IAEFnqB,GAAiB82B,EAAc32B,GAEnC,GAtCA,CAuCF,CAEA,SAAS42B,KACP,IAAIh5D,EAAMi4D,KACNj4D,IACFm4D,GAAcn4D,GAAO,CACnBvK,EAAGpB,OAAO4kE,YACV/jE,EAAGb,OAAO6kE,aAGhB,CAEA,SAASP,GAAgBlrE,GACvBurE,KACIvrE,EAAEu5B,OAASv5B,EAAEu5B,MAAMhnB,KACrBk4D,GAAYzqE,EAAEu5B,MAAMhnB,IAExB,CAmBA,SAASm5D,GAAiBtpC,GACxB,OAAOupC,GAASvpC,EAAIp6B,IAAM2jE,GAASvpC,EAAI36B,EACzC,CAEA,SAASmkE,GAAmBxpC,GAC1B,MAAO,CACLp6B,EAAG2jE,GAASvpC,EAAIp6B,GAAKo6B,EAAIp6B,EAAIpB,OAAO4kE,YACpC/jE,EAAGkkE,GAASvpC,EAAI36B,GAAK26B,EAAI36B,EAAIb,OAAO6kE,YAExC,CASA,SAASE,GAAUtkE,GACjB,MAAoB,iBAANA,CAChB,CAEA,IAAIwkE,GAAyB,OAE7B,SAASr3B,GAAkB82B,EAAc32B,GACvC,IAdwBvS,EAcpB4D,EAAmC,iBAAjBslC,EACtB,GAAItlC,GAA6C,iBAA1BslC,EAAaQ,SAAuB,CAGzD,IAAIr9B,EAAKo9B,GAAuBhwD,KAAKyvD,EAAaQ,UAC9CvpE,SAAS4Y,eAAemwD,EAAaQ,SAAS7hE,MAAM,IACpD1H,SAASC,cAAc8oE,EAAaQ,UAExC,GAAIr9B,EAAI,CACN,IAAIqI,EACFw0B,EAAax0B,QAAyC,iBAAxBw0B,EAAax0B,OACvCw0B,EAAax0B,OACb,CAAC,EAEPnC,EAjDN,SAA6BlG,EAAIqI,GAC/B,IACIi1B,EADQxpE,SAASuT,gBACDuhC,wBAChB20B,EAASv9B,EAAG4I,wBAChB,MAAO,CACLrvC,EAAGgkE,EAAOx0B,KAAOu0B,EAAQv0B,KAAOV,EAAO9uC,EACvCP,EAAGukE,EAAOz0B,IAAMw0B,EAAQx0B,IAAMT,EAAOrvC,EAEzC,CAyCiBwkE,CAAmBx9B,EAD9BqI,EA1BG,CACL9uC,EAAG2jE,IAFmBvpC,EA2BK0U,GAzBX9uC,GAAKo6B,EAAIp6B,EAAI,EAC7BP,EAAGkkE,GAASvpC,EAAI36B,GAAK26B,EAAI36B,EAAI,GA0B7B,MAAWikE,GAAgBJ,KACzB32B,EAAWi3B,GAAkBN,GAEjC,MAAWtlC,GAAY0lC,GAAgBJ,KACrC32B,EAAWi3B,GAAkBN,IAG3B32B,IAEE,mBAAoBpyC,SAASuT,gBAAgBrE,MAC/C7K,OAAOslE,SAAS,CACd10B,KAAM7C,EAAS3sC,EACfuvC,IAAK5C,EAASltC,EAEd4T,SAAUiwD,EAAajwD,WAGzBzU,OAAOslE,SAASv3B,EAAS3sC,EAAG2sC,EAASltC,GAG3C,CAIA,IAGQ4kC,GAHJ8/B,GACFpE,MAKmC,KAH7B17B,GAAKzlC,OAAOuoB,UAAUC,WAGpBptB,QAAQ,gBAAuD,IAA/BqqC,GAAGrqC,QAAQ,iBACd,IAAjCqqC,GAAGrqC,QAAQ,mBACe,IAA1BqqC,GAAGrqC,QAAQ,YACsB,IAAjCqqC,GAAGrqC,QAAQ,mBAKN4E,OAAOgkE,SAA+C,mBAA7BhkE,OAAOgkE,QAAQwB,UAGnD,SAASA,GAAWhgD,EAAK/V,GACvBk1D,KAGA,IAAIX,EAAUhkE,OAAOgkE,QACrB,IACE,GAAIv0D,EAAS,CAEX,IAAI20D,EAAYjjD,GAAO,CAAC,EAAG6iD,EAAQrxC,OACnCyxC,EAAUz4D,IAAMi4D,KAChBI,EAAQK,aAAaD,EAAW,GAAI5+C,EACtC,MACEw+C,EAAQwB,UAAU,CAAE75D,IAAKk4D,GAAYF,OAAkB,GAAIn+C,EAE/D,CAAE,MAAOpsB,GACP4G,OAAOC,SAASwP,EAAU,UAAY,UAAU+V,EAClD,CACF,CAEA,SAAS6+C,GAAc7+C,GACrBggD,GAAUhgD,GAAK,EACjB,CAGA,IAAIigD,GAAwB,CAC1BC,WAAY,EACZC,QAAS,EACTrb,UAAW,EACXsb,WAAY,IA0Bd,SAASC,GAAgClxC,EAAMvwB,GAC7C,OAAO0hE,GACLnxC,EACAvwB,EACAqhE,GAAsBnb,UACrB,8BAAkC31B,EAAa,SAAI,SAAcvwB,EAAW,SAAI,2BAErF,CAWA,SAAS0hE,GAAmBnxC,EAAMvwB,EAAIxJ,EAAMo1B,GAC1C,IAAIhW,EAAQ,IAAIxI,MAAMwe,GAMtB,OALAhW,EAAM+rD,WAAY,EAClB/rD,EAAM2a,KAAOA,EACb3a,EAAM5V,GAAKA,EACX4V,EAAMpf,KAAOA,EAENof,CACT,CAEA,IAAIgsD,GAAkB,CAAC,SAAU,QAAS,QAY1C,SAASC,GAASlO,GAChB,OAAOj8D,OAAOuX,UAAUtQ,SAASpB,KAAKo2D,GAAK38D,QAAQ,UAAY,CACjE,CAEA,SAAS8qE,GAAqBnO,EAAKoO,GACjC,OACEF,GAAQlO,IACRA,EAAIgO,YACU,MAAbI,GAAqBpO,EAAIn9D,OAASurE,EAEvC,CAIA,SAASC,GAAUC,EAAOz6D,EAAIqoC,GAC5B,IAAIqyB,EAAO,SAAUnkD,GACfA,GAASkkD,EAAM7oE,OACjBy2C,IAEIoyB,EAAMlkD,GACRvW,EAAGy6D,EAAMlkD,IAAQ,WACfmkD,EAAKnkD,EAAQ,EACf,IAEAmkD,EAAKnkD,EAAQ,EAGnB,EACAmkD,EAAK,EACP,CAsEA,SAASC,GACPrN,EACAttD,GAEA,OAAO46D,GAAQtN,EAAQjgE,KAAI,SAAUqH,GACnC,OAAOxE,OAAOuwB,KAAK/rB,EAAEhG,YAAYrB,KAAI,SAAU0S,GAAO,OAAOC,EAC3DtL,EAAEhG,WAAWqR,GACbrL,EAAEy5D,UAAUpuD,GACZrL,EAAGqL,EACF,GACL,IACF,CAEA,SAAS66D,GAASt/B,GAChB,OAAOrgC,MAAMwM,UAAU7W,OAAOwP,MAAM,GAAIk7B,EAC1C,CAEA,IAAIu/B,GACgB,mBAAXlzD,QACuB,iBAAvBA,OAAOC,YAUhB,SAASg1B,GAAM58B,GACb,IAAI86D,GAAS,EACb,OAAO,WAEL,IADA,IAAIx6C,EAAO,GAAIu3C,EAAMlmE,UAAUC,OACvBimE,KAAQv3C,EAAMu3C,GAAQlmE,UAAWkmE,GAEzC,IAAIiD,EAEJ,OADAA,GAAS,EACF96D,EAAGI,MAAM3P,KAAM6vB,EACxB,CACF,CAIA,IAAIkiC,GAAU,SAAkBuK,EAAQjoD,GACtCrU,KAAKs8D,OAASA,EACdt8D,KAAKqU,KAgOP,SAAwBA,GACtB,IAAKA,EACH,GAAIywD,GAAW,CAEb,IAAIwF,EAAShrE,SAASC,cAAc,QAGpC8U,GAFAA,EAAQi2D,GAAUA,EAAOzF,aAAa,SAAY,KAEtCzxD,QAAQ,qBAAsB,GAC5C,MACEiB,EAAO,IAQX,MAJuB,MAAnBA,EAAK+qD,OAAO,KACd/qD,EAAO,IAAMA,GAGRA,EAAKjB,QAAQ,MAAO,GAC7B,CAlPcm3D,CAAcl2D,GAE1BrU,KAAKywC,QAAUusB,GACfh9D,KAAKwqE,QAAU,KACfxqE,KAAKowC,OAAQ,EACbpwC,KAAKyqE,SAAW,GAChBzqE,KAAK0qE,cAAgB,GACrB1qE,KAAK2qE,SAAW,GAChB3qE,KAAKgF,UAAY,EACnB,EA6PA,SAAS4lE,GACPC,EACA7sE,EACAoJ,EACA+kD,GAEA,IAAI2e,EAASZ,GAAkBW,GAAS,SAAUE,EAAKr/B,EAAU7jB,EAAOvY,GACtE,IAAI07D,EAUR,SACED,EACAz7D,GAMA,MAJmB,mBAARy7D,IAETA,EAAM9H,GAAKn+C,OAAOimD,IAEbA,EAAIt6D,QAAQnB,EACrB,CAnBgB27D,CAAaF,EAAK/sE,GAC9B,GAAIgtE,EACF,OAAOxgE,MAAM6I,QAAQ23D,GACjBA,EAAMpuE,KAAI,SAAUouE,GAAS,OAAO5jE,EAAK4jE,EAAOt/B,EAAU7jB,EAAOvY,EAAM,IACvElI,EAAK4jE,EAAOt/B,EAAU7jB,EAAOvY,EAErC,IACA,OAAO66D,GAAQhe,EAAU2e,EAAO3e,UAAY2e,EAC9C,CAqBA,SAASI,GAAWF,EAAOt/B,GACzB,GAAIA,EACF,OAAO,WACL,OAAOs/B,EAAMr7D,MAAM+7B,EAAUxqC,UAC/B,CAEJ,CArSA6wD,GAAQ/6C,UAAUm0D,OAAS,SAAiBvzB,GAC1C53C,KAAK43C,GAAKA,CACZ,EAEAma,GAAQ/6C,UAAUo0D,QAAU,SAAkBxzB,EAAIyzB,GAC5CrrE,KAAKowC,MACPwH,KAEA53C,KAAKyqE,SAASn3D,KAAKskC,GACfyzB,GACFrrE,KAAK0qE,cAAcp3D,KAAK+3D,GAG9B,EAEAtZ,GAAQ/6C,UAAUujB,QAAU,SAAkB8wC,GAC5CrrE,KAAK2qE,SAASr3D,KAAK+3D,EACrB,EAEAtZ,GAAQ/6C,UAAUs0D,aAAe,SAC/B1nE,EACA2nE,EACAC,GAEE,IAEEhP,EAFE+G,EAAWvjE,KAIjB,IACEw8D,EAAQx8D,KAAKs8D,OAAOz0C,MAAMjkB,EAAU5D,KAAKywC,QAC3C,CAAE,MAAO1zC,GAKP,MAJAiD,KAAK2qE,SAAS14D,SAAQ,SAAU2lC,GAC9BA,EAAG76C,EACL,IAEMA,CACR,CACA,IAAIk6C,EAAOj3C,KAAKywC,QAChBzwC,KAAKyrE,kBACHjP,GACA,WACE+G,EAASmI,YAAYlP,GACrB+O,GAAcA,EAAW/O,GACzB+G,EAASoI,YACTpI,EAASjH,OAAOsP,WAAW35D,SAAQ,SAAUoc,GAC3CA,GAAQA,EAAKmuC,EAAOvlB,EACtB,IAGKssB,EAASnzB,QACZmzB,EAASnzB,OAAQ,EACjBmzB,EAASkH,SAASx4D,SAAQ,SAAU2lC,GAClCA,EAAG4kB,EACL,IAEJ,IACA,SAAUd,GACJ8P,GACFA,EAAQ9P,GAENA,IAAQ6H,EAASnzB,QAKdy5B,GAAoBnO,EAAK0N,GAAsBC,aAAepyB,IAAS+lB,KAC1EuG,EAASnzB,OAAQ,EACjBmzB,EAASmH,cAAcz4D,SAAQ,SAAU2lC,GACvCA,EAAG8jB,EACL,KAGN,GAEJ,EAEA3J,GAAQ/6C,UAAUy0D,kBAAoB,SAA4BjP,EAAO+O,EAAYC,GACjF,IAAIjI,EAAWvjE,KAEbywC,EAAUzwC,KAAKywC,QACnBzwC,KAAKwqE,QAAUhO,EACf,IAhSwClkC,EACpC3a,EA+RAkuD,EAAQ,SAAUnQ,IAIfmO,GAAoBnO,IAAQkO,GAAQlO,KACnC6H,EAASoH,SAASxpE,OACpBoiE,EAASoH,SAAS14D,SAAQ,SAAU2lC,GAClCA,EAAG8jB,EACL,IAKA,GAAQ/9C,MAAM+9C,IAGlB8P,GAAWA,EAAQ9P,EACrB,EACIoQ,EAAiBtP,EAAMK,QAAQ17D,OAAS,EACxC4qE,EAAmBt7B,EAAQosB,QAAQ17D,OAAS,EAChD,GACE+7D,GAAYV,EAAO/rB,IAEnBq7B,IAAmBC,GACnBvP,EAAMK,QAAQiP,KAAoBr7B,EAAQosB,QAAQkP,GAMlD,OAJA/rE,KAAK2rE,YACDnP,EAAME,MACR3kD,GAAa/X,KAAKs8D,OAAQ7rB,EAAS+rB,GAAO,GAErCqP,IA7TLluD,EAAQ8rD,GAD4BnxC,EA8TOmY,EAAS+rB,EA1TtD4M,GAAsBG,WACrB,sDAA0DjxC,EAAa,SAAI,OAGxEt6B,KAAO,uBACN2f,IAwTP,IA5O+Bk/C,EA4O3Bh3D,EAuHN,SACE4qC,EACA9jC,GAEA,IAAInP,EACAi2C,EAAMvgC,KAAKugC,IAAIhD,EAAQtvC,OAAQwL,EAAKxL,QACxC,IAAK3D,EAAI,EAAGA,EAAIi2C,GACVhD,EAAQjzC,KAAOmP,EAAKnP,GADLA,KAKrB,MAAO,CACLqa,QAASlL,EAAK3F,MAAM,EAAGxJ,GACvB6zC,UAAW1kC,EAAK3F,MAAMxJ,GACtB85C,YAAa7G,EAAQzpC,MAAMxJ,GAE/B,CAvIYwuE,CACRhsE,KAAKywC,QAAQosB,QACbL,EAAMK,SAEFhlD,EAAUhS,EAAIgS,QACdy/B,EAAczxC,EAAIyxC,YAClBjG,EAAYxrC,EAAIwrC,UAElB24B,EAAQ,GAAG7pE,OA6JjB,SAA6Bm3C,GAC3B,OAAOszB,GAActzB,EAAa,mBAAoB4zB,IAAW,EACnE,CA7JIe,CAAmB30B,GAEnBt3C,KAAKs8D,OAAO4P,YA6JhB,SAA6Br0D,GAC3B,OAAO+yD,GAAc/yD,EAAS,oBAAqBqzD,GACrD,CA7JIiB,CAAmBt0D,GAEnBw5B,EAAUz0C,KAAI,SAAUqH,GAAK,OAAOA,EAAEiiE,WAAa,KA5PtBrJ,EA8PNxrB,EA7PlB,SAAUtpC,EAAIuwB,EAAM3rB,GACzB,IAAIy/D,GAAW,EACX5B,EAAU,EACV7sD,EAAQ,KAEZusD,GAAkBrN,GAAS,SAAUkO,EAAKrjE,EAAGmgB,EAAOvY,GAMlD,GAAmB,mBAARy7D,QAAkCpjE,IAAZojE,EAAIsB,IAAmB,CACtDD,GAAW,EACX5B,IAEA,IA0BI3O,EA1BA5rC,EAAUkc,IAAK,SAAUmgC,GAuErC,IAAqBntC,MAtEImtC,GAuEZ11D,YAAewzD,IAAyC,WAA5BjrC,EAAIjoB,OAAOC,gBAtExCm1D,EAAcA,EAAYjvE,SAG5B0tE,EAAIwB,SAAkC,mBAAhBD,EAClBA,EACArJ,GAAKn+C,OAAOwnD,GAChBzkD,EAAM5pB,WAAWqR,GAAOg9D,IACxB9B,GACe,GACb79D,GAEJ,IAEImqB,EAASqV,IAAK,SAAUqgC,GAC1B,IAAIC,EAAM,qCAAuCn9D,EAAM,KAAOk9D,EAEzD7uD,IACHA,EAAQisD,GAAQ4C,GACZA,EACA,IAAIr3D,MAAMs3D,GACd9/D,EAAKgR,GAET,IAGA,IACEk+C,EAAMkP,EAAI96C,EAAS6G,EACrB,CAAE,MAAO/5B,GACP+5B,EAAO/5B,EACT,CACA,GAAI8+D,EACF,GAAwB,mBAAbA,EAAIz4C,KACby4C,EAAIz4C,KAAK6M,EAAS6G,OACb,CAEL,IAAI41C,EAAO7Q,EAAIvxB,UACXoiC,GAA6B,mBAAdA,EAAKtpD,MACtBspD,EAAKtpD,KAAK6M,EAAS6G,EAEvB,CAEJ,CACF,IAEKs1C,GAAYz/D,GACnB,IAkMI+9B,EAAW,SAAUrc,EAAM1hB,GAC7B,GAAI42D,EAASiH,UAAYhO,EACvB,OAAOqP,EAAMrC,GAA+B/4B,EAAS+rB,IAEvD,IACEnuC,EAAKmuC,EAAO/rB,GAAS,SAAU1oC,IAClB,IAAPA,GAEFw7D,EAASoI,WAAU,GACnBE,EA1UV,SAAuCvzC,EAAMvwB,GAC3C,OAAO0hE,GACLnxC,EACAvwB,EACAqhE,GAAsBE,QACrB,4BAAgChxC,EAAa,SAAI,SAAcvwB,EAAW,SAAI,4BAEnF,CAmUgB4kE,CAA6Bl8B,EAAS+rB,KACnCoN,GAAQ7hE,IACjBw7D,EAASoI,WAAU,GACnBE,EAAM9jE,IAEQ,iBAAPA,GACQ,iBAAPA,IACc,iBAAZA,EAAGrL,MAAwC,iBAAZqL,EAAG/J,OAG5C6tE,EApXV,SAA0CvzC,EAAMvwB,GAC9C,OAAO0hE,GACLnxC,EACAvwB,EACAqhE,GAAsBC,WACrB,+BAAmC/wC,EAAa,SAAI,SAgDzD,SAAyBvwB,GACvB,GAAkB,iBAAPA,EAAmB,OAAOA,EACrC,GAAI,SAAUA,EAAM,OAAOA,EAAGrL,KAC9B,IAAIkH,EAAW,CAAC,EAIhB,OAHA+lE,GAAgB13D,SAAQ,SAAU3C,GAC5BA,KAAOvH,IAAMnE,EAAS0L,GAAOvH,EAAGuH,GACtC,IACO4E,KAAKC,UAAUvQ,EAAU,KAAM,EACxC,CAxDsE,CAChEmE,GACG,4BAET,CA2WgB6kE,CAAgCn8B,EAAS+rB,IAC7B,iBAAPz0D,GAAmBA,EAAGqL,QAC/BmwD,EAASnwD,QAAQrL,GAEjBw7D,EAASjwD,KAAKvL,IAIhB4E,EAAK5E,EAET,GACF,CAAE,MAAOhL,GACP8uE,EAAM9uE,EACR,CACF,EAEAgtE,GAASC,EAAOt/B,GAAU,WAGxB,IAAImiC,EA0HR,SACEx7B,GAEA,OAAOu5B,GACLv5B,EACA,oBACA,SAAU25B,EAAOtjE,EAAGmgB,EAAOvY,GACzB,OAKN,SACE07D,EACAnjD,EACAvY,GAEA,OAAO,SAA0BvH,EAAIuwB,EAAM3rB,GACzC,OAAOq+D,EAAMjjE,EAAIuwB,GAAM,SAAUsf,GACb,mBAAPA,IACJ/vB,EAAM+1C,WAAWtuD,KACpBuY,EAAM+1C,WAAWtuD,GAAO,IAE1BuY,EAAM+1C,WAAWtuD,GAAKgE,KAAKskC,IAE7BjrC,EAAKirC,EACP,GACF,CACF,CArBak1B,CAAe9B,EAAOnjD,EAAOvY,EACtC,GAEJ,CApIsBy9D,CAAmB17B,GAErC04B,GADY8C,EAAY1sE,OAAOojE,EAASjH,OAAO0Q,cAC/BtiC,GAAU,WACxB,GAAI64B,EAASiH,UAAYhO,EACvB,OAAOqP,EAAMrC,GAA+B/4B,EAAS+rB,IAEvD+G,EAASiH,QAAU,KACnBe,EAAW/O,GACP+G,EAASjH,OAAOp6C,KAClBqhD,EAASjH,OAAOp6C,IAAItgB,WAAU,WAC5B67D,GAAmBjB,EACrB,GAEJ,GACF,GACF,EAEAzK,GAAQ/6C,UAAU00D,YAAc,SAAsBlP,GACpDx8D,KAAKywC,QAAU+rB,EACfx8D,KAAK43C,IAAM53C,KAAK43C,GAAG4kB,EACrB,EAEAzK,GAAQ/6C,UAAUi2D,eAAiB,WAEnC,EAEAlb,GAAQ/6C,UAAUk2D,SAAW,WAG3BltE,KAAKgF,UAAUiN,SAAQ,SAAUk7D,GAC/BA,GACF,IACAntE,KAAKgF,UAAY,GAIjBhF,KAAKywC,QAAUusB,GACfh9D,KAAKwqE,QAAU,IACjB,EAoHA,IAAI4C,GAA6B,SAAUrb,GACzC,SAASqb,EAAc9Q,EAAQjoD,GAC7B09C,EAAQzsD,KAAKtF,KAAMs8D,EAAQjoD,GAE3BrU,KAAKqtE,eAAiBC,GAAYttE,KAAKqU,KACzC,CAkFA,OAhFK09C,IAAUqb,EAAaG,UAAYxb,GACxCqb,EAAap2D,UAAYvX,OAAOsiE,OAAQhQ,GAAWA,EAAQ/6C,WAC3Do2D,EAAap2D,UAAU0R,YAAc0kD,EAErCA,EAAap2D,UAAUi2D,eAAiB,WACtC,IAAI1J,EAAWvjE,KAEf,KAAIA,KAAKgF,UAAU7D,OAAS,GAA5B,CAIA,IAAIm7D,EAASt8D,KAAKs8D,OACdkR,EAAelR,EAAO7rD,QAAQ03D,eAC9BsF,EAAiBvE,IAAqBsE,EAEtCC,GACFztE,KAAKgF,UAAUsO,KAAKo0D,MAGtB,IAAIgG,EAAqB,WACvB,IAAIj9B,EAAU8yB,EAAS9yB,QAInB7sC,EAAW0pE,GAAY/J,EAASlvD,MAChCkvD,EAAS9yB,UAAYusB,IAASp5D,IAAa2/D,EAAS8J,gBAIxD9J,EAAS+H,aAAa1nE,GAAU,SAAU44D,GACpCiR,GACF11D,GAAaukD,EAAQE,EAAO/rB,GAAS,EAEzC,GACF,EACA9sC,OAAOgI,iBAAiB,WAAY+hE,GACpC1tE,KAAKgF,UAAUsO,MAAK,WAClB3P,OAAOmI,oBAAoB,WAAY4hE,EACzC,GA7BA,CA8BF,EAEAN,EAAap2D,UAAU22D,GAAK,SAAalwE,GACvCkG,OAAOgkE,QAAQgG,GAAGlwE,EACpB,EAEA2vE,EAAap2D,UAAU1D,KAAO,SAAe1P,EAAU2nE,EAAYC,GACjE,IAAIjI,EAAWvjE,KAGX4tE,EADM5tE,KACUywC,QACpBzwC,KAAKsrE,aAAa1nE,GAAU,SAAU44D,GACpC2M,GAAU3J,GAAU+D,EAASlvD,KAAOmoD,EAAMG,WAC1C5kD,GAAawrD,EAASjH,OAAQE,EAAOoR,GAAW,GAChDrC,GAAcA,EAAW/O,EAC3B,GAAGgP,EACL,EAEA4B,EAAap2D,UAAU5D,QAAU,SAAkBxP,EAAU2nE,EAAYC,GACvE,IAAIjI,EAAWvjE,KAGX4tE,EADM5tE,KACUywC,QACpBzwC,KAAKsrE,aAAa1nE,GAAU,SAAU44D,GACpCwL,GAAaxI,GAAU+D,EAASlvD,KAAOmoD,EAAMG,WAC7C5kD,GAAawrD,EAASjH,OAAQE,EAAOoR,GAAW,GAChDrC,GAAcA,EAAW/O,EAC3B,GAAGgP,EACL,EAEA4B,EAAap2D,UAAU20D,UAAY,SAAoBr4D,GACrD,GAAIg6D,GAAYttE,KAAKqU,QAAUrU,KAAKywC,QAAQksB,SAAU,CACpD,IAAIlsB,EAAU+uB,GAAUx/D,KAAKqU,KAAOrU,KAAKywC,QAAQksB,UACjDrpD,EAAO61D,GAAU14B,GAAWu3B,GAAav3B,EAC3C,CACF,EAEA28B,EAAap2D,UAAU62D,mBAAqB,WAC1C,OAAOP,GAAYttE,KAAKqU,KAC1B,EAEO+4D,CACT,CAxFgC,CAwF9Brb,IAEF,SAASub,GAAaj5D,GACpB,IAAI3X,EAAOiH,OAAOC,SAASwlB,SACvB0kD,EAAgBpxE,EAAKu3B,cACrB85C,EAAgB15D,EAAK4f,cAQzB,OAJI5f,GAAUy5D,IAAkBC,GAC6B,IAA1DD,EAAc/uE,QAAQygE,GAAUuO,EAAgB,QACjDrxE,EAAOA,EAAKsK,MAAMqN,EAAKlT,UAEjBzE,GAAQ,KAAOiH,OAAOC,SAAS6mB,OAAS9mB,OAAOC,SAAS84D,IAClE,CAIA,IAAIsR,GAA4B,SAAUjc,GACxC,SAASic,EAAa1R,EAAQjoD,EAAM45D,GAClClc,EAAQzsD,KAAKtF,KAAMs8D,EAAQjoD,GAEvB45D,GAqGR,SAAwB55D,GACtB,IAAIzQ,EAAW0pE,GAAYj5D,GAC3B,IAAK,OAAOuE,KAAKhV,GAEf,OADAD,OAAOC,SAASwP,QAAQosD,GAAUnrD,EAAO,KAAOzQ,KACzC,CAEX,CA3GoBsqE,CAAcluE,KAAKqU,OAGnC85D,IACF,CA8FA,OA5FKpc,IAAUic,EAAYT,UAAYxb,GACvCic,EAAYh3D,UAAYvX,OAAOsiE,OAAQhQ,GAAWA,EAAQ/6C,WAC1Dg3D,EAAYh3D,UAAU0R,YAAcslD,EAIpCA,EAAYh3D,UAAUi2D,eAAiB,WACrC,IAAI1J,EAAWvjE,KAEf,KAAIA,KAAKgF,UAAU7D,OAAS,GAA5B,CAIA,IACIqsE,EADSxtE,KAAKs8D,OACQ7rD,QAAQ03D,eAC9BsF,EAAiBvE,IAAqBsE,EAEtCC,GACFztE,KAAKgF,UAAUsO,KAAKo0D,MAGtB,IAAIgG,EAAqB,WACvB,IAAIj9B,EAAU8yB,EAAS9yB,QAClB09B,MAGL5K,EAAS+H,aAAa8C,MAAW,SAAU5R,GACrCiR,GACF11D,GAAawrD,EAASjH,OAAQE,EAAO/rB,GAAS,GAE3Cy4B,IACHmF,GAAY7R,EAAMG,SAEtB,GACF,EACI2R,EAAYpF,GAAoB,WAAa,aACjDvlE,OAAOgI,iBACL2iE,EACAZ,GAEF1tE,KAAKgF,UAAUsO,MAAK,WAClB3P,OAAOmI,oBAAoBwiE,EAAWZ,EACxC,GA/BA,CAgCF,EAEAM,EAAYh3D,UAAU1D,KAAO,SAAe1P,EAAU2nE,EAAYC,GAChE,IAAIjI,EAAWvjE,KAGX4tE,EADM5tE,KACUywC,QACpBzwC,KAAKsrE,aACH1nE,GACA,SAAU44D,GACR+R,GAAS/R,EAAMG,UACf5kD,GAAawrD,EAASjH,OAAQE,EAAOoR,GAAW,GAChDrC,GAAcA,EAAW/O,EAC3B,GACAgP,EAEJ,EAEAwC,EAAYh3D,UAAU5D,QAAU,SAAkBxP,EAAU2nE,EAAYC,GACtE,IAAIjI,EAAWvjE,KAGX4tE,EADM5tE,KACUywC,QACpBzwC,KAAKsrE,aACH1nE,GACA,SAAU44D,GACR6R,GAAY7R,EAAMG,UAClB5kD,GAAawrD,EAASjH,OAAQE,EAAOoR,GAAW,GAChDrC,GAAcA,EAAW/O,EAC3B,GACAgP,EAEJ,EAEAwC,EAAYh3D,UAAU22D,GAAK,SAAalwE,GACtCkG,OAAOgkE,QAAQgG,GAAGlwE,EACpB,EAEAuwE,EAAYh3D,UAAU20D,UAAY,SAAoBr4D,GACpD,IAAIm9B,EAAUzwC,KAAKywC,QAAQksB,SACvByR,OAAc39B,IAChBn9B,EAAOi7D,GAAS99B,GAAW49B,GAAY59B,GAE3C,EAEAu9B,EAAYh3D,UAAU62D,mBAAqB,WACzC,OAAOO,IACT,EAEOJ,CACT,CAvG+B,CAuG7Bjc,IAUF,SAASoc,KACP,IAAIzxE,EAAO0xE,KACX,MAAuB,MAAnB1xE,EAAK0iE,OAAO,KAGhBiP,GAAY,IAAM3xE,IACX,EACT,CAEA,SAAS0xE,KAGP,IAAI3qE,EAAOE,OAAOC,SAASH,KACvBqiB,EAAQriB,EAAK1E,QAAQ,KAEzB,OAAI+mB,EAAQ,EAAY,GAExBriB,EAAOA,EAAKuD,MAAM8e,EAAQ,EAG5B,CAEA,SAAS0oD,GAAQ9xE,GACf,IAAI+G,EAAOE,OAAOC,SAASH,KACvBjG,EAAIiG,EAAK1E,QAAQ,KAErB,OADWvB,GAAK,EAAIiG,EAAKuD,MAAM,EAAGxJ,GAAKiG,GACxB,IAAM/G,CACvB,CAEA,SAAS6xE,GAAU7xE,GACbwsE,GACFC,GAAUqF,GAAO9xE,IAEjBiH,OAAOC,SAAS84D,KAAOhgE,CAE3B,CAEA,SAAS2xE,GAAa3xE,GAChBwsE,GACFlB,GAAawG,GAAO9xE,IAEpBiH,OAAOC,SAASwP,QAAQo7D,GAAO9xE,GAEnC,CAIA,IAAI+xE,GAAgC,SAAU1c,GAC5C,SAAS0c,EAAiBnS,EAAQjoD,GAChC09C,EAAQzsD,KAAKtF,KAAMs8D,EAAQjoD,GAC3BrU,KAAKq/D,MAAQ,GACbr/D,KAAK8lB,OAAS,CAChB,CAoEA,OAlEKisC,IAAU0c,EAAgBlB,UAAYxb,GAC3C0c,EAAgBz3D,UAAYvX,OAAOsiE,OAAQhQ,GAAWA,EAAQ/6C,WAC9Dy3D,EAAgBz3D,UAAU0R,YAAc+lD,EAExCA,EAAgBz3D,UAAU1D,KAAO,SAAe1P,EAAU2nE,EAAYC,GACpE,IAAIjI,EAAWvjE,KAEfA,KAAKsrE,aACH1nE,GACA,SAAU44D,GACR+G,EAASlE,MAAQkE,EAASlE,MAAMr4D,MAAM,EAAGu8D,EAASz9C,MAAQ,GAAG3lB,OAAOq8D,GACpE+G,EAASz9C,QACTylD,GAAcA,EAAW/O,EAC3B,GACAgP,EAEJ,EAEAiD,EAAgBz3D,UAAU5D,QAAU,SAAkBxP,EAAU2nE,EAAYC,GAC1E,IAAIjI,EAAWvjE,KAEfA,KAAKsrE,aACH1nE,GACA,SAAU44D,GACR+G,EAASlE,MAAQkE,EAASlE,MAAMr4D,MAAM,EAAGu8D,EAASz9C,OAAO3lB,OAAOq8D,GAChE+O,GAAcA,EAAW/O,EAC3B,GACAgP,EAEJ,EAEAiD,EAAgBz3D,UAAU22D,GAAK,SAAalwE,GAC1C,IAAI8lE,EAAWvjE,KAEX0uE,EAAc1uE,KAAK8lB,MAAQroB,EAC/B,KAAIixE,EAAc,GAAKA,GAAe1uE,KAAKq/D,MAAMl+D,QAAjD,CAGA,IAAIq7D,EAAQx8D,KAAKq/D,MAAMqP,GACvB1uE,KAAKyrE,kBACHjP,GACA,WACE,IAAIvlB,EAAOssB,EAAS9yB,QACpB8yB,EAASz9C,MAAQ4oD,EACjBnL,EAASmI,YAAYlP,GACrB+G,EAASjH,OAAOsP,WAAW35D,SAAQ,SAAUoc,GAC3CA,GAAQA,EAAKmuC,EAAOvlB,EACtB,GACF,IACA,SAAUykB,GACJmO,GAAoBnO,EAAK0N,GAAsBG,cACjDhG,EAASz9C,MAAQ4oD,EAErB,GAhBF,CAkBF,EAEAD,EAAgBz3D,UAAU62D,mBAAqB,WAC7C,IAAIp9B,EAAUzwC,KAAKq/D,MAAMr/D,KAAKq/D,MAAMl+D,OAAS,GAC7C,OAAOsvC,EAAUA,EAAQksB,SAAW,GACtC,EAEA8R,EAAgBz3D,UAAU20D,UAAY,WAEtC,EAEO8C,CACT,CA1EmC,CA0EjC1c,IAME4c,GAAY,SAAoBl+D,QACjB,IAAZA,IAAqBA,EAAU,CAAC,GAKrCzQ,KAAKkiB,IAAM,KACXliB,KAAK4uE,KAAO,GACZ5uE,KAAKyQ,QAAUA,EACfzQ,KAAKksE,YAAc,GACnBlsE,KAAKgtE,aAAe,GACpBhtE,KAAK4rE,WAAa,GAClB5rE,KAAK6uE,QAAUvI,GAAc71D,EAAQu0D,QAAU,GAAIhlE,MAEnD,IAAIopD,EAAO34C,EAAQ24C,MAAQ,OAW3B,OAVAppD,KAAKiuE,SACM,YAAT7kB,IAAuB8f,KAA0C,IAArBz4D,EAAQw9D,SAClDjuE,KAAKiuE,WACP7kB,EAAO,QAEJ0b,KACH1b,EAAO,YAETppD,KAAKopD,KAAOA,EAEJA,GACN,IAAK,UACHppD,KAAK2nE,QAAU,IAAIyF,GAAaptE,KAAMyQ,EAAQ4D,MAC9C,MACF,IAAK,OACHrU,KAAK2nE,QAAU,IAAIqG,GAAYhuE,KAAMyQ,EAAQ4D,KAAMrU,KAAKiuE,UACxD,MACF,IAAK,WACHjuE,KAAK2nE,QAAU,IAAI8G,GAAgBzuE,KAAMyQ,EAAQ4D,MAOvD,EAEIy6D,GAAqB,CAAEvI,aAAc,CAAEhnC,cAAc,IAEzDovC,GAAU33D,UAAU6Q,MAAQ,SAAgBiH,EAAK2hB,EAAS4rB,GACxD,OAAOr8D,KAAK6uE,QAAQhnD,MAAMiH,EAAK2hB,EAAS4rB,EAC1C,EAEAyS,GAAmBvI,aAAaxvD,IAAM,WACpC,OAAO/W,KAAK2nE,SAAW3nE,KAAK2nE,QAAQl3B,OACtC,EAEAk+B,GAAU33D,UAAUmyB,KAAO,SAAejnB,GACtC,IAAIqhD,EAAWvjE,KA0BjB,GAjBAA,KAAK4uE,KAAKt7D,KAAK4O,GAIfA,EAAI6sD,MAAM,kBAAkB,WAE1B,IAAIjpD,EAAQy9C,EAASqL,KAAK7vE,QAAQmjB,GAC9B4D,GAAS,GAAKy9C,EAASqL,KAAK95D,OAAOgR,EAAO,GAG1Cy9C,EAASrhD,MAAQA,IAAOqhD,EAASrhD,IAAMqhD,EAASqL,KAAK,IAAM,MAE1DrL,EAASrhD,KAAOqhD,EAASoE,QAAQuF,UACxC,KAIIltE,KAAKkiB,IAAT,CAIAliB,KAAKkiB,IAAMA,EAEX,IAAIylD,EAAU3nE,KAAK2nE,QAEnB,GAAIA,aAAmByF,IAAgBzF,aAAmBqG,GAAa,CACrE,IASIf,EAAiB,SAAU+B,GAC7BrH,EAAQsF,iBAVgB,SAAU+B,GAClC,IAAI12C,EAAOqvC,EAAQl3B,QACf+8B,EAAejK,EAAS9yD,QAAQ03D,eACfe,IAAqBsE,GAEpB,aAAcwB,GAClCj3D,GAAawrD,EAAUyL,EAAc12C,GAAM,EAE/C,CAGE22C,CAAoBD,EACtB,EACArH,EAAQ2D,aACN3D,EAAQkG,qBACRZ,EACAA,EAEJ,CAEAtF,EAAQwD,QAAO,SAAU3O,GACvB+G,EAASqL,KAAK38D,SAAQ,SAAUiQ,GAC9BA,EAAIgtD,OAAS1S,CACf,GACF,GA/BA,CAgCF,EAEAmS,GAAU33D,UAAUm4D,WAAa,SAAqB5/D,GACpD,OAAO6/D,GAAapvE,KAAKksE,YAAa38D,EACxC,EAEAo/D,GAAU33D,UAAUq4D,cAAgB,SAAwB9/D,GAC1D,OAAO6/D,GAAapvE,KAAKgtE,aAAcz9D,EACzC,EAEAo/D,GAAU33D,UAAUs4D,UAAY,SAAoB//D,GAClD,OAAO6/D,GAAapvE,KAAK4rE,WAAYr8D,EACvC,EAEAo/D,GAAU33D,UAAUo0D,QAAU,SAAkBxzB,EAAIyzB,GAClDrrE,KAAK2nE,QAAQyD,QAAQxzB,EAAIyzB,EAC3B,EAEAsD,GAAU33D,UAAUujB,QAAU,SAAkB8wC,GAC9CrrE,KAAK2nE,QAAQptC,QAAQ8wC,EACvB,EAEAsD,GAAU33D,UAAU1D,KAAO,SAAe1P,EAAU2nE,EAAYC,GAC5D,IAAIjI,EAAWvjE,KAGjB,IAAKurE,IAAeC,GAA8B,oBAAZtgD,QACpC,OAAO,IAAIA,SAAQ,SAAU+E,EAAS6G,GACpCysC,EAASoE,QAAQr0D,KAAK1P,EAAUqsB,EAAS6G,EAC3C,IAEA92B,KAAK2nE,QAAQr0D,KAAK1P,EAAU2nE,EAAYC,EAE5C,EAEAmD,GAAU33D,UAAU5D,QAAU,SAAkBxP,EAAU2nE,EAAYC,GAClE,IAAIjI,EAAWvjE,KAGjB,IAAKurE,IAAeC,GAA8B,oBAAZtgD,QACpC,OAAO,IAAIA,SAAQ,SAAU+E,EAAS6G,GACpCysC,EAASoE,QAAQv0D,QAAQxP,EAAUqsB,EAAS6G,EAC9C,IAEA92B,KAAK2nE,QAAQv0D,QAAQxP,EAAU2nE,EAAYC,EAE/C,EAEAmD,GAAU33D,UAAU22D,GAAK,SAAalwE,GACpCuC,KAAK2nE,QAAQgG,GAAGlwE,EAClB,EAEAkxE,GAAU33D,UAAUu4D,KAAO,WACzBvvE,KAAK2tE,IAAI,EACX,EAEAgB,GAAU33D,UAAUw4D,QAAU,WAC5BxvE,KAAK2tE,GAAG,EACV,EAEAgB,GAAU33D,UAAUy4D,qBAAuB,SAA+B1nE,GACxE,IAAIy0D,EAAQz0D,EACRA,EAAG80D,QACD90D,EACA/H,KAAKiwB,QAAQloB,GAAIy0D,MACnBx8D,KAAKumE,aACT,OAAK/J,EAGE,GAAGr8D,OAAOwP,MACf,GACA6sD,EAAMK,QAAQjgE,KAAI,SAAUqH,GAC1B,OAAOxE,OAAOuwB,KAAK/rB,EAAEhG,YAAYrB,KAAI,SAAU0S,GAC7C,OAAOrL,EAAEhG,WAAWqR,EACtB,GACF,KARO,EAUX,EAEAq/D,GAAU33D,UAAUiZ,QAAU,SAC5BloB,EACA0oC,EACA4L,GAGA,IAAIz4C,EAAWw+D,GAAkBr6D,EADjC0oC,EAAUA,GAAWzwC,KAAK2nE,QAAQl3B,QACY4L,EAAQr8C,MAClDw8D,EAAQx8D,KAAK6nB,MAAMjkB,EAAU6sC,GAC7BksB,EAAWH,EAAMH,gBAAkBG,EAAMG,SAEzCl5D,EA4CN,SAAqB4Q,EAAMsoD,EAAUvT,GACnC,IAAI1sD,EAAgB,SAAT0sD,EAAkB,IAAMuT,EAAWA,EAC9C,OAAOtoD,EAAOmrD,GAAUnrD,EAAO,IAAM3X,GAAQA,CAC/C,CA/CagzE,CADA1vE,KAAK2nE,QAAQtzD,KACIsoD,EAAU38D,KAAKopD,MAC3C,MAAO,CACLxlD,SAAUA,EACV44D,MAAOA,EACP/4D,KAAMA,EAENksE,aAAc/rE,EACd2oE,SAAU/P,EAEd,EAEAmS,GAAU33D,UAAUkwD,UAAY,WAC9B,OAAOlnE,KAAK6uE,QAAQ3H,WACtB,EAEAyH,GAAU33D,UAAUgwD,SAAW,SAAmBC,EAAezK,GAC/Dx8D,KAAK6uE,QAAQ7H,SAASC,EAAezK,GACjCx8D,KAAK2nE,QAAQl3B,UAAYusB,IAC3Bh9D,KAAK2nE,QAAQ2D,aAAatrE,KAAK2nE,QAAQkG,qBAE3C,EAEAc,GAAU33D,UAAUmwD,UAAY,SAAoBnC,GAIlDhlE,KAAK6uE,QAAQ1H,UAAUnC,GACnBhlE,KAAK2nE,QAAQl3B,UAAYusB,IAC3Bh9D,KAAK2nE,QAAQ2D,aAAatrE,KAAK2nE,QAAQkG,qBAE3C,EAEApuE,OAAO+7C,iBAAkBmzB,GAAU33D,UAAW83D,IAE9C,IAAIc,GAAcjB,GAElB,SAASS,GAAc5d,EAAMjiD,GAE3B,OADAiiD,EAAKl+C,KAAK/D,GACH,WACL,IAAI/R,EAAIg0D,EAAKzyD,QAAQwQ,GACjB/R,GAAK,GAAKg0D,EAAK18C,OAAOtX,EAAG,EAC/B,CACF,CAQAmxE,GAAUtkC,QA70DV,SAAS,EAAS7lB,GAChB,IAAI,EAAQqrD,WAAa5M,KAASz+C,EAAlC,CACA,EAAQqrD,WAAY,EAEpB5M,GAAOz+C,EAEP,IAAIsrD,EAAQ,SAAU1rE,GAAK,YAAauD,IAANvD,CAAiB,EAE/C2rE,EAAmB,SAAUjR,EAAIkR,GACnC,IAAIxyE,EAAIshE,EAAGtoD,SAASy5D,aAChBH,EAAMtyE,IAAMsyE,EAAMtyE,EAAIA,EAAEsC,OAASgwE,EAAMtyE,EAAIA,EAAEqhE,wBAC/CrhE,EAAEshE,EAAIkR,EAEV,EAEAxrD,EAAIC,MAAM,CACR9N,aAAc,WACRm5D,EAAM9vE,KAAKwW,SAAS8lD,SACtBt8D,KAAKm+D,YAAcn+D,KACnBA,KAAKkwE,QAAUlwE,KAAKwW,SAAS8lD,OAC7Bt8D,KAAKkwE,QAAQ/mC,KAAKnpC,MAClBwkB,EAAI1gB,KAAKqsE,eAAenwE,KAAM,SAAUA,KAAKkwE,QAAQvI,QAAQl3B,UAE7DzwC,KAAKm+D,YAAen+D,KAAKqZ,SAAWrZ,KAAKqZ,QAAQ8kD,aAAgBn+D,KAEnE+vE,EAAiB/vE,KAAMA,KACzB,EACAwM,UAAW,WACTujE,EAAiB/vE,KACnB,IAGFP,OAAOoX,eAAe2N,EAAIxN,UAAW,UAAW,CAC9CD,IAAK,WAAkB,OAAO/W,KAAKm+D,YAAY+R,OAAQ,IAGzDzwE,OAAOoX,eAAe2N,EAAIxN,UAAW,SAAU,CAC7CD,IAAK,WAAkB,OAAO/W,KAAKm+D,YAAY+Q,MAAO,IAGxD1qD,EAAI8lB,UAAU,aAAc,IAC5B9lB,EAAI8lB,UAAU,aAAc44B,IAE5B,IAAIkN,EAAS5rD,EAAIwpB,OAAOqiC,sBAExBD,EAAOE,iBAAmBF,EAAOG,iBAAmBH,EAAOI,kBAAoBJ,EAAOz9D,OA5CtC,CA6ClD,EAgyDAg8D,GAAUj7D,QAAU,QACpBi7D,GAAU9E,oBAAsBA,GAChC8E,GAAUvF,sBAAwBA,GAClCuF,GAAU8B,eAAiBzT,GAEvB8H,IAAanhE,OAAO6gB,KACtB7gB,OAAO6gB,IAAIgmB,IAAImkC,ICjlGjB,MAAM3iD,GAAQ,eACR0kD,GAAgB,IAAI9Q,OAAO,IAAM5zC,GAAQ,aAAc,MACvD2kD,GAAe,IAAI/Q,OAAO,IAAM5zC,GAAQ,KAAM,MAEpD,SAAS4kD,GAAiB3yE,EAAYtB,GACrC,IAEC,MAAO,CAAC8+D,mBAAmBx9D,EAAWnB,KAAK,KAC5C,CAAE,MAEF,CAEA,GAA0B,IAAtBmB,EAAWkD,OACd,OAAOlD,EAGRtB,EAAQA,GAAS,EAGjB,MAAM43C,EAAOt2C,EAAW+I,MAAM,EAAGrK,GAC3Bk0E,EAAQ5yE,EAAW+I,MAAMrK,GAE/B,OAAO6N,MAAMwM,UAAU7W,OAAOmF,KAAK,GAAIsrE,GAAiBr8B,GAAOq8B,GAAiBC,GACjF,CAEA,SAAS,GAAOxyD,GACf,IACC,OAAOo9C,mBAAmBp9C,EAC3B,CAAE,MACD,IAAI0iD,EAAS1iD,EAAMwJ,MAAM6oD,KAAkB,GAE3C,IAAK,IAAIlzE,EAAI,EAAGA,EAAIujE,EAAO5/D,OAAQ3D,IAGlCujE,GAFA1iD,EAAQuyD,GAAiB7P,EAAQvjE,GAAGV,KAAK,KAE1B+qB,MAAM6oD,KAAkB,GAGxC,OAAOryD,CACR,CACD,CCvCe,SAASyyD,GAAa/lB,EAAQgmB,GAC5C,GAAwB,iBAAXhmB,GAA4C,iBAAdgmB,EAC1C,MAAM,IAAI7lC,UAAU,iDAGrB,GAAe,KAAX6f,GAA+B,KAAdgmB,EACpB,MAAO,GAGR,MAAMC,EAAiBjmB,EAAOhsD,QAAQgyE,GAEtC,OAAwB,IAApBC,EACI,GAGD,CACNjmB,EAAO/jD,MAAM,EAAGgqE,GAChBjmB,EAAO/jD,MAAMgqE,EAAiBD,EAAU5vE,QAE1C,CCnBO,SAAS8vE,GAAY7mC,EAAQ8mC,GACnC,MAAMrlD,EAAS,CAAC,EAEhB,GAAIrhB,MAAM6I,QAAQ69D,GACjB,IAAK,MAAM5hE,KAAO4hE,EAAW,CAC5B,MAAM7gD,EAAa5wB,OAAOyjC,yBAAyBkH,EAAQ96B,GACvD+gB,GAAYvZ,YACfrX,OAAOoX,eAAegV,EAAQvc,EAAK+gB,EAErC,MAGA,IAAK,MAAM/gB,KAAOuZ,QAAQsoD,QAAQ/mC,GAAS,CAC1C,MAAM/Z,EAAa5wB,OAAOyjC,yBAAyBkH,EAAQ96B,GACvD+gB,EAAWvZ,YAEVo6D,EAAU5hE,EADA86B,EAAO96B,GACK86B,IACzB3qC,OAAOoX,eAAegV,EAAQvc,EAAK+gB,EAGtC,CAGD,OAAOxE,CACR,CCpBA,MAAMulD,GAAoB9iE,GAASA,QAG7B+iE,GAAkBtmB,GAAUluD,mBAAmBkuD,GAAQ33C,QAAQ,YAAYrO,GAAK,IAAIA,EAAE85C,WAAW,GAAGn4C,SAAS,IAAI0uD,kBAEjHkc,GAA2Bp6D,OAAO,4BA8OxC,SAASq6D,GAA6BjjE,GACrC,GAAqB,iBAAVA,GAAuC,IAAjBA,EAAMnN,OACtC,MAAM,IAAI+pC,UAAU,uDAEtB,CAEA,SAAS,GAAO58B,EAAOmC,GACtB,OAAIA,EAAQ8qD,OACJ9qD,EAAQkxD,OAAS0P,GAAgB/iE,GAASzR,mBAAmByR,GAG9DA,CACR,CAEA,SAAS,GAAOA,EAAOmC,GACtB,OAAIA,EAAQ+qD,OHzLE,SAA4BgW,GAC1C,GAA0B,iBAAfA,EACV,MAAM,IAAItmC,UAAU,6DAA+DsmC,EAAa,KAGjG,IAEC,OAAO/V,mBAAmB+V,EAC3B,CAAE,MAED,OA9CF,SAAkCnzD,GAEjC,MAAMozD,EAAa,CAClB,SAAU,KACV,SAAU,MAGX,IAAI5pD,EAAQ8oD,GAAaxmD,KAAK9L,GAC9B,KAAOwJ,GAAO,CACb,IAEC4pD,EAAW5pD,EAAM,IAAM4zC,mBAAmB5zC,EAAM,GACjD,CAAE,MACD,MAAMgE,EAAS,GAAOhE,EAAM,IAExBgE,IAAWhE,EAAM,KACpB4pD,EAAW5pD,EAAM,IAAMgE,EAEzB,CAEAhE,EAAQ8oD,GAAaxmD,KAAK9L,EAC3B,CAGAozD,EAAW,OAAS,IAEpB,MAAMxkC,EAAUxtC,OAAOuwB,KAAKyhD,GAE5B,IAAK,MAAMniE,KAAO29B,EAEjB5uB,EAAQA,EAAMjL,QAAQ,IAAIwsD,OAAOtwD,EAAK,KAAMmiE,EAAWniE,IAGxD,OAAO+O,CACR,CAYSqzD,CAAyBF,EACjC,CACD,CG8KS,CAAgBljE,GAGjBA,CACR,CAEA,SAASqjE,GAAWtzD,GACnB,OAAI7T,MAAM6I,QAAQgL,GACVA,EAAM/B,OAGO,iBAAV+B,EACHszD,GAAWlyE,OAAOuwB,KAAK3R,IAC5B/B,MAAK,CAACnf,EAAGkH,IAAMzE,OAAOzC,GAAKyC,OAAOyE,KAClCzH,KAAI0S,GAAO+O,EAAM/O,KAGb+O,CACR,CAEA,SAASuzD,GAAWvzD,GACnB,MAAMwzD,EAAYxzD,EAAMtf,QAAQ,KAKhC,OAJmB,IAAf8yE,IACHxzD,EAAQA,EAAMrX,MAAM,EAAG6qE,IAGjBxzD,CACR,CAYA,SAASyzD,GAAWxjE,EAAOmC,GAO1B,OANIA,EAAQshE,eAAiBnyE,OAAO+hC,MAAM/hC,OAAO0O,KAA6B,iBAAVA,GAAuC,KAAjBA,EAAMjJ,OAC/FiJ,EAAQ1O,OAAO0O,IACLmC,EAAQuhE,eAA2B,OAAV1jE,GAA2C,SAAxBA,EAAM2lB,eAAoD,UAAxB3lB,EAAM2lB,gBAC9F3lB,EAAgC,SAAxBA,EAAM2lB,eAGR3lB,CACR,CAEO,SAAS2jE,GAAQ5zD,GAEvB,MAAM6zD,GADN7zD,EAAQuzD,GAAWvzD,IACMtf,QAAQ,KACjC,OAAoB,IAAhBmzE,EACI,GAGD7zD,EAAMrX,MAAMkrE,EAAa,EACjC,CAEO,SAAS,GAAM5rD,EAAO7V,GAW5B8gE,IAVA9gE,EAAU,CACT+qD,QAAQ,EACRl/C,MAAM,EACN61D,YAAa,OACbC,qBAAsB,IACtBL,cAAc,EACdC,eAAe,KACZvhE,IAGiC2hE,sBAErC,MAAMC,EApMP,SAA8B5hE,GAC7B,IAAIob,EAEJ,OAAQpb,EAAQ0hE,aACf,IAAK,QACJ,MAAO,CAAC7iE,EAAKhB,EAAOiiC,KACnB1kB,EAAS,YAAY1B,KAAK7a,GAE1BA,EAAMA,EAAI8D,QAAQ,UAAW,IAExByY,QAKoBlkB,IAArB4oC,EAAYjhC,KACfihC,EAAYjhC,GAAO,CAAC,GAGrBihC,EAAYjhC,GAAKuc,EAAO,IAAMvd,GAR7BiiC,EAAYjhC,GAAOhB,CAQe,EAIrC,IAAK,UACJ,MAAO,CAACgB,EAAKhB,EAAOiiC,KACnB1kB,EAAS,SAAS1B,KAAK7a,GACvBA,EAAMA,EAAI8D,QAAQ,OAAQ,IAErByY,OAKoBlkB,IAArB4oC,EAAYjhC,GAKhBihC,EAAYjhC,GAAO,IAAIihC,EAAYjhC,GAAMhB,GAJxCiiC,EAAYjhC,GAAO,CAAChB,GALpBiiC,EAAYjhC,GAAOhB,CAS2B,EAIjD,IAAK,uBACJ,MAAO,CAACgB,EAAKhB,EAAOiiC,KACnB1kB,EAAS,WAAW1B,KAAK7a,GACzBA,EAAMA,EAAI8D,QAAQ,SAAU,IAEvByY,OAKoBlkB,IAArB4oC,EAAYjhC,GAKhBihC,EAAYjhC,GAAO,IAAIihC,EAAYjhC,GAAMhB,GAJxCiiC,EAAYjhC,GAAO,CAAChB,GALpBiiC,EAAYjhC,GAAOhB,CAS2B,EAIjD,IAAK,QACL,IAAK,YACJ,MAAO,CAACgB,EAAKhB,EAAOiiC,KACnB,MAAMl9B,EAA2B,iBAAV/E,GAAsBA,EAAMxN,SAAS2P,EAAQ2hE,sBAC9DE,EAAmC,iBAAVhkE,IAAuB+E,GAAW,GAAO/E,EAAOmC,GAAS3P,SAAS2P,EAAQ2hE,sBACzG9jE,EAAQgkE,EAAiB,GAAOhkE,EAAOmC,GAAWnC,EAClD,MAAMymB,EAAW1hB,GAAWi/D,EAAiBhkE,EAAM3R,MAAM8T,EAAQ2hE,sBAAsBx1E,KAAI8xB,GAAQ,GAAOA,EAAMje,KAAuB,OAAVnC,EAAiBA,EAAQ,GAAOA,EAAOmC,GACpK8/B,EAAYjhC,GAAOylB,CAAQ,EAI7B,IAAK,oBACJ,MAAO,CAACzlB,EAAKhB,EAAOiiC,KACnB,MAAMl9B,EAAU,SAASuF,KAAKtJ,GAG9B,GAFAA,EAAMA,EAAI8D,QAAQ,OAAQ,KAErBC,EAEJ,YADAk9B,EAAYjhC,GAAOhB,EAAQ,GAAOA,EAAOmC,GAAWnC,GAIrD,MAAMikE,EAAuB,OAAVjkE,EAChB,GACAA,EAAM3R,MAAM8T,EAAQ2hE,sBAAsBx1E,KAAI8xB,GAAQ,GAAOA,EAAMje,UAE7C9I,IAArB4oC,EAAYjhC,GAKhBihC,EAAYjhC,GAAO,IAAIihC,EAAYjhC,MAASijE,GAJ3ChiC,EAAYjhC,GAAOijE,CAImC,EAIzD,QACC,MAAO,CAACjjE,EAAKhB,EAAOiiC,UACM5oC,IAArB4oC,EAAYjhC,GAKhBihC,EAAYjhC,GAAO,IAAI,CAACihC,EAAYjhC,IAAMkjE,OAAQlkE,GAJjDiiC,EAAYjhC,GAAOhB,CAIoC,EAI5D,CA0FmBmkE,CAAqBhiE,GAGjCiiE,EAAcjzE,OAAOsiE,OAAO,MAElC,GAAqB,iBAAVz7C,EACV,OAAOosD,EAKR,KAFApsD,EAAQA,EAAMjhB,OAAO+N,QAAQ,SAAU,KAGtC,OAAOs/D,EAGR,IAAK,MAAMC,KAAarsD,EAAM3pB,MAAM,KAAM,CACzC,GAAkB,KAAdg2E,EACH,SAGD,MAAMC,EAAaniE,EAAQ+qD,OAASmX,EAAUv/D,QAAQ,MAAO,KAAOu/D,EAEpE,IAAKrjE,EAAKhB,GAASwiE,GAAa8B,EAAY,UAEhCjrE,IAAR2H,IACHA,EAAMsjE,GAKPtkE,OAAkB3G,IAAV2G,EAAsB,KAAQ,CAAC,QAAS,YAAa,qBAAqBxN,SAAS2P,EAAQ0hE,aAAe7jE,EAAQ,GAAOA,EAAOmC,GACxI4hE,EAAU,GAAO/iE,EAAKmB,GAAUnC,EAAOokE,EACxC,CAEA,IAAK,MAAOpjE,EAAKhB,KAAU7O,OAAOwtC,QAAQylC,GACzC,GAAqB,iBAAVpkE,GAAgC,OAAVA,EAChC,IAAK,MAAOukE,EAAMC,KAAWrzE,OAAOwtC,QAAQ3+B,GAC3CA,EAAMukE,GAAQf,GAAWgB,EAAQriE,QAGlCiiE,EAAYpjE,GAAOwiE,GAAWxjE,EAAOmC,GAIvC,OAAqB,IAAjBA,EAAQ6L,KACJo2D,IAKiB,IAAjBjiE,EAAQ6L,KAAgB7c,OAAOuwB,KAAK0iD,GAAap2D,OAAS7c,OAAOuwB,KAAK0iD,GAAap2D,KAAK7L,EAAQ6L,OAAOC,QAAO,CAACsP,EAAQvc,KAC9H,MAAMhB,EAAQokE,EAAYpjE,GAQ1B,OAPI9Q,QAAQ8P,IAA2B,iBAAVA,IAAuB9D,MAAM6I,QAAQ/E,GAEjEud,EAAOvc,GAAOqiE,GAAWrjE,GAEzBud,EAAOvc,GAAOhB,EAGRud,CAAM,GACXpsB,OAAOsiE,OAAO,MAClB,CAEO,SAAS,GAAU33B,EAAQ35B,GACjC,IAAK25B,EACJ,MAAO,GAQRmnC,IALA9gE,EAAU,CAAC8qD,QAAQ,EAClBoG,QAAQ,EACRwQ,YAAa,OACbC,qBAAsB,OAAQ3hE,IAEM2hE,sBAErC,MAAMW,EAAezjE,GACnBmB,EAAQuiE,UAAY5B,GAAkBhnC,EAAO96B,KAC1CmB,EAAQwiE,iBAAmC,KAAhB7oC,EAAO96B,GAGjC+iE,EApZP,SAA+B5hE,GAC9B,OAAQA,EAAQ0hE,aACf,IAAK,QACJ,OAAO7iE,GAAO,CAACuc,EAAQvd,KACtB,MAAMwX,EAAQ+F,EAAO1qB,OAErB,YACWwG,IAAV2G,GACImC,EAAQuiE,UAAsB,OAAV1kE,GACpBmC,EAAQwiE,iBAA6B,KAAV3kE,EAExBud,EAGM,OAAVvd,EACI,IACHud,EAAQ,CAAC,GAAOvc,EAAKmB,GAAU,IAAKqV,EAAO,KAAKhpB,KAAK,KAInD,IACH+uB,EACH,CAAC,GAAOvc,EAAKmB,GAAU,IAAK,GAAOqV,EAAOrV,GAAU,KAAM,GAAOnC,EAAOmC,IAAU3T,KAAK,IACvF,EAIH,IAAK,UACJ,OAAOwS,GAAO,CAACuc,EAAQvd,SAEX3G,IAAV2G,GACImC,EAAQuiE,UAAsB,OAAV1kE,GACpBmC,EAAQwiE,iBAA6B,KAAV3kE,EAExBud,EAGM,OAAVvd,EACI,IACHud,EACH,CAAC,GAAOvc,EAAKmB,GAAU,MAAM3T,KAAK,KAI7B,IACH+uB,EACH,CAAC,GAAOvc,EAAKmB,GAAU,MAAO,GAAOnC,EAAOmC,IAAU3T,KAAK,KAK9D,IAAK,uBACJ,OAAOwS,GAAO,CAACuc,EAAQvd,SAEX3G,IAAV2G,GACImC,EAAQuiE,UAAsB,OAAV1kE,GACpBmC,EAAQwiE,iBAA6B,KAAV3kE,EAExBud,EAGM,OAAVvd,EACI,IACHud,EACH,CAAC,GAAOvc,EAAKmB,GAAU,UAAU3T,KAAK,KAIjC,IACH+uB,EACH,CAAC,GAAOvc,EAAKmB,GAAU,SAAU,GAAOnC,EAAOmC,IAAU3T,KAAK,KAKjE,IAAK,QACL,IAAK,YACL,IAAK,oBAAqB,CACzB,MAAMo2E,EAAsC,sBAAxBziE,EAAQ0hE,YACzB,MACA,IAEH,OAAO7iE,GAAO,CAACuc,EAAQvd,SAEX3G,IAAV2G,GACImC,EAAQuiE,UAAsB,OAAV1kE,GACpBmC,EAAQwiE,iBAA6B,KAAV3kE,EAExBud,GAIRvd,EAAkB,OAAVA,EAAiB,GAAKA,EAER,IAAlBud,EAAO1qB,OACH,CAAC,CAAC,GAAOmO,EAAKmB,GAAUyiE,EAAa,GAAO5kE,EAAOmC,IAAU3T,KAAK,KAGnE,CAAC,CAAC+uB,EAAQ,GAAOvd,EAAOmC,IAAU3T,KAAK2T,EAAQ2hE,uBAExD,CAEA,QACC,OAAO9iE,GAAO,CAACuc,EAAQvd,SAEX3G,IAAV2G,GACImC,EAAQuiE,UAAsB,OAAV1kE,GACpBmC,EAAQwiE,iBAA6B,KAAV3kE,EAExBud,EAGM,OAAVvd,EACI,IACHud,EACH,GAAOvc,EAAKmB,IAIP,IACHob,EACH,CAAC,GAAOvc,EAAKmB,GAAU,IAAK,GAAOnC,EAAOmC,IAAU3T,KAAK,KAK9D,CAsRmBq2E,CAAsB1iE,GAElC2iE,EAAa,CAAC,EAEpB,IAAK,MAAO9jE,EAAKhB,KAAU7O,OAAOwtC,QAAQ7C,GACpC2oC,EAAazjE,KACjB8jE,EAAW9jE,GAAOhB,GAIpB,MAAM0hB,EAAOvwB,OAAOuwB,KAAKojD,GAMzB,OAJqB,IAAjB3iE,EAAQ6L,MACX0T,EAAK1T,KAAK7L,EAAQ6L,MAGZ0T,EAAKpzB,KAAI0S,IACf,MAAMhB,EAAQ87B,EAAO96B,GAErB,YAAc3H,IAAV2G,EACI,GAGM,OAAVA,EACI,GAAOgB,EAAKmB,GAGhBjG,MAAM6I,QAAQ/E,GACI,IAAjBA,EAAMnN,QAAwC,sBAAxBsP,EAAQ0hE,YAC1B,GAAO7iE,EAAKmB,GAAW,KAGxBnC,EACLiO,OAAO81D,EAAU/iE,GAAM,IACvBxS,KAAK,KAGD,GAAOwS,EAAKmB,GAAW,IAAM,GAAOnC,EAAOmC,EAAQ,IACxDnN,QAAOyB,GAAKA,EAAE5D,OAAS,IAAGrE,KAAK,IACnC,CAEO,SAASu2E,GAASlqD,EAAK1Y,GAC7BA,EAAU,CACT+qD,QAAQ,KACL/qD,GAGJ,IAAK6iE,EAAM5W,GAAQoU,GAAa3nD,EAAK,KAMrC,YAJaxhB,IAAT2rE,IACHA,EAAOnqD,GAGD,CACNA,IAAKmqD,GAAM32E,MAAM,OAAO,IAAM,GAC9B2pB,MAAO,GAAM2rD,GAAQ9oD,GAAM1Y,MACvBA,GAAWA,EAAQ8iE,yBAA2B7W,EAAO,CAAC8W,mBAAoB,GAAO9W,EAAMjsD,IAAY,CAAC,EAE1G,CAEO,SAASgjE,GAAarpC,EAAQ35B,GACpCA,EAAU,CACT8qD,QAAQ,EACRoG,QAAQ,EACR,CAAC2P,KAA2B,KACzB7gE,GAGJ,MAAM0Y,EAAMyoD,GAAWxnC,EAAOjhB,KAAKxsB,MAAM,KAAK,IAAM,GAQpD,IAAI+2E,EAAc,GALJ,IACV,GAHiBzB,GAAQ7nC,EAAOjhB,KAGZ,CAAC7M,MAAM,OAC3B8tB,EAAO9jB,OAGwB7V,GAC/BijE,IACHA,EAAc,IAAIA,KAGnB,IAAIhX,EA5ML,SAAiBvzC,GAChB,IAAIuzC,EAAO,GACX,MAAMmV,EAAY1oD,EAAIpqB,QAAQ,KAK9B,OAJmB,IAAf8yE,IACHnV,EAAOvzC,EAAIniB,MAAM6qE,IAGXnV,CACR,CAoMY,CAAQtyB,EAAOjhB,KAC1B,GAAIihB,EAAOopC,mBAAoB,CAC9B,MAAMG,EAA6B,IAAIz5D,IAAIiP,GAC3CwqD,EAA2BjX,KAAOtyB,EAAOopC,mBACzC9W,EAAOjsD,EAAQ6gE,IAA4BqC,EAA2BjX,KAAO,IAAItyB,EAAOopC,oBACzF,CAEA,MAAO,GAAGrqD,IAAMuqD,IAAchX,GAC/B,CAEO,SAASkX,GAAKv1D,EAAO/a,EAAQmN,GACnCA,EAAU,CACT8iE,yBAAyB,EACzB,CAACjC,KAA2B,KACzB7gE,GAGJ,MAAM,IAAC0Y,EAAG,MAAE7C,EAAK,mBAAEktD,GAAsBH,GAASh1D,EAAO5N,GAEzD,OAAOgjE,GAAa,CACnBtqD,MACA7C,MAAO2qD,GAAY3qD,EAAOhjB,GAC1BkwE,sBACE/iE,EACJ,CAEO,SAASojE,GAAQx1D,EAAO/a,EAAQmN,GAGtC,OAAOmjE,GAAKv1D,EAFY7T,MAAM6I,QAAQ/P,GAAUgM,IAAQhM,EAAOxC,SAASwO,GAAO,CAACA,EAAKhB,KAAWhL,EAAOgM,EAAKhB,GAExEmC,EACrC,CC5gBA,WCwBA+T,EAAAA,QAAIgmB,IAAIxd,IAER,MA4BA,GA5Be,IAAIA,GAAO,CACzBo8B,KAAM,UAIN/0C,MAAM8L,EAAAA,EAAAA,aAAY,cAAe,IACjCsjD,gBAAiB,SAEjBuB,OAAQ,CACP,CACCtoE,KAAM,IAENspE,MAAO,UAER,CACCtpE,KAAM,kBACNsB,KAAM,WACNK,OAAO,IAKT49D,eAAe31C,GACd,MAAMuF,EAAS6nD,GAAYv/D,UAAUmS,GAAOlT,QAAQ,SAAU,KAC9D,OAAOyY,EAAU,IAAMA,EAAU,EAClC,icC9BDloB,OAAOqb,IAAIC,MAAwB,QAAnBqO,GAAG3pB,OAAOqb,IAAIC,aAAK,IAAAqO,GAAAA,GAAI,CAAC,EACxC3pB,OAAOopB,IAAI9N,MAAwB,QAAnB60D,GAAGnwE,OAAOopB,IAAI9N,aAAK,IAAA60D,GAAAA,GAAI,CAAC,EAExC,MAAM9mD,GAAS,IC1BA,MAEXtE,YAAY4zC,eAAQ,oaAChBt8D,KAAKkwE,QAAU5T,CACnB,CAQAyX,KAAKr3E,GAAuB,IAAjB0W,EAAOlS,UAAAC,OAAA,QAAAwG,IAAAzG,UAAA,IAAAA,UAAA,GACd,OAAOlB,KAAKkwE,QAAQ58D,KAAK,CACrB5W,OACA0W,WAER,CAUA6Z,UAAUjvB,EAAMqzD,EAAQ/qC,EAAOlT,GAC3B,OAAOpT,KAAKkwE,QAAQ58D,KAAK,CACrBtV,OACAsoB,QACA+qC,SACAj+C,WAER,GDR6BkpD,IACjC78D,OAAO+T,OAAO7P,OAAOopB,IAAI9N,MAAO,CAAE+N,YAElCxI,EAAAA,QAAIgmB,KhJk4DmB,SAAUy4B,GAG7BA,EAAKx+C,MAAM,CACP9N,eACI,MAAMlG,EAAUzQ,KAAKwW,SACrB,GAAI/F,EAAQogB,MAAO,CACf,MAAMA,EAAQpgB,EAAQogB,MAGtB,IAAK7wB,KAAKg0E,UAAW,CACjB,MAAMC,EAAe,CAAC,EACtBx0E,OAAOoX,eAAe7W,KAAM,YAAa,CACrC+W,IAAK,IAAMk9D,EACXt3D,IAAMvY,GAAM3E,OAAO+T,OAAOygE,EAAc7vE,IAEhD,CACApE,KAAKg0E,UAAUljD,IAAeD,EAIzB7wB,KAAKwoD,SACNxoD,KAAKwoD,OAAS33B,GAElBA,EAAMrB,GAAKxvB,KACPkxB,IAGAN,GAAeC,GAEfM,IACAwE,GAAsB9E,EAAMrB,GAAIqB,EAExC,MACU7wB,KAAKwoD,QAAU/3C,EAAQ0F,QAAU1F,EAAQ0F,OAAOqyC,SACtDxoD,KAAKwoD,OAAS/3C,EAAQ0F,OAAOqyC,OAErC,EACAh8C,mBACWxM,KAAK03B,QAChB,GAER,IgJ36DA,MAAM7G,GhJ25BN,WACI,MAAMsM,GAAQ,IAAA8B,cAAY,GAGpB3I,EAAQ6G,EAAMwB,KAAI,KAAM,IAAA94B,KAAI,CAAC,KACnC,IAAI44B,EAAK,GAELy1C,EAAgB,GACpB,MAAMrjD,GAAQ,IAAAyK,SAAQ,CAClB+O,QAAQnoB,GAGJ0O,GAAeC,GACV,KACDA,EAAMrB,GAAKtN,EACXA,EAAIk0B,QAAQtlB,GAAaD,GACzB3O,EAAI8rB,OAAOmmC,iBAAiB3rB,OAAS33B,EAEjCM,IACAwE,GAAsBzT,EAAK2O,GAE/BqjD,EAAcjiE,SAASmc,GAAWqQ,EAAGnrB,KAAK8a,KAC1C8lD,EAAgB,GAExB,EACA1pC,IAAIpc,GAOA,OANKpuB,KAAKwvB,IAAO,GAIbiP,EAAGnrB,KAAK8a,GAHR8lD,EAAc5gE,KAAK8a,GAKhBpuB,IACX,EACAy+B,KAGAjP,GAAI,KACJ7gB,GAAIwuB,EACJzuB,GAAI,IAAI4tB,IACRhG,UAOJ,OAHInF,IAAiC,oBAAVpI,OACvB8H,EAAM2Z,IAAIzQ,IAEPlJ,CACX,CgJ38BcujD,GAERnjB,GAAa,IAAIojB,GACvB50E,OAAO+T,OAAO7P,OAAOopB,IAAI9N,MAAO,CAAEgyC,WAAUA,KAC5CzsC,EAAAA,QAAIxN,UAAUmxB,YAAc8oB,GAE5B,MAAMp/C,GAAW,IEdF,MAId6W,0BAAc,saACb1oB,KAAKs0E,UAAY,GACjBrsE,GAAQua,MAAM,iCACf,CASAqD,SAAS+E,GACR,OAAI5qB,KAAKs0E,UAAUhxE,QAAOvG,GAAKA,EAAEiB,OAAS4sB,EAAK5sB,OAAMmD,OAAS,GAC7D8G,GAAQ0V,MAAM,uDACP,IAER3d,KAAKs0E,UAAUhhE,KAAKsX,IACb,EACR,CAOI6D,eACH,OAAOzuB,KAAKs0E,SACb,GFjBD70E,OAAO+T,OAAO7P,OAAOqb,IAAIC,MAAO,CAAEpN,SAAQA,KAC1CpS,OAAO+T,OAAO7P,OAAOqb,IAAIC,MAAMpN,SAAU,CAAEq+C,QGf5B,MAiBdxnC,YAAY1qB,EAAIqoB,GAAuB,IAArB,GAAEmlB,EAAE,KAAEltC,EAAI,MAAEsO,GAAOyZ,EAAAkkC,GAAA,sBAAAA,GAAA,mBAAAA,GAAA,qBAAAA,GAAA,qBACpCvqD,KAAKu0E,MAAQv2E,EACbgC,KAAKw0E,IAAMhpC,EACXxrC,KAAKy0E,MAAQn2E,EACb0B,KAAK00E,OAAS9nE,EAEY,mBAAf5M,KAAKy0E,QACfz0E,KAAKy0E,MAAQ,QAGa,mBAAhBz0E,KAAK00E,SACf10E,KAAK00E,OAAS,OAEhB,CAEI12E,WACH,OAAOgC,KAAKu0E,KACb,CAEI/oC,SACH,OAAOxrC,KAAKw0E,GACb,CAEIl2E,WACH,OAAO0B,KAAKy0E,KACb,CAEI7nE,YACH,OAAO5M,KAAK00E,MACb,KH5B2B,IADflwD,EAAAA,QAAIM,OAAO6vD,IACI,CAAS,CACjC32E,KAAM,sBACNwF,UAAW,CACPytD,WAAUA,IAEdqL,OAAM,GACNzrC,WAEgB7L,OAAO,yBAGT,IADDR,EAAAA,QAAIM,OAAO8vD,IACV,CAAa,CAC3B52E,KAAM,gBACNs+D,OAAM,GACNzrC,WAEM7L,OAAO,oBzB7BF,WACd,MAAM6vD,EAAcp1E,OAAO6qB,QAAO3F,EAAAA,EAAAA,GAAU,QAAS,aAAc,CAAC,IAEhEkwD,EAAY1zE,OAAS,IACxB6f,GAAOwB,MAAM,6CAA8CqyD,GAC3DA,EAAY5iE,SAAQ2Y,IACnBmoC,GAAmBnoC,GACfA,EAAKkqD,SACRlqD,EAAKkqD,QAAQ7iE,SAAQ8iE,GAAWhiB,GAAmB,IAAKgiB,EAAS5+D,OAAQyU,EAAK9jB,MAC/E,IAGH,CyBmBAkuE,GR/BA,MAEI,MAAMC,GAAkBtwD,EAAAA,EAAAA,GAAU,QAAS,kBAAmB,IACxDuwD,EAAuBD,EAAgBr4E,KAAI,CAACuwD,EAAQrnC,IAAUo1C,GAAmB/N,EAAQrnC,KACzFmrC,EAAattD,OAAOopB,IAAI9N,MAAMgyC,WACpCA,EAAWprC,SAAS,CAChB/e,GAAI,YACJ9I,MAAMhB,EAAAA,EAAAA,IAAE,QAAS,aACjBstD,SAASttD,EAAAA,EAAAA,IAAE,QAAS,wCACpBwwD,YAAYxwD,EAAAA,EAAAA,IAAE,QAAS,oBACvBywD,cAAczwD,EAAAA,EAAAA,IAAE,QAAS,4DACzB6H,KAAM8nB,GACN9F,MAAO,EACPg6B,QAAS,GACTiK,YAAWA,KAEfoqB,EAAqBjjE,SAAQ2Y,GAAQqmC,EAAWprC,SAAS+E,MAIzDrP,EAAAA,EAAAA,IAAU,yBAA0BsP,IAAS,IAAA+B,EACrC/B,EAAKtsB,OAAS+oB,EAASqC,SAIT,OAAdkB,EAAKnuB,MAA2B,QAAVkwB,EAAC/B,EAAKxC,YAAI,IAAAuE,GAATA,EAAWlpB,WAAW,UAIjDyxE,EAAmBtqD,EAAKnuB,MAHpBskB,GAAOrD,MAAM,gDAAiD,CAAEkN,SAGvC,KAKjCtP,EAAAA,EAAAA,IAAU,2BAA4BsP,IAAS,IAAAuqD,EACvCvqD,EAAKtsB,OAAS+oB,EAASqC,SAIT,OAAdkB,EAAKnuB,MAA2B,QAAV04E,EAACvqD,EAAKxC,YAAI,IAAA+sD,GAATA,EAAW1xE,WAAW,UAIjD2xE,EAAwBxqD,EAAKnuB,MAHzBskB,GAAOrD,MAAM,gDAAiD,CAAEkN,SAGlC,IAMtC,MAAMyqD,EAAqB,WACvBL,EAAgB34D,MAAK,CAACnf,EAAGkH,IAAMlH,EAAE0jC,cAAcx8B,GAAGkxE,EAAAA,EAAAA,MAAe,CAAEC,mBAAmB,MACtFP,EAAgBhjE,SAAQ,CAACk7C,EAAQrnC,KAC7B,MAAM8E,EAAOsqD,EAAqBzzD,MAAKmJ,GAAQA,EAAK9jB,KAAOq0D,GAAmBhO,KAC1EviC,IACAA,EAAK/D,MAAQf,EACjB,GAER,EAEMqvD,EAAqB,SAAUz4E,GACjC,MAAMkuB,EAAOswC,GAAmBx+D,GAE5Bu4E,EAAgBxzD,MAAK0rC,GAAUA,IAAWzwD,MAI9Cu4E,EAAgB3hE,KAAK5W,GACrBw4E,EAAqB5hE,KAAKsX,GAE1B0qD,IACArkB,EAAWprC,SAAS+E,GACxB,EAEMyqD,EAA0B,SAAU34E,GACtC,MAAMoK,EAAKq0D,GAAmBz+D,GACxBopB,EAAQmvD,EAAgBnyB,WAAUqK,GAAUA,IAAWzwD,KAE9C,IAAXopB,IAIJmvD,EAAgBngE,OAAOgR,EAAO,GAC9BovD,EAAqBpgE,OAAOgR,EAAO,GAEnCmrC,EAAWnuD,OAAOgE,GAClBwuE,IACJ,CACH,EQvDDG,GInCK,kBAAmBvpD,UAEtBvoB,OAAOgI,iBAAiB,QAAQqB,UAC/B,IACC,MAAMmc,GAAMhJ,EAAAA,EAAAA,aAAY,wCAAyC,CAAC,EAAG,CAAEu1D,WAAW,IAC5EC,QAAqBzpD,UAAU0pD,cAAc/vD,SAASsD,EAAK,CAAEgU,MAAO,MAC1Enc,GAAOwB,MAAM,kBAAmB,CAAEmzD,gBACnC,CAAE,MAAOh4D,GACRqD,GAAOrD,MAAM,2BAA4B,CAAEA,SAC5C,KAGDqD,GAAOwB,MAAM,6DCrCfvlB,EAAOR,QAAU,CACf,IAAO,WACP,IAAO,sBACP,IAAO,aACP,IAAO,KACP,IAAO,UACP,IAAO,WACP,IAAO,gCACP,IAAO,aACP,IAAO,gBACP,IAAO,kBACP,IAAO,eACP,IAAO,mBACP,IAAO,UACP,IAAO,mBACP,IAAO,oBACP,IAAO,QACP,IAAO,YACP,IAAO,eACP,IAAO,YACP,IAAO,qBACP,IAAO,qBACP,IAAO,cACP,IAAO,eACP,IAAO,mBACP,IAAO,YACP,IAAO,YACP,IAAO,qBACP,IAAO,iBACP,IAAO,gCACP,IAAO,kBACP,IAAO,WACP,IAAO,OACP,IAAO,kBACP,IAAO,sBACP,IAAO,oBACP,IAAO,eACP,IAAO,yBACP,IAAO,wBACP,IAAO,qBACP,IAAO,eACP,IAAO,sBACP,IAAO,uBACP,IAAO,SACP,IAAO,oBACP,IAAO,uBACP,IAAO,mBACP,IAAO,wBACP,IAAO,oBACP,IAAO,kCACP,IAAO,gCACP,IAAO,wBACP,IAAO,kBACP,IAAO,cACP,IAAO,sBACP,IAAO,kBACP,IAAO,6BACP,IAAO,0BACP,IAAO,uBACP,IAAO,gBACP,IAAO,2BACP,IAAO,eACP,IAAO,iEC5DT,IAAIo5E,EAAe,EAAQ,OAEvBC,EAAW,EAAQ,OAEnBC,EAAWD,EAASD,EAAa,6BAErC54E,EAAOR,QAAU,SAA4BuB,EAAMg4E,GAClD,IAAIC,EAAYJ,EAAa73E,IAAQg4E,GACrC,MAAyB,mBAAdC,GAA4BF,EAAS/3E,EAAM,gBAAkB,EAChE83E,EAASG,GAEVA,CACR,gCCZA,IAAI7uE,EAAO,EAAQ,OACfyuE,EAAe,EAAQ,OAEvBK,EAASL,EAAa,8BACtBM,EAAQN,EAAa,6BACrBO,EAAgBP,EAAa,mBAAmB,IAASzuE,EAAK9B,KAAK6wE,EAAOD,GAE1EG,EAAQR,EAAa,qCAAqC,GAC1DS,EAAkBT,EAAa,2BAA2B,GAC1DU,EAAOV,EAAa,cAExB,GAAIS,EACH,IACCA,EAAgB,CAAC,EAAG,IAAK,CAAEhoE,MAAO,GACnC,CAAE,MAAOvR,GAERu5E,EAAkB,IACnB,CAGDr5E,EAAOR,QAAU,SAAkB+5E,GAClC,IAAIC,EAAOL,EAAchvE,EAAM+uE,EAAOj1E,WAYtC,OAXIm1E,GAASC,GACDD,EAAMI,EAAM,UACdl3C,cAER+2C,EACCG,EACA,SACA,CAAEnoE,MAAO,EAAIioE,EAAK,EAAGC,EAAiBr1E,QAAUD,UAAUC,OAAS,MAI/Ds1E,CACR,EAEA,IAAIC,EAAY,WACf,OAAON,EAAchvE,EAAM8uE,EAAQh1E,UACpC,EAEIo1E,EACHA,EAAgBr5E,EAAOR,QAAS,QAAS,CAAE6R,MAAOooE,IAElDz5E,EAAOR,QAAQkT,MAAQ+mE,4BC7CxB,6BAAmD,OAAOjsC,EAAU,mBAAqBvzB,QAAU,iBAAmBA,OAAOwzB,SAAW,SAAUvL,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBjoB,QAAUioB,EAAIzW,cAAgBxR,QAAUioB,IAAQjoB,OAAOF,UAAY,gBAAkBmoB,CAAK,EAAGsL,EAAQtL,EAAM,CActT,oBAAf5N,WAA6BA,WAA6B,oBAATr0B,MAAuBA,KAV1D,EAUuE,SAAUy5E,GACvG,aAYA,SAASC,EAAgBr5E,EAAGQ,GAA6I,OAAxI64E,EAAkBn3E,OAAOg3D,eAAiBh3D,OAAOg3D,eAAervD,OAAS,SAAyB7J,EAAGQ,GAAsB,OAAjBR,EAAEgwE,UAAYxvE,EAAUR,CAAG,EAAUq5E,EAAgBr5E,EAAGQ,EAAI,CAEvM,SAAS84E,EAAaC,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,oBAAZluD,UAA4BA,QAAQmuD,UAAW,OAAO,EAAO,GAAInuD,QAAQmuD,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVluD,MAAsB,OAAO,EAAM,IAAsF,OAAhFvqB,QAAQwY,UAAUorB,QAAQ98B,KAAKujB,QAAQmuD,UAAUx4E,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAOzB,GAAK,OAAO,CAAO,CAAE,CANvQm6E,GAA6B,OAAO,WAAkC,IAAsCrrD,EAAlCsrD,EAAQC,EAAgBN,GAAkB,GAAIC,EAA2B,CAAE,IAAIM,EAAYD,EAAgBp3E,MAAM0oB,YAAamD,EAAShD,QAAQmuD,UAAUG,EAAOj2E,UAAWm2E,EAAY,MAASxrD,EAASsrD,EAAMxnE,MAAM3P,KAAMkB,WAAc,OAEpX,SAAoChE,EAAMoI,GAAQ,GAAIA,IAA2B,WAAlBmlC,EAAQnlC,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAI4lC,UAAU,4DAA+D,OAE1P,SAAgChuC,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIo6E,eAAe,6DAAgE,OAAOp6E,CAAM,CAF4Fq6E,CAAuBr6E,EAAO,CAF4Fs6E,CAA2Bx3E,KAAM6rB,EAAS,CAAG,CAQxa,SAASurD,EAAgB75E,GAA+J,OAA1J65E,EAAkB33E,OAAOg3D,eAAiBh3D,OAAO82D,eAAenvD,OAAS,SAAyB7J,GAAK,OAAOA,EAAEgwE,WAAa9tE,OAAO82D,eAAeh5D,EAAI,EAAU65E,EAAgB75E,EAAI,CAEnN,SAASk6E,EAA2Bl6E,EAAGm6E,GAAkB,IAAIC,EAAuB,oBAAXzgE,QAA0B3Z,EAAE2Z,OAAOwzB,WAAantC,EAAE,cAAe,IAAKo6E,EAAI,CAAE,GAAIntE,MAAM6I,QAAQ9V,KAAOo6E,EAE9K,SAAqCp6E,EAAGq6E,GAAU,GAAKr6E,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOs6E,EAAkBt6E,EAAGq6E,GAAS,IAAIn6E,EAAIgC,OAAOuX,UAAUtQ,SAASpB,KAAK/H,GAAGyJ,MAAM,GAAI,GAAiE,MAAnD,WAANvJ,GAAkBF,EAAEmrB,cAAajrB,EAAIF,EAAEmrB,YAAY1qB,MAAgB,QAANP,GAAqB,QAANA,EAAoB+M,MAAM8tB,KAAK/6B,GAAc,cAANE,GAAqB,2CAA2Cmb,KAAKnb,GAAWo6E,EAAkBt6E,EAAGq6E,QAAzG,CAA7O,CAA+V,CAF5OE,CAA4Bv6E,KAAOm6E,GAAkBn6E,GAAyB,iBAAbA,EAAE4D,OAAqB,CAAMw2E,IAAIp6E,EAAIo6E,GAAI,IAAIn6E,EAAI,EAAOiQ,EAAI,WAAc,EAAG,MAAO,CAAE9P,EAAG8P,EAAGhQ,EAAG,WAAe,OAAID,GAAKD,EAAE4D,OAAe,CAAE42E,MAAM,GAAe,CAAEA,MAAM,EAAOzpE,MAAO/Q,EAAEC,KAAQ,EAAGT,EAAG,SAAW4R,GAAM,MAAMA,CAAI,EAAGpK,EAAGkJ,EAAK,CAAE,MAAM,IAAIy9B,UAAU,wIAA0I,CAAE,IAA6CwwB,EAAzCsc,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEt6E,EAAG,WAAeg6E,EAAKA,EAAGryE,KAAK/H,EAAI,EAAGE,EAAG,WAAe,IAAIwsE,EAAO0N,EAAGhrE,OAAsC,OAA9BqrE,EAAmB/N,EAAK8N,KAAa9N,CAAM,EAAGltE,EAAG,SAAWm7E,GAAOD,GAAS,EAAMvc,EAAMwc,CAAK,EAAG3zE,EAAG,WAAe,IAAWyzE,GAAiC,MAAbL,EAAGQ,QAAgBR,EAAGQ,QAAU,CAAE,QAAU,GAAIF,EAAQ,MAAMvc,CAAK,CAAE,EAAK,CAIr+B,SAASmc,EAAkBhtC,EAAKu8B,IAAkB,MAAPA,GAAeA,EAAMv8B,EAAI1pC,UAAQimE,EAAMv8B,EAAI1pC,QAAQ,IAAK,IAAI3D,EAAI,EAAGstC,EAAO,IAAItgC,MAAM48D,GAAM5pE,EAAI4pE,EAAK5pE,IAAOstC,EAAKttC,GAAKqtC,EAAIrtC,GAAM,OAAOstC,CAAM,CAEtL,SAASc,EAAgBF,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIT,UAAU,oCAAwC,CAExJ,SAASP,EAAkB3oC,EAAQ3D,GAAS,IAAK,IAAIb,EAAI,EAAGA,EAAIa,EAAM8C,OAAQ3D,IAAK,CAAE,IAAI6yB,EAAahyB,EAAMb,GAAI6yB,EAAWvZ,WAAauZ,EAAWvZ,aAAc,EAAOuZ,EAAWkP,cAAe,EAAU,UAAWlP,IAAYA,EAAWiP,UAAW,GAAM7/B,OAAOoX,eAAe7U,EAAQquB,EAAW/gB,IAAK+gB,EAAa,CAAE,CAE5T,SAAS+nD,EAAazsC,EAAaK,EAAYqsC,GAAyN,OAAtMrsC,GAAYrB,EAAkBgB,EAAY30B,UAAWg1B,GAAiBqsC,GAAa1tC,EAAkBgB,EAAa0sC,GAAc54E,OAAOoX,eAAe80B,EAAa,YAAa,CAAErM,UAAU,IAAiBqM,CAAa,CAE5R,SAAS4e,EAAgBprB,EAAK7vB,EAAKhB,GAAiK,OAApJgB,KAAO6vB,EAAO1/B,OAAOoX,eAAesoB,EAAK7vB,EAAK,CAAEhB,MAAOA,EAAOwI,YAAY,EAAMyoB,cAAc,EAAMD,UAAU,IAAkBH,EAAI7vB,GAAOhB,EAAgB6wB,CAAK,CAEhN,SAASm5C,EAA2Bn5C,EAAKo5C,EAAYjqE,IAErD,SAAoC6wB,EAAKq5C,GAAqB,GAAIA,EAAkBr/C,IAAIgG,GAAQ,MAAM,IAAI+L,UAAU,iEAAqE,EAF3HutC,CAA2Bt5C,EAAKo5C,GAAaA,EAAW57D,IAAIwiB,EAAK7wB,EAAQ,CAIvI,SAASoqE,EAAsBC,EAAUJ,GAA0F,OAEnI,SAAkCI,EAAUtoD,GAAc,OAAIA,EAAWtZ,IAAcsZ,EAAWtZ,IAAIzR,KAAKqzE,GAAoBtoD,EAAW/hB,KAAO,CAFPsqE,CAAyBD,EAA3FE,EAA6BF,EAAUJ,EAAY,OAA+D,CAI1L,SAASO,EAAsBH,EAAUJ,EAAYjqE,GAA4I,OAIjM,SAAkCqqE,EAAUtoD,EAAY/hB,GAAS,GAAI+hB,EAAW1T,IAAO0T,EAAW1T,IAAIrX,KAAKqzE,EAAUrqE,OAAe,CAAE,IAAK+hB,EAAWiP,SAAY,MAAM,IAAI4L,UAAU,4CAA+C7a,EAAW/hB,MAAQA,CAAO,CAAE,CAJvHyqE,CAAyBJ,EAApFE,EAA6BF,EAAUJ,EAAY,OAAuDjqE,GAAeA,CAAO,CAE/M,SAASuqE,EAA6BF,EAAUJ,EAAY10D,GAAU,IAAK00D,EAAWp/C,IAAIw/C,GAAa,MAAM,IAAIztC,UAAU,gBAAkBrnB,EAAS,kCAAqC,OAAO00D,EAAWxhE,IAAI4hE,EAAW,CA9C5Nl5E,OAAOoX,eAAe8/D,EAAU,aAAc,CAC5CroE,OAAO,IAETqoE,EAAS1yB,uBAAoB,EAC7B0yB,EAASqC,WAAaA,EACtBrC,EAASt5E,aAAU,EACnBs5E,EAASsC,oBAAsBA,EA4C/B,IAAI9hE,EAAgC,oBAAXD,OAAyBA,OAAOC,YAAc,gBAEnE+hE,EAA0B,IAAIp8C,QAE9Bq8C,EAAwB,IAAIr8C,QAE5Bs8C,EAAyC,WAC3C,SAASA,EAA0B/yD,GACjC,IAAIgzD,EAAgBhzD,EAAKizD,SACrBA,OAA6B,IAAlBD,EAA2B,WAAa,EAAIA,EACvDE,EAAiBlzD,EAAKmzD,UACtBA,OAA+B,IAAnBD,EAmNX,CACLE,YAAY,EACZC,aAAc,IArNmDH,EAC7DI,EAAetzD,EAAKylC,QACpBA,OAA2B,IAAjB6tB,EAA0B,IAAIzuD,SAAQ,SAAU+E,EAAS6G,GACrE,OAAOwiD,EAASrpD,EAAS6G,GAAQ,SAAUotB,GACzCs1B,EAAUE,aAAapmE,KAAK4wC,EAC9B,GACF,IAAKy1B,EAEL/tC,EAAgB5rC,KAAMo5E,GAEtBd,EAA2Bt4E,KAAMk5E,EAAY,CAC3C55C,UAAU,EACVhxB,WAAO,IAGTgqE,EAA2Bt4E,KAAMm5E,EAAU,CACzC75C,UAAU,EACVhxB,WAAO,IAGTi8C,EAAgBvqD,KAAMmX,EAAa,qBAEnCnX,KAAKukD,OAASvkD,KAAKukD,OAAOn9C,KAAKpH,MAE/B84E,EAAsB94E,KAAMk5E,EAAYM,GAExCV,EAAsB94E,KAAMm5E,EAAUrtB,GAAW,IAAI5gC,SAAQ,SAAU+E,EAAS6G,GAC9E,OAAOwiD,EAASrpD,EAAS6G,GAAQ,SAAUotB,GACzCs1B,EAAUE,aAAapmE,KAAK4wC,EAC9B,GACF,IACF,CAsEA,OApEAk0B,EAAagB,EAA2B,CAAC,CACvC9pE,IAAK,OACLhB,MAAO,SAAcsrE,EAAaC,GAChC,OAAOC,EAAepB,EAAsB14E,KAAMm5E,GAAU/1D,KAAK22D,EAAeH,EAAalB,EAAsB14E,KAAMk5E,IAAca,EAAeF,EAAYnB,EAAsB14E,KAAMk5E,KAAeR,EAAsB14E,KAAMk5E,GAC3O,GACC,CACD5pE,IAAK,QACLhB,MAAO,SAAgBurE,GACrB,OAAOC,EAAepB,EAAsB14E,KAAMm5E,GAAU56C,MAAMw7C,EAAeF,EAAYnB,EAAsB14E,KAAMk5E,KAAeR,EAAsB14E,KAAMk5E,GACtK,GACC,CACD5pE,IAAK,UACLhB,MAAO,SAAkB0rE,EAAWC,GAClC,IAAI9vC,EAAQnqC,KAMZ,OAJIi6E,GACFvB,EAAsB14E,KAAMk5E,GAAYQ,aAAapmE,KAAK0mE,GAGrDF,EAAepB,EAAsB14E,KAAMm5E,GAAUe,QAAQH,GAAe,WACjF,GAAIC,EAOF,OANIC,IACFvB,EAAsBvuC,EAAO+uC,GAAYQ,aAAehB,EAAsBvuC,EAAO+uC,GAAYQ,aAAap2E,QAAO,SAAUs4B,GAC7H,OAAOA,IAAao+C,CACtB,KAGKA,GAEX,GAAGtB,EAAsB14E,KAAMk5E,KAAeR,EAAsB14E,KAAMk5E,GAC5E,GACC,CACD5pE,IAAK,SACLhB,MAAO,WACLoqE,EAAsB14E,KAAMk5E,GAAYO,YAAa,EAErD,IAAIU,EAAYzB,EAAsB14E,KAAMk5E,GAAYQ,aAExDhB,EAAsB14E,KAAMk5E,GAAYQ,aAAe,GAEvD,IACIU,EADAC,EAAY5C,EAA2B0C,GAG3C,IACE,IAAKE,EAAU18E,MAAOy8E,EAAQC,EAAU58E,KAAKs6E,MAAO,CAClD,IAAIn8C,EAAWw+C,EAAM9rE,MAErB,GAAwB,mBAAbstB,EACT,IACEA,GACF,CAAE,MAAO8/B,GACPzzD,EAAQ0V,MAAM+9C,EAChB,CAEJ,CACF,CAAE,MAAOA,GACP2e,EAAUt9E,EAAE2+D,EACd,CAAE,QACA2e,EAAU91E,GACZ,CACF,GACC,CACD+K,IAAK,aACLhB,MAAO,WACL,OAA8D,IAAvDoqE,EAAsB14E,KAAMk5E,GAAYO,UACjD,KAGKL,CACT,CA3G6C,GA6GzCn1B,EAAiC,SAAUq2B,IA7J/C,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAItvC,UAAU,sDAAyDqvC,EAASvjE,UAAYvX,OAAOsiE,OAAOyY,GAAcA,EAAWxjE,UAAW,CAAE0R,YAAa,CAAEpa,MAAOisE,EAAUj7C,UAAU,EAAMC,cAAc,KAAW9/B,OAAOoX,eAAe0jE,EAAU,YAAa,CAAEj7C,UAAU,IAAck7C,GAAY5D,EAAgB2D,EAAUC,EAAa,CA8JjcC,CAAUx2B,EAAmBq2B,GAE7B,IAAII,EAAS7D,EAAa5yB,GAE1B,SAASA,EAAkBq1B,GAGzB,OAFA1tC,EAAgB5rC,KAAMikD,GAEfy2B,EAAOp1E,KAAKtF,KAAM,CACvBs5E,SAAUA,GAEd,CAEA,OAAOlB,EAAan0B,EACtB,CAdqC,CAcnCm1B,GAEFzC,EAAS1yB,kBAAoBA,EAE7BsG,EAAgBtG,EAAmB,OAAO,SAAa02B,GACrD,OAAOC,EAAkBD,EAAUzvD,QAAQC,IAAIwvD,GACjD,IAEApwB,EAAgBtG,EAAmB,cAAc,SAAoB02B,GACnE,OAAOC,EAAkBD,EAAUzvD,QAAQ2vD,WAAWF,GACxD,IAEApwB,EAAgBtG,EAAmB,OAAO,SAAa02B,GACrD,OAAOC,EAAkBD,EAAUzvD,QAAQ4vD,IAAIH,GACjD,IAEApwB,EAAgBtG,EAAmB,QAAQ,SAAc02B,GACvD,OAAOC,EAAkBD,EAAUzvD,QAAQ6vD,KAAKJ,GAClD,IAEApwB,EAAgBtG,EAAmB,WAAW,SAAiB31C,GAC7D,OAAO0qE,EAAW9tD,QAAQ+E,QAAQ3hB,GACpC,IAEAi8C,EAAgBtG,EAAmB,UAAU,SAAgBuoB,GAC3D,OAAOwM,EAAW9tD,QAAQ4L,OAAO01C,GACnC,IAEAjiB,EAAgBtG,EAAmB,eAAgBg1B,GAEnD,IAAI+B,EAAW/2B,EAGf,SAAS+0B,EAAWltB,GAClB,OAAOguB,EAAehuB,EA2Df,CACL2tB,YAAY,EACZC,aAAc,IA5DlB,CAEA,SAAST,EAAoBntB,GAC3B,OAAOA,aAAmB7H,GAAqB6H,aAAmBstB,CACpE,CAEA,SAASW,EAAekB,EAAUzB,GAChC,GAAIyB,EACF,OAAO,SAAUC,GACf,IAAK1B,EAAUC,WAAY,CACzB,IAAI5tD,EAASovD,EAASC,GAMtB,OAJIjC,EAAoBptD,IACtB2tD,EAAUE,aAAapmE,KAAKuY,EAAO04B,QAG9B14B,CACT,CAEA,OAAOqvD,CACT,CAEJ,CAEA,SAASpB,EAAehuB,EAAS0tB,GAC/B,OAAO,IAAIJ,EAA0B,CACnCI,UAAWA,EACX1tB,QAASA,GAEb,CAEA,SAAS8uB,EAAkBD,EAAU7uB,GACnC,IAAI0tB,EA0BG,CACLC,YAAY,EACZC,aAAc,IAThB,OAlBAF,EAAUE,aAAapmE,MAAK,WAC1B,IACI6nE,EADAC,EAAa3D,EAA2BkD,GAG5C,IACE,IAAKS,EAAWz9E,MAAOw9E,EAASC,EAAW39E,KAAKs6E,MAAO,CACrD,IAAIsD,EAAaF,EAAO7sE,MAEpB2qE,EAAoBoC,IACtBA,EAAW92B,QAEf,CACF,CAAE,MAAOmX,GACP0f,EAAWr+E,EAAE2+D,EACf,CAAE,QACA0f,EAAW72E,GACb,CACF,IACO,IAAI60E,EAA0B,CACnCI,UAAWA,EACX1tB,QAASA,GAEb,CA3DA6qB,EAASt5E,QAAU29E,CAmErB,OAlS+B,iBAApB,CAAC,OAAmB,+FCD3BM,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,6HAA8H,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,8CAA8C,eAAiB,CAAC,qKAAqK,WAAa,MAEngB,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,kPAAmP,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iEAAiE,MAAQ,GAAG,SAAW,iIAAiI,eAAiB,CAAC,kXAAkX,WAAa,MAEh6B,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,+SAAgT,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0DAA0D,MAAQ,GAAG,SAAW,oHAAoH,eAAiB,CAAC,yeAAye,WAAa,MAEhkC,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,6OAA8O,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,oCAAoC,eAAiB,CAAC,iXAAiX,WAAa,MAEnzB,2FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,iPAAkP,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,gFAAgF,eAAiB,CAAC,uXAAuX,WAAa,MAE/2B,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,sKAAuK,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,8CAA8C,eAAiB,CAAC,wNAAwN,WAAa,MAEnmB,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,iTAAkT,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,MAAQ,GAAG,SAAW,yEAAyE,eAAiB,CAAC,+UAA+U,WAAa,MAEv4B,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,yrBAA0rB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,iKAAiK,eAAiB,CAAC,43BAA43B,WAAa,MAEn5D,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,o7JAAq7J,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,MAAQ,GAAG,SAAW,uxCAAuxC,eAAiB,CAAC,6hMAA6hM,WAAa,MAEh6Y,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,oQAAqQ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,mEAAmE,eAAiB,CAAC,gVAAgV,WAAa,MAE90B,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,ksCAAmsC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,uYAAuY,eAAiB,CAAC,k7CAAk7C,WAAa,MAElrG,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,qdAAsd,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kDAAkD,MAAQ,GAAG,SAAW,qLAAqL,eAAiB,CAAC,o5BAAo5B,WAAa,MAE1sD,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,0WAA2W,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,gGAAgG,eAAiB,CAAC,miBAAmiB,WAAa,MAE1pC,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,kEAAmE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iDAAiD,MAAQ,GAAG,SAAW,mBAAmB,eAAiB,CAAC,+DAA+D,WAAa,MAE/T,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,+hCAAgiC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,sVAAsV,eAAiB,CAAC,u3CAAu3C,WAAa,MAE75F,4FCJIw0E,QAA0B,GAA4B,KAE1DA,EAAwBhoE,KAAK,CAACrW,EAAO6J,GAAI,yKAYtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,wBAAwB,eAAiB,CAAC,ui0BAAk9zB,WAAa,MAEpn0B,0CCEIy0E,EAAe97E,OAAOsiE,QAoe1B,SAA8BvL,GAC5B,IAAI/oD,EAAI,WAAY,EAEpB,OADAA,EAAEuJ,UAAYw/C,EACP,IAAI/oD,CACb,EAveI+tE,EAAa/7E,OAAOuwB,MAwexB,SAA4BmP,GAC1B,IAAInP,EAAO,GACX,IAAK,IAAIvrB,KAAK06B,EAAS1/B,OAAOuX,UAAUC,eAAe3R,KAAK65B,EAAK16B,IAC/DurB,EAAK1c,KAAK7O,GAEZ,OAAOA,CACT,EA7eI2C,EAAO23C,SAAS/nC,UAAU5P,MA8e9B,SAA8BmmC,GAC5B,IAAIh+B,EAAKvP,KACT,OAAO,WACL,OAAOuP,EAAGI,MAAM49B,EAASrsC,UAC3B,CACF,EAjfA,SAASu6E,IACFz7E,KAAK07E,SAAYj8E,OAAOuX,UAAUC,eAAe3R,KAAKtF,KAAM,aAC/DA,KAAK07E,QAAUH,EAAa,MAC5Bv7E,KAAK27E,aAAe,GAGtB37E,KAAK47E,cAAgB57E,KAAK47E,oBAAiBj0E,CAC7C,CACA1K,EAAOR,QAAUg/E,EAGjBA,EAAaA,aAAeA,EAE5BA,EAAazkE,UAAU0kE,aAAU/zE,EACjC8zE,EAAazkE,UAAU4kE,mBAAgBj0E,EAIvC,IAEIk0E,EAFAC,EAAsB,GAG1B,IACE,IAAIv+E,EAAI,CAAC,EACLkC,OAAOoX,gBAAgBpX,OAAOoX,eAAetZ,EAAG,IAAK,CAAE+Q,MAAO,IAClEutE,EAA4B,IAARt+E,EAAEwH,CACxB,CAAE,MAAO22D,GAAOmgB,GAAoB,CAAM,CA4B1C,SAASE,EAAiBC,GACxB,YAA2Br0E,IAAvBq0E,EAAKJ,cACAH,EAAaK,oBACfE,EAAKJ,aACd,CAwHA,SAASK,EAAaj6E,EAAQzD,EAAMw/C,EAAUm+B,GAC5C,IAAIj4E,EACA2wB,EACAsa,EAEJ,GAAwB,mBAAb6O,EACT,MAAM,IAAI7S,UAAU,0CAoBtB,IAlBAtW,EAAS5yB,EAAO05E,UAOV9mD,EAAOunD,cACTn6E,EAAOipB,KAAK,cAAe1sB,EACvBw/C,EAASA,SAAWA,EAASA,SAAWA,GAI5CnpB,EAAS5yB,EAAO05E,SAElBxsC,EAAWta,EAAOr2B,KAblBq2B,EAAS5yB,EAAO05E,QAAUH,EAAa,MACvCv5E,EAAO25E,aAAe,GAenBzsC,GAmBH,GAdwB,mBAAbA,EAETA,EAAWta,EAAOr2B,GACd29E,EAAU,CAACn+B,EAAU7O,GAAY,CAACA,EAAU6O,GAG5Cm+B,EACFhtC,EAAShW,QAAQ6kB,GAEjB7O,EAAS57B,KAAKyqC,IAKb7O,EAASktC,SACZn4E,EAAI83E,EAAiB/5E,KACZiC,EAAI,GAAKirC,EAAS/tC,OAAS8C,EAAG,CACrCirC,EAASktC,QAAS,EAClB,IAAI13E,EAAI,IAAIyQ,MAAM,+CACd+5B,EAAS/tC,OAAS,KAAOvC,OAAOL,GADlB,uEAIlBmG,EAAE1G,KAAO,8BACT0G,EAAE23E,QAAUr6E,EACZ0C,EAAEnG,KAAOA,EACTmG,EAAEguC,MAAQxD,EAAS/tC,OACI,iBAAZ8G,GAAwBA,EAAQlE,MACzCkE,EAAQlE,KAAK,SAAUW,EAAE1G,KAAM0G,EAAEivB,QAErC,OAhCFub,EAAWta,EAAOr2B,GAAQw/C,IACxB/7C,EAAO25E,aAmCX,OAAO35E,CACT,CAaA,SAASs6E,IACP,IAAKt8E,KAAKu8E,MAGR,OAFAv8E,KAAKgC,OAAOw6E,eAAex8E,KAAKzB,KAAMyB,KAAKy8E,QAC3Cz8E,KAAKu8E,OAAQ,EACLr7E,UAAUC,QAChB,KAAK,EACH,OAAOnB,KAAK+9C,SAASz4C,KAAKtF,KAAKgC,QACjC,KAAK,EACH,OAAOhC,KAAK+9C,SAASz4C,KAAKtF,KAAKgC,OAAQd,UAAU,IACnD,KAAK,EACH,OAAOlB,KAAK+9C,SAASz4C,KAAKtF,KAAKgC,OAAQd,UAAU,GAAIA,UAAU,IACjE,KAAK,EACH,OAAOlB,KAAK+9C,SAASz4C,KAAKtF,KAAKgC,OAAQd,UAAU,GAAIA,UAAU,GAC3DA,UAAU,IAChB,QAEE,IADA,IAAI2uB,EAAO,IAAIrlB,MAAMtJ,UAAUC,QACtB3D,EAAI,EAAGA,EAAIqyB,EAAK1uB,SAAU3D,EACjCqyB,EAAKryB,GAAK0D,UAAU1D,GACtBwC,KAAK+9C,SAASpuC,MAAM3P,KAAKgC,OAAQ6tB,GAGzC,CAEA,SAAS6sD,EAAU16E,EAAQzD,EAAMw/C,GAC/B,IAAIznB,EAAQ,CAAEimD,OAAO,EAAOE,YAAQ90E,EAAW3F,OAAQA,EAAQzD,KAAMA,EAAMw/C,SAAUA,GACjF4+B,EAAUv1E,EAAK9B,KAAKg3E,EAAahmD,GAGrC,OAFAqmD,EAAQ5+B,SAAWA,EACnBznB,EAAMmmD,OAASE,EACRA,CACT,CAyHA,SAASC,EAAW56E,EAAQzD,EAAMs+E,GAChC,IAAIjoD,EAAS5yB,EAAO05E,QAEpB,IAAK9mD,EACH,MAAO,GAET,IAAIkoD,EAAaloD,EAAOr2B,GACxB,OAAKu+E,EAGqB,mBAAfA,EACFD,EAAS,CAACC,EAAW/+B,UAAY++B,GAAc,CAACA,GAElDD,EAsDT,SAAyBhyC,GAEvB,IADA,IAAIvM,EAAM,IAAI9zB,MAAMqgC,EAAI1pC,QACf3D,EAAI,EAAGA,EAAI8gC,EAAIn9B,SAAU3D,EAChC8gC,EAAI9gC,GAAKqtC,EAAIrtC,GAAGugD,UAAYlT,EAAIrtC,GAElC,OAAO8gC,CACT,CA5DkBy+C,CAAgBD,GAAcE,EAAWF,EAAYA,EAAW37E,QALvE,EAMX,CAmBA,SAAS87E,EAAc1+E,GACrB,IAAIq2B,EAAS50B,KAAK07E,QAElB,GAAI9mD,EAAQ,CACV,IAAIkoD,EAAaloD,EAAOr2B,GAExB,GAA0B,mBAAfu+E,EACT,OAAO,EACF,GAAIA,EACT,OAAOA,EAAW37E,MAEtB,CAEA,OAAO,CACT,CAaA,SAAS67E,EAAWnyC,EAAKptC,GAEvB,IADA,IAAIy/E,EAAO,IAAI1yE,MAAM/M,GACZD,EAAI,EAAGA,EAAIC,IAAKD,EACvB0/E,EAAK1/E,GAAKqtC,EAAIrtC,GAChB,OAAO0/E,CACT,CA5bIrB,EACFp8E,OAAOoX,eAAe4kE,EAAc,sBAAuB,CACzD3kE,YAAY,EACZC,IAAK,WACH,OAAO+kE,CACT,EACAn/D,IAAK,SAASu+D,GAGZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKA,GAAQA,EAChD,MAAM,IAAIhwC,UAAU,mDACtB4wC,EAAsBZ,CACxB,IAGFO,EAAaK,oBAAsBA,EAKrCL,EAAazkE,UAAUmmE,gBAAkB,SAAyB1/E,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAKkkC,MAAMlkC,GAC1C,MAAM,IAAIytC,UAAU,0CAEtB,OADAlrC,KAAK47E,cAAgBn+E,EACduC,IACT,EAQAy7E,EAAazkE,UAAUomE,gBAAkB,WACvC,OAAOrB,EAAiB/7E,KAC1B,EA2DAy7E,EAAazkE,UAAUiU,KAAO,SAAc1sB,GAC1C,IAAI8+E,EAAI10D,EAASy+C,EAAKv3C,EAAMryB,EAAGo3B,EAC3B0oD,EAAoB,UAAT/+E,EAGf,GADAq2B,EAAS50B,KAAK07E,QAEZ4B,EAAWA,GAA2B,MAAhB1oD,EAAOjX,WAC1B,IAAK2/D,EACR,OAAO,EAGT,GAAIA,EAAS,CAGX,GAFIp8E,UAAUC,OAAS,IACrBk8E,EAAKn8E,UAAU,IACbm8E,aAAcloE,MAChB,MAAMkoE,EAGN,IAAI3hB,EAAM,IAAIvmD,MAAM,6BAA+BkoE,EAAK,KAExD,MADA3hB,EAAInuB,QAAU8vC,EACR3hB,CAGV,CAIA,KAFA/yC,EAAUiM,EAAOr2B,IAGf,OAAO,EAET,IAAIg/E,EAA0B,mBAAZ50D,EAElB,OADAy+C,EAAMlmE,UAAUC,QAGd,KAAK,GAtFT,SAAkBwnB,EAAS40D,EAAMrgF,GAC/B,GAAIqgF,EACF50D,EAAQrjB,KAAKpI,QAIb,IAFA,IAAIkqE,EAAMz+C,EAAQxnB,OACd6D,EAAYg4E,EAAWr0D,EAASy+C,GAC3B5pE,EAAI,EAAGA,EAAI4pE,IAAO5pE,EACzBwH,EAAUxH,GAAG8H,KAAKpI,EAExB,CA8EMsgF,CAAS70D,EAAS40D,EAAMv9E,MACxB,MACF,KAAK,GA/ET,SAAiB2oB,EAAS40D,EAAMrgF,EAAMugF,GACpC,GAAIF,EACF50D,EAAQrjB,KAAKpI,EAAMugF,QAInB,IAFA,IAAIrW,EAAMz+C,EAAQxnB,OACd6D,EAAYg4E,EAAWr0D,EAASy+C,GAC3B5pE,EAAI,EAAGA,EAAI4pE,IAAO5pE,EACzBwH,EAAUxH,GAAG8H,KAAKpI,EAAMugF,EAE9B,CAuEMC,CAAQ/0D,EAAS40D,EAAMv9E,KAAMkB,UAAU,IACvC,MACF,KAAK,GAxET,SAAiBynB,EAAS40D,EAAMrgF,EAAMugF,EAAME,GAC1C,GAAIJ,EACF50D,EAAQrjB,KAAKpI,EAAMugF,EAAME,QAIzB,IAFA,IAAIvW,EAAMz+C,EAAQxnB,OACd6D,EAAYg4E,EAAWr0D,EAASy+C,GAC3B5pE,EAAI,EAAGA,EAAI4pE,IAAO5pE,EACzBwH,EAAUxH,GAAG8H,KAAKpI,EAAMugF,EAAME,EAEpC,CAgEMC,CAAQj1D,EAAS40D,EAAMv9E,KAAMkB,UAAU,GAAIA,UAAU,IACrD,MACF,KAAK,GAjET,SAAmBynB,EAAS40D,EAAMrgF,EAAMugF,EAAME,EAAME,GAClD,GAAIN,EACF50D,EAAQrjB,KAAKpI,EAAMugF,EAAME,EAAME,QAI/B,IAFA,IAAIzW,EAAMz+C,EAAQxnB,OACd6D,EAAYg4E,EAAWr0D,EAASy+C,GAC3B5pE,EAAI,EAAGA,EAAI4pE,IAAO5pE,EACzBwH,EAAUxH,GAAG8H,KAAKpI,EAAMugF,EAAME,EAAME,EAE1C,CAyDMC,CAAUn1D,EAAS40D,EAAMv9E,KAAMkB,UAAU,GAAIA,UAAU,GAAIA,UAAU,IACrE,MAEF,QAEE,IADA2uB,EAAO,IAAIrlB,MAAM48D,EAAM,GAClB5pE,EAAI,EAAGA,EAAI4pE,EAAK5pE,IACnBqyB,EAAKryB,EAAI,GAAK0D,UAAU1D,IA7DhC,SAAkBmrB,EAAS40D,EAAMrgF,EAAM2yB,GACrC,GAAI0tD,EACF50D,EAAQhZ,MAAMzS,EAAM2yB,QAIpB,IAFA,IAAIu3C,EAAMz+C,EAAQxnB,OACd6D,EAAYg4E,EAAWr0D,EAASy+C,GAC3B5pE,EAAI,EAAGA,EAAI4pE,IAAO5pE,EACzBwH,EAAUxH,GAAGmS,MAAMzS,EAAM2yB,EAE/B,CAqDMkuD,CAASp1D,EAAS40D,EAAMv9E,KAAM6vB,GAGlC,OAAO,CACT,EAqEA4rD,EAAazkE,UAAUgnE,YAAc,SAAqBz/E,EAAMw/C,GAC9D,OAAOk+B,EAAaj8E,KAAMzB,EAAMw/C,GAAU,EAC5C,EAEA09B,EAAazkE,UAAUlR,GAAK21E,EAAazkE,UAAUgnE,YAEnDvC,EAAazkE,UAAUinE,gBACnB,SAAyB1/E,EAAMw/C,GAC7B,OAAOk+B,EAAaj8E,KAAMzB,EAAMw/C,GAAU,EAC5C,EAiCJ09B,EAAazkE,UAAUm1B,KAAO,SAAc5tC,EAAMw/C,GAChD,GAAwB,mBAAbA,EACT,MAAM,IAAI7S,UAAU,0CAEtB,OADAlrC,KAAK8F,GAAGvH,EAAMm+E,EAAU18E,KAAMzB,EAAMw/C,IAC7B/9C,IACT,EAEAy7E,EAAazkE,UAAUknE,oBACnB,SAA6B3/E,EAAMw/C,GACjC,GAAwB,mBAAbA,EACT,MAAM,IAAI7S,UAAU,0CAEtB,OADAlrC,KAAKi+E,gBAAgB1/E,EAAMm+E,EAAU18E,KAAMzB,EAAMw/C,IAC1C/9C,IACT,EAGJy7E,EAAazkE,UAAUwlE,eACnB,SAAwBj+E,EAAMw/C,GAC5B,IAAIyT,EAAM58B,EAAQ8c,EAAUl0C,EAAG2gF,EAE/B,GAAwB,mBAAbpgC,EACT,MAAM,IAAI7S,UAAU,0CAGtB,KADAtW,EAAS50B,KAAK07E,SAEZ,OAAO17E,KAGT,KADAwxD,EAAO58B,EAAOr2B,IAEZ,OAAOyB,KAET,GAAIwxD,IAASzT,GAAYyT,EAAKzT,WAAaA,EACb,KAAtB/9C,KAAK27E,aACT37E,KAAK07E,QAAUH,EAAa,cAErB3mD,EAAOr2B,GACVq2B,EAAO4nD,gBACTx8E,KAAKirB,KAAK,iBAAkB1sB,EAAMizD,EAAKzT,UAAYA,SAElD,GAAoB,mBAATyT,EAAqB,CAGrC,IAFA9f,GAAY,EAEPl0C,EAAIg0D,EAAKrwD,OAAS,EAAG3D,GAAK,EAAGA,IAChC,GAAIg0D,EAAKh0D,KAAOugD,GAAYyT,EAAKh0D,GAAGugD,WAAaA,EAAU,CACzDogC,EAAmB3sB,EAAKh0D,GAAGugD,SAC3BrM,EAAWl0C,EACX,KACF,CAGF,GAAIk0C,EAAW,EACb,OAAO1xC,KAEQ,IAAb0xC,EACF8f,EAAKjV,QAuHf,SAAmBiV,EAAM1rC,GACvB,IAAK,IAAItoB,EAAIsoB,EAAOrhB,EAAIjH,EAAI,EAAGC,EAAI+zD,EAAKrwD,OAAQsD,EAAIhH,EAAGD,GAAK,EAAGiH,GAAK,EAClE+sD,EAAKh0D,GAAKg0D,EAAK/sD,GACjB+sD,EAAKloC,KACP,CAzHU80D,CAAU5sB,EAAM9f,GAEE,IAAhB8f,EAAKrwD,SACPyzB,EAAOr2B,GAAQizD,EAAK,IAElB58B,EAAO4nD,gBACTx8E,KAAKirB,KAAK,iBAAkB1sB,EAAM4/E,GAAoBpgC,EAC1D,CAEA,OAAO/9C,IACT,EAEJy7E,EAAazkE,UAAUqnE,mBACnB,SAA4B9/E,GAC1B,IAAIyG,EAAW4vB,EAAQp3B,EAGvB,KADAo3B,EAAS50B,KAAK07E,SAEZ,OAAO17E,KAGT,IAAK40B,EAAO4nD,eAUV,OATyB,IAArBt7E,UAAUC,QACZnB,KAAK07E,QAAUH,EAAa,MAC5Bv7E,KAAK27E,aAAe,GACX/mD,EAAOr2B,KACY,KAAtByB,KAAK27E,aACT37E,KAAK07E,QAAUH,EAAa,aAErB3mD,EAAOr2B,IAEXyB,KAIT,GAAyB,IAArBkB,UAAUC,OAAc,CAC1B,IACImO,EADA0gB,EAAOwrD,EAAW5mD,GAEtB,IAAKp3B,EAAI,EAAGA,EAAIwyB,EAAK7uB,SAAU3D,EAEjB,oBADZ8R,EAAM0gB,EAAKxyB,KAEXwC,KAAKq+E,mBAAmB/uE,GAK1B,OAHAtP,KAAKq+E,mBAAmB,kBACxBr+E,KAAK07E,QAAUH,EAAa,MAC5Bv7E,KAAK27E,aAAe,EACb37E,IACT,CAIA,GAAyB,mBAFzBgF,EAAY4vB,EAAOr2B,IAGjByB,KAAKw8E,eAAej+E,EAAMyG,QACrB,GAAIA,EAET,IAAKxH,EAAIwH,EAAU7D,OAAS,EAAG3D,GAAK,EAAGA,IACrCwC,KAAKw8E,eAAej+E,EAAMyG,EAAUxH,IAIxC,OAAOwC,IACT,EAkBJy7E,EAAazkE,UAAUhS,UAAY,SAAmBzG,GACpD,OAAOq+E,EAAW58E,KAAMzB,GAAM,EAChC,EAEAk9E,EAAazkE,UAAUsnE,aAAe,SAAsB//E,GAC1D,OAAOq+E,EAAW58E,KAAMzB,GAAM,EAChC,EAEAk9E,EAAawB,cAAgB,SAASZ,EAAS99E,GAC7C,MAAqC,mBAA1B89E,EAAQY,cACVZ,EAAQY,cAAc1+E,GAEtB0+E,EAAc33E,KAAK+2E,EAAS99E,EAEvC,EAEAk9E,EAAazkE,UAAUimE,cAAgBA,EAiBvCxB,EAAazkE,UAAUunE,WAAa,WAClC,OAAOv+E,KAAK27E,aAAe,EAAI9yD,QAAQsoD,QAAQnxE,KAAK07E,SAAW,EACjE,0BC7dA,IACI10E,EAAQwD,MAAMwM,UAAUhQ,MACxBw3E,EAAQ/+E,OAAOuX,UAAUtQ,SAG7BzJ,EAAOR,QAAU,SAAcu/E,GAC3B,IAAIh6E,EAAShC,KACb,GAAsB,mBAAXgC,GAJA,sBAIyBw8E,EAAMl5E,KAAKtD,GAC3C,MAAM,IAAIkpC,UARE,kDAQwBlpC,GAyBxC,IAvBA,IAEIy8E,EAFA5uD,EAAO7oB,EAAM1B,KAAKpE,UAAW,GAqB7Bw9E,EAAcxrE,KAAKugC,IAAI,EAAGzxC,EAAOb,OAAS0uB,EAAK1uB,QAC/Cw9E,EAAY,GACPnhF,EAAI,EAAGA,EAAIkhF,EAAalhF,IAC7BmhF,EAAUrrE,KAAK,IAAM9V,GAKzB,GAFAihF,EAAQ1/B,SAAS,SAAU,oBAAsB4/B,EAAU7hF,KAAK,KAAO,4CAA/DiiD,EAxBK,WACT,GAAI/+C,gBAAgBy+E,EAAO,CACvB,IAAI5yD,EAAS7pB,EAAO2N,MAChB3P,KACA6vB,EAAK1vB,OAAO6G,EAAM1B,KAAKpE,aAE3B,OAAIzB,OAAOosB,KAAYA,EACZA,EAEJ7rB,IACX,CACI,OAAOgC,EAAO2N,MACVqsE,EACAnsD,EAAK1vB,OAAO6G,EAAM1B,KAAKpE,YAGnC,IAUIc,EAAOgV,UAAW,CAClB,IAAI4nE,EAAQ,WAAkB,EAC9BA,EAAM5nE,UAAYhV,EAAOgV,UACzBynE,EAAMznE,UAAY,IAAI4nE,EACtBA,EAAM5nE,UAAY,IACtB,CAEA,OAAOynE,CACX,gCCjDA,IAAII,EAAiB,EAAQ,OAE7B5hF,EAAOR,QAAUsiD,SAAS/nC,UAAU5P,MAAQy3E,gCCF5C,IAAIl3E,EAEAm3E,EAAeC,YACfC,EAAYjgC,SACZkgC,EAAa/zC,UAGbg0C,EAAwB,SAAUC,GACrC,IACC,OAAOH,EAAU,yBAA2BG,EAAmB,iBAAxDH,EACR,CAAE,MAAOjiF,GAAI,CACd,EAEIs5E,EAAQ52E,OAAOyjC,yBACnB,GAAImzC,EACH,IACCA,EAAM,CAAC,EAAG,GACX,CAAE,MAAOt5E,GACRs5E,EAAQ,IACT,CAGD,IAAI+I,EAAiB,WACpB,MAAM,IAAIH,CACX,EACII,EAAiBhJ,EACjB,WACF,IAGC,OAAO+I,CACR,CAAE,MAAOE,GACR,IAEC,OAAOjJ,EAAMn1E,UAAW,UAAU6V,GACnC,CAAE,MAAOwoE,GACR,OAAOH,CACR,CACD,CACD,CAbE,GAcAA,EAECI,EAAa,EAAQ,MAAR,GACbC,EAAW,EAAQ,MAAR,GAEXC,EAAWjgF,OAAO82D,iBACrBkpB,EACG,SAAU16E,GAAK,OAAOA,EAAEwoE,SAAW,EACnC,MAGAoS,EAAY,CAAC,EAEbC,EAAmC,oBAAfC,YAA+BH,EAAuBA,EAASG,YAArBl4E,EAE9Dm4E,EAAa,CAChB,mBAA8C,oBAAnBC,eAAiCp4E,EAAYo4E,eACxE,UAAWv1E,MACX,gBAAwC,oBAAhB6sD,YAA8B1vD,EAAY0vD,YAClE,2BAA4BmoB,GAAcE,EAAWA,EAAS,GAAGxoE,OAAOwzB,aAAe/iC,EACvF,mCAAoCA,EACpC,kBAAmBg4E,EACnB,mBAAoBA,EACpB,2BAA4BA,EAC5B,2BAA4BA,EAC5B,YAAgC,oBAAZK,QAA0Br4E,EAAYq4E,QAC1D,WAA8B,oBAAXC,OAAyBt4E,EAAYs4E,OACxD,kBAA4C,oBAAlBC,cAAgCv4E,EAAYu4E,cACtE,mBAA8C,oBAAnBC,eAAiCx4E,EAAYw4E,eACxE,YAAa3hF,QACb,aAAkC,oBAAb4hF,SAA2Bz4E,EAAYy4E,SAC5D,SAAUx3E,KACV,cAAey3E,UACf,uBAAwB5kB,mBACxB,cAAe7U,UACf,uBAAwB/pD,mBACxB,UAAWsY,MACX,SAAUmrE,KACV,cAAeC,UACf,iBAA0C,oBAAjBC,aAA+B74E,EAAY64E,aACpE,iBAA0C,oBAAjBC,aAA+B94E,EAAY84E,aACpE,yBAA0D,oBAAzBC,qBAAuC/4E,EAAY+4E,qBACpF,aAAc1B,EACd,sBAAuBW,EACvB,cAAoC,oBAAdgB,UAA4Bh5E,EAAYg5E,UAC9D,eAAsC,oBAAfC,WAA6Bj5E,EAAYi5E,WAChE,eAAsC,oBAAfC,WAA6Bl5E,EAAYk5E,WAChE,aAAcC,SACd,UAAWn/C,MACX,sBAAuB69C,GAAcE,EAAWA,EAASA,EAAS,GAAGxoE,OAAOwzB,cAAgB/iC,EAC5F,SAA0B,iBAATuM,KAAoBA,KAAOvM,EAC5C,QAAwB,oBAAR20B,IAAsB30B,EAAY20B,IAClD,yBAAyC,oBAARA,KAAwBkjD,GAAeE,EAAuBA,GAAS,IAAIpjD,KAAMplB,OAAOwzB,aAAtC/iC,EACnF,SAAUuL,KACV,WAAYtT,OACZ,WAAYH,OACZ,eAAgB0nB,WAChB,aAAcmiB,SACd,YAAgC,oBAAZpe,QAA0BvjB,EAAYujB,QAC1D,UAA4B,oBAAVnC,MAAwBphB,EAAYohB,MACtD,eAAgBg4D,WAChB,mBAAoBzJ,eACpB,YAAgC,oBAAZzuD,QAA0BlhB,EAAYkhB,QAC1D,WAAY+2C,OACZ,QAAwB,oBAARrjC,IAAsB50B,EAAY40B,IAClD,yBAAyC,oBAARA,KAAwBijD,GAAeE,EAAuBA,GAAS,IAAInjD,KAAMrlB,OAAOwzB,aAAtC/iC,EACnF,sBAAoD,oBAAtBq5E,kBAAoCr5E,EAAYq5E,kBAC9E,WAAYpiF,OACZ,4BAA6B4gF,GAAcE,EAAWA,EAAS,GAAGxoE,OAAOwzB,aAAe/iC,EACxF,WAAY63E,EAAatoE,OAASvP,EAClC,gBAAiBm3E,EACjB,mBAAoBO,EACpB,eAAgBO,EAChB,cAAeX,EACf,eAAsC,oBAAfY,WAA6Bl4E,EAAYk4E,WAChE,sBAAoD,oBAAtBoB,kBAAoCt5E,EAAYs5E,kBAC9E,gBAAwC,oBAAhBC,YAA8Bv5E,EAAYu5E,YAClE,gBAAwC,oBAAhBC,YAA8Bx5E,EAAYw5E,YAClE,aAAcC,SACd,YAAgC,oBAAZtkD,QAA0Bn1B,EAAYm1B,QAC1D,YAAgC,oBAAZukD,QAA0B15E,EAAY05E,QAC1D,YAAgC,oBAAZC,QAA0B35E,EAAY25E,SAG3D,GAAI5B,EACH,IACC,KAAK/hE,KACN,CAAE,MAAO5gB,GAER,IAAIwkF,EAAa7B,EAASA,EAAS3iF,IACnC+iF,EAAW,qBAAuByB,CACnC,CAGD,IAAIC,EAAS,SAASA,EAAOxjF,GAC5B,IAAIsQ,EACJ,GAAa,oBAATtQ,EACHsQ,EAAQ4wE,EAAsB,6BACxB,GAAa,wBAATlhF,EACVsQ,EAAQ4wE,EAAsB,wBACxB,GAAa,6BAATlhF,EACVsQ,EAAQ4wE,EAAsB,8BACxB,GAAa,qBAATlhF,EAA6B,CACvC,IAAIuR,EAAKiyE,EAAO,4BACZjyE,IACHjB,EAAQiB,EAAGyH,UAEb,MAAO,GAAa,6BAAThZ,EAAqC,CAC/C,IAAIyjF,EAAMD,EAAO,oBACbC,GAAO/B,IACVpxE,EAAQoxE,EAAS+B,EAAIzqE,WAEvB,CAIA,OAFA8oE,EAAW9hF,GAAQsQ,EAEZA,CACR,EAEIozE,EAAiB,CACpB,yBAA0B,CAAC,cAAe,aAC1C,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,QAAS,YAAa,WAC/C,uBAAwB,CAAC,QAAS,YAAa,WAC/C,oBAAqB,CAAC,QAAS,YAAa,QAC5C,sBAAuB,CAAC,QAAS,YAAa,UAC9C,2BAA4B,CAAC,gBAAiB,aAC9C,mBAAoB,CAAC,yBAA0B,aAC/C,4BAA6B,CAAC,yBAA0B,YAAa,aACrE,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,WAAY,aACpC,kBAAmB,CAAC,OAAQ,aAC5B,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,YAAa,aACtC,0BAA2B,CAAC,eAAgB,aAC5C,0BAA2B,CAAC,eAAgB,aAC5C,sBAAuB,CAAC,WAAY,aACpC,cAAe,CAAC,oBAAqB,aACrC,uBAAwB,CAAC,oBAAqB,YAAa,aAC3D,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,wBAAyB,CAAC,aAAc,aACxC,cAAe,CAAC,OAAQ,SACxB,kBAAmB,CAAC,OAAQ,aAC5B,iBAAkB,CAAC,MAAO,aAC1B,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,sBAAuB,CAAC,SAAU,YAAa,YAC/C,qBAAsB,CAAC,SAAU,YAAa,WAC9C,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,UAAW,YAAa,QAChD,gBAAiB,CAAC,UAAW,OAC7B,mBAAoB,CAAC,UAAW,UAChC,oBAAqB,CAAC,UAAW,WACjC,wBAAyB,CAAC,aAAc,aACxC,4BAA6B,CAAC,iBAAkB,aAChD,oBAAqB,CAAC,SAAU,aAChC,iBAAkB,CAAC,MAAO,aAC1B,+BAAgC,CAAC,oBAAqB,aACtD,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,yBAA0B,CAAC,cAAe,aAC1C,wBAAyB,CAAC,aAAc,aACxC,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,+BAAgC,CAAC,oBAAqB,aACtD,yBAA0B,CAAC,cAAe,aAC1C,yBAA0B,CAAC,cAAe,aAC1C,sBAAuB,CAAC,WAAY,aACpC,qBAAsB,CAAC,UAAW,aAClC,qBAAsB,CAAC,UAAW,cAG/Bt6E,EAAO,EAAQ,OACfu6E,EAAS,EAAQ,OACjBC,EAAUx6E,EAAK9B,KAAKy5C,SAASz5C,KAAMkF,MAAMwM,UAAU7W,QACnD0hF,EAAez6E,EAAK9B,KAAKy5C,SAASpvC,MAAOnF,MAAMwM,UAAUlC,QACzDgtE,EAAW16E,EAAK9B,KAAKy5C,SAASz5C,KAAM1G,OAAOoY,UAAU5D,SACrD2uE,EAAY36E,EAAK9B,KAAKy5C,SAASz5C,KAAM1G,OAAOoY,UAAUhQ,OACtDg7E,EAAQ56E,EAAK9B,KAAKy5C,SAASz5C,KAAMs6D,OAAO5oD,UAAUmT,MAGlD83D,EAAa,qGACbC,EAAe,WAiBfC,EAAmB,SAA0BnkF,EAAMg4E,GACtD,IACIhQ,EADAoc,EAAgBpkF,EAOpB,GALI2jF,EAAOD,EAAgBU,KAE1BA,EAAgB,KADhBpc,EAAQ0b,EAAeU,IACK,GAAK,KAG9BT,EAAO7B,EAAYsC,GAAgB,CACtC,IAAI9zE,EAAQwxE,EAAWsC,GAIvB,GAHI9zE,IAAUqxE,IACbrxE,EAAQkzE,EAAOY,SAEK,IAAV9zE,IAA0B0nE,EACpC,MAAM,IAAIiJ,EAAW,aAAejhF,EAAO,wDAG5C,MAAO,CACNgoE,MAAOA,EACPhoE,KAAMokF,EACN9zE,MAAOA,EAET,CAEA,MAAM,IAAIwwE,EAAa,aAAe9gF,EAAO,mBAC9C,EAEAf,EAAOR,QAAU,SAAsBuB,EAAMg4E,GAC5C,GAAoB,iBAATh4E,GAAqC,IAAhBA,EAAKmD,OACpC,MAAM,IAAI89E,EAAW,6CAEtB,GAAI/9E,UAAUC,OAAS,GAA6B,kBAAjB60E,EAClC,MAAM,IAAIiJ,EAAW,6CAGtB,GAAmC,OAA/B+C,EAAM,cAAehkF,GACxB,MAAM,IAAI8gF,EAAa,sFAExB,IAAI/iB,EAtDc,SAAsBhR,GACxC,IAAIs3B,EAAQN,EAAUh3B,EAAQ,EAAG,GAC7Bu3B,EAAOP,EAAUh3B,GAAS,GAC9B,GAAc,MAAVs3B,GAA0B,MAATC,EACpB,MAAM,IAAIxD,EAAa,kDACjB,GAAa,MAATwD,GAA0B,MAAVD,EAC1B,MAAM,IAAIvD,EAAa,kDAExB,IAAIjzD,EAAS,GAIb,OAHAi2D,EAAS/2B,EAAQk3B,GAAY,SAAUp6D,EAAO06D,EAAQC,EAAOC,GAC5D52D,EAAOA,EAAO1qB,QAAUqhF,EAAQV,EAASW,EAAWP,EAAc,MAAQK,GAAU16D,CACrF,IACOgE,CACR,CAyCa62D,CAAa1kF,GACrB2kF,EAAoB5mB,EAAM56D,OAAS,EAAI46D,EAAM,GAAK,GAElDka,EAAYkM,EAAiB,IAAMQ,EAAoB,IAAK3M,GAC5D4M,EAAoB3M,EAAUj4E,KAC9BsQ,EAAQ2nE,EAAU3nE,MAClBu0E,GAAqB,EAErB7c,EAAQiQ,EAAUjQ,MAClBA,IACH2c,EAAoB3c,EAAM,GAC1B6b,EAAa9lB,EAAO6lB,EAAQ,CAAC,EAAG,GAAI5b,KAGrC,IAAK,IAAIxoE,EAAI,EAAGslF,GAAQ,EAAMtlF,EAAIu+D,EAAM56D,OAAQ3D,GAAK,EAAG,CACvD,IAAIulF,EAAOhnB,EAAMv+D,GACb6kF,EAAQN,EAAUgB,EAAM,EAAG,GAC3BT,EAAOP,EAAUgB,GAAO,GAC5B,IAEa,MAAVV,GAA2B,MAAVA,GAA2B,MAAVA,GACtB,MAATC,GAAyB,MAATA,GAAyB,MAATA,IAElCD,IAAUC,EAEb,MAAM,IAAIxD,EAAa,wDASxB,GAPa,gBAATiE,GAA2BD,IAC9BD,GAAqB,GAMlBlB,EAAO7B,EAFX8C,EAAoB,KADpBD,GAAqB,IAAMI,GACmB,KAG7Cz0E,EAAQwxE,EAAW8C,QACb,GAAa,MAATt0E,EAAe,CACzB,KAAMy0E,KAAQz0E,GAAQ,CACrB,IAAK0nE,EACJ,MAAM,IAAIiJ,EAAW,sBAAwBjhF,EAAO,+CAErD,MACD,CACA,GAAIq4E,GAAU74E,EAAI,GAAMu+D,EAAM56D,OAAQ,CACrC,IAAI6hF,EAAO3M,EAAM/nE,EAAOy0E,GAWvBz0E,GAVDw0E,IAAUE,IASG,QAASA,KAAU,kBAAmBA,EAAKjsE,KAC/CisE,EAAKjsE,IAELzI,EAAMy0E,EAEhB,MACCD,EAAQnB,EAAOrzE,EAAOy0E,GACtBz0E,EAAQA,EAAMy0E,GAGXD,IAAUD,IACb/C,EAAW8C,GAAqBt0E,EAElC,CACD,CACA,OAAOA,CACR,0BC5VA,IAAIsK,EAAO,CACVqqE,IAAK,CAAC,GAGHC,EAAUzjF,OAEdxC,EAAOR,QAAU,WAChB,MAAO,CAAE8wE,UAAW30D,GAAOqqE,MAAQrqE,EAAKqqE,OAAS,CAAE1V,UAAW,gBAAkB2V,EACjF,gCCRA,IAAIC,EAA+B,oBAAXjsE,QAA0BA,OAC9CksE,EAAgB,EAAQ,OAE5BnmF,EAAOR,QAAU,WAChB,MAA0B,mBAAf0mF,GACW,mBAAXjsE,QACsB,iBAAtBisE,EAAW,QACO,iBAAlBjsE,OAAO,QAEXksE,GACR,0BCTAnmF,EAAOR,QAAU,WAChB,GAAsB,mBAAXya,QAAiE,mBAAjCzX,OAAO49C,sBAAwC,OAAO,EACjG,GAA+B,iBAApBnmC,OAAOwzB,SAAyB,OAAO,EAElD,IAAIvL,EAAM,CAAC,EACPkkD,EAAMnsE,OAAO,QACbosE,EAAS7jF,OAAO4jF,GACpB,GAAmB,iBAARA,EAAoB,OAAO,EAEtC,GAA4C,oBAAxC5jF,OAAOuX,UAAUtQ,SAASpB,KAAK+9E,GAA8B,OAAO,EACxE,GAA+C,oBAA3C5jF,OAAOuX,UAAUtQ,SAASpB,KAAKg+E,GAAiC,OAAO,EAY3E,IAAKD,KADLlkD,EAAIkkD,GADS,GAEDlkD,EAAO,OAAO,EAC1B,GAA2B,mBAAhB1/B,OAAOuwB,MAAmD,IAA5BvwB,OAAOuwB,KAAKmP,GAAKh+B,OAAgB,OAAO,EAEjF,GAA0C,mBAA/B1B,OAAO8jF,qBAAiF,IAA3C9jF,OAAO8jF,oBAAoBpkD,GAAKh+B,OAAgB,OAAO,EAE/G,IAAIqiF,EAAO/jF,OAAO49C,sBAAsBle,GACxC,GAAoB,IAAhBqkD,EAAKriF,QAAgBqiF,EAAK,KAAOH,EAAO,OAAO,EAEnD,IAAK5jF,OAAOuX,UAAUsmC,qBAAqBh4C,KAAK65B,EAAKkkD,GAAQ,OAAO,EAEpE,GAA+C,mBAApC5jF,OAAOyjC,yBAAyC,CAC1D,IAAI7S,EAAa5wB,OAAOyjC,yBAAyB/D,EAAKkkD,GACtD,GAdY,KAcRhzD,EAAW/hB,QAA8C,IAA1B+hB,EAAWvZ,WAAuB,OAAO,CAC7E,CAEA,OAAO,CACR,gCCvCA,IAAI1P,EAAO,EAAQ,OAEnBnK,EAAOR,QAAU2K,EAAK9B,KAAKy5C,SAASz5C,KAAM7F,OAAOuX,UAAUC,iCCJ3D,IAAIwsE,EAAO,EAAQ,MACft6D,EAAM,EAAQ,MAEdu6D,EAAQzmF,EAAOR,QAEnB,IAAK,IAAI6S,KAAOm0E,EACVA,EAAKxsE,eAAe3H,KAAMo0E,EAAMp0E,GAAOm0E,EAAKn0E,IAalD,SAASq0E,EAAgBtyB,GAOvB,GANsB,iBAAXA,IACTA,EAASloC,EAAI8F,MAAMoiC,IAEhBA,EAAOgH,WACVhH,EAAOgH,SAAW,UAEI,WAApBhH,EAAOgH,SACT,MAAM,IAAIljD,MAAM,aAAek8C,EAAOgH,SAAW,sCAEnD,OAAOhH,CACT,CArBAqyB,EAAM1pB,QAAU,SAAU3I,EAAQzZ,GAEhC,OADAyZ,EAASsyB,EAAetyB,GACjBoyB,EAAKzpB,QAAQ10D,KAAKtF,KAAMqxD,EAAQzZ,EACzC,EAEA8rC,EAAM3sE,IAAM,SAAUs6C,EAAQzZ,GAE5B,OADAyZ,EAASsyB,EAAetyB,GACjBoyB,EAAK1sE,IAAIzR,KAAKtF,KAAMqxD,EAAQzZ,EACrC,aCjB6B,mBAAlBn4C,OAAOsiE,OAEhB9kE,EAAOR,QAAU,SAAkBmnF,EAAMC,GACnCA,IACFD,EAAKE,OAASD,EACdD,EAAK5sE,UAAYvX,OAAOsiE,OAAO8hB,EAAU7sE,UAAW,CAClD0R,YAAa,CACXpa,MAAOs1E,EACP9sE,YAAY,EACZwoB,UAAU,EACVC,cAAc,KAItB,EAGAtiC,EAAOR,QAAU,SAAkBmnF,EAAMC,GACvC,GAAIA,EAAW,CACbD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAAS/sE,UAAY6sE,EAAU7sE,UAC/B4sE,EAAK5sE,UAAY,IAAI+sE,EACrBH,EAAK5sE,UAAU0R,YAAck7D,CAC/B,CACF,oCCKEI,aAPAh2E,EAAuB,iBAAZ6a,QAAuBA,QAAU,KAC5Co7D,EAAej2E,GAAwB,mBAAZA,EAAE2B,MAC7B3B,EAAE2B,MACF,SAAsB3N,EAAQ22E,EAAU9oD,GACxC,OAAOkvB,SAAS/nC,UAAUrH,MAAMrK,KAAKtD,EAAQ22E,EAAU9oD,EACzD,EAIAm0D,EADEh2E,GAA0B,mBAAdA,EAAEmjE,QACCnjE,EAAEmjE,QACV1xE,OAAO49C,sBACC,SAAwBr7C,GACvC,OAAOvC,OAAO8jF,oBAAoBvhF,GAC/B7B,OAAOV,OAAO49C,sBAAsBr7C,GACzC,EAEiB,SAAwBA,GACvC,OAAOvC,OAAO8jF,oBAAoBvhF,EACpC,EAOF,IAAIkiF,EAActkF,OAAO+hC,OAAS,SAAqBrzB,GACrD,OAAOA,GAAUA,CACnB,EAEA,SAASmtE,IACPA,EAAatyC,KAAK7jC,KAAKtF,KACzB,CACA/C,EAAOR,QAAUg/E,EACjBx+E,EAAOR,QAAQ0vC,KAwYf,SAAckwC,EAASr+E,GACrB,OAAO,IAAIktB,SAAQ,SAAU+E,EAAS6G,GACpC,SAASqtD,EAAczoB,GACrB2gB,EAAQG,eAAex+E,EAAMomF,GAC7BttD,EAAO4kC,EACT,CAEA,SAAS0oB,IAC+B,mBAA3B/H,EAAQG,gBACjBH,EAAQG,eAAe,QAAS2H,GAElCl0D,EAAQ,GAAGjpB,MAAM1B,KAAKpE,WACxB,CAEAmjF,EAA+BhI,EAASr+E,EAAMomF,EAAU,CAAEj4C,MAAM,IACnD,UAATnuC,GAMR,SAAuCq+E,EAAS1zD,EAAS23C,GAC7B,mBAAf+b,EAAQv2E,IACjBu+E,EAA+BhI,EAAS,QAAS1zD,EAPO,CAAEwjB,MAAM,GASpE,CATMm4C,CAA8BjI,EAAS8H,EAE3C,GACF,EAxZA1I,EAAaA,aAAeA,EAE5BA,EAAazkE,UAAU0kE,aAAU/zE,EACjC8zE,EAAazkE,UAAU2kE,aAAe,EACtCF,EAAazkE,UAAU4kE,mBAAgBj0E,EAIvC,IAAIm0E,EAAsB,GAE1B,SAASyI,EAAcxmC,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAI7S,UAAU,0EAA4E6S,EAEpG,CAoCA,SAASymC,EAAiBxI,GACxB,YAA2Br0E,IAAvBq0E,EAAKJ,cACAH,EAAaK,oBACfE,EAAKJ,aACd,CAkDA,SAASK,EAAaj6E,EAAQzD,EAAMw/C,EAAUm+B,GAC5C,IAAIj4E,EACA2wB,EACAsa,EA1HsBu1C,EAgJ1B,GApBAF,EAAcxmC,QAGCp2C,KADfitB,EAAS5yB,EAAO05E,UAEd9mD,EAAS5yB,EAAO05E,QAAUj8E,OAAOsiE,OAAO,MACxC//D,EAAO25E,aAAe,SAIKh0E,IAAvBitB,EAAOunD,cACTn6E,EAAOipB,KAAK,cAAe1sB,EACfw/C,EAASA,SAAWA,EAASA,SAAWA,GAIpDnpB,EAAS5yB,EAAO05E,SAElBxsC,EAAWta,EAAOr2B,SAGHoJ,IAAbunC,EAEFA,EAAWta,EAAOr2B,GAAQw/C,IACxB/7C,EAAO25E,kBAeT,GAbwB,mBAAbzsC,EAETA,EAAWta,EAAOr2B,GAChB29E,EAAU,CAACn+B,EAAU7O,GAAY,CAACA,EAAU6O,GAErCm+B,EACThtC,EAAShW,QAAQ6kB,GAEjB7O,EAAS57B,KAAKyqC,IAIhB95C,EAAIugF,EAAiBxiF,IACb,GAAKktC,EAAS/tC,OAAS8C,IAAMirC,EAASktC,OAAQ,CACpDltC,EAASktC,QAAS,EAGlB,IAAI13E,EAAI,IAAIyQ,MAAM,+CACE+5B,EAAS/tC,OAAS,IAAMvC,OAAOL,GADjC,qEAIlBmG,EAAE1G,KAAO,8BACT0G,EAAE23E,QAAUr6E,EACZ0C,EAAEnG,KAAOA,EACTmG,EAAEguC,MAAQxD,EAAS/tC,OA7KGsjF,EA8KH//E,EA7KnBuD,GAAWA,EAAQlE,MAAMkE,EAAQlE,KAAK0gF,EA8KxC,CAGF,OAAOziF,CACT,CAaA,SAASs6E,IACP,IAAKt8E,KAAKu8E,MAGR,OAFAv8E,KAAKgC,OAAOw6E,eAAex8E,KAAKzB,KAAMyB,KAAKy8E,QAC3Cz8E,KAAKu8E,OAAQ,EACY,IAArBr7E,UAAUC,OACLnB,KAAK+9C,SAASz4C,KAAKtF,KAAKgC,QAC1BhC,KAAK+9C,SAASpuC,MAAM3P,KAAKgC,OAAQd,UAE5C,CAEA,SAASw7E,EAAU16E,EAAQzD,EAAMw/C,GAC/B,IAAIznB,EAAQ,CAAEimD,OAAO,EAAOE,YAAQ90E,EAAW3F,OAAQA,EAAQzD,KAAMA,EAAMw/C,SAAUA,GACjF4+B,EAAUL,EAAYl1E,KAAKkvB,GAG/B,OAFAqmD,EAAQ5+B,SAAWA,EACnBznB,EAAMmmD,OAASE,EACRA,CACT,CAyHA,SAASC,EAAW56E,EAAQzD,EAAMs+E,GAChC,IAAIjoD,EAAS5yB,EAAO05E,QAEpB,QAAe/zE,IAAXitB,EACF,MAAO,GAET,IAAIkoD,EAAaloD,EAAOr2B,GACxB,YAAmBoJ,IAAfm1E,EACK,GAEiB,mBAAfA,EACFD,EAAS,CAACC,EAAW/+B,UAAY++B,GAAc,CAACA,GAElDD,EAsDT,SAAyBhyC,GAEvB,IADA,IAAIvM,EAAM,IAAI9zB,MAAMqgC,EAAI1pC,QACf3D,EAAI,EAAGA,EAAI8gC,EAAIn9B,SAAU3D,EAChC8gC,EAAI9gC,GAAKqtC,EAAIrtC,GAAGugD,UAAYlT,EAAIrtC,GAElC,OAAO8gC,CACT,CA3DIy+C,CAAgBD,GAAcE,EAAWF,EAAYA,EAAW37E,OACpE,CAmBA,SAAS87E,EAAc1+E,GACrB,IAAIq2B,EAAS50B,KAAK07E,QAElB,QAAe/zE,IAAXitB,EAAsB,CACxB,IAAIkoD,EAAaloD,EAAOr2B,GAExB,GAA0B,mBAAfu+E,EACT,OAAO,EACF,QAAmBn1E,IAAfm1E,EACT,OAAOA,EAAW37E,MAEtB,CAEA,OAAO,CACT,CAMA,SAAS67E,EAAWnyC,EAAKptC,GAEvB,IADA,IAAIy/E,EAAO,IAAI1yE,MAAM/M,GACZD,EAAI,EAAGA,EAAIC,IAAKD,EACvB0/E,EAAK1/E,GAAKqtC,EAAIrtC,GAChB,OAAO0/E,CACT,CA2CA,SAASmH,EAA+BhI,EAASr+E,EAAM+/C,EAAUuiB,GAC/D,GAA0B,mBAAf+b,EAAQv2E,GACbw6D,EAAMn0B,KACRkwC,EAAQlwC,KAAKnuC,EAAM+/C,GAEnBs+B,EAAQv2E,GAAG9H,EAAM+/C,OAEd,IAAwC,mBAA7Bs+B,EAAQ1wE,iBAYxB,MAAM,IAAIu/B,UAAU,6EAA+EmxC,GATnGA,EAAQ1wE,iBAAiB3N,GAAM,SAAS0mF,EAAaxJ,GAG/C5a,EAAMn0B,MACRkwC,EAAQvwE,oBAAoB9N,EAAM0mF,GAEpC3mC,EAASm9B,EACX,GAGF,CACF,CAraAz7E,OAAOoX,eAAe4kE,EAAc,sBAAuB,CACzD3kE,YAAY,EACZC,IAAK,WACH,OAAO+kE,CACT,EACAn/D,IAAK,SAASu+D,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKgJ,EAAYhJ,GACpD,MAAM,IAAI6F,WAAW,kGAAoG7F,EAAM,KAEjIY,EAAsBZ,CACxB,IAGFO,EAAatyC,KAAO,gBAEGxhC,IAAjB3H,KAAK07E,SACL17E,KAAK07E,UAAYj8E,OAAO82D,eAAev2D,MAAM07E,UAC/C17E,KAAK07E,QAAUj8E,OAAOsiE,OAAO,MAC7B/hE,KAAK27E,aAAe,GAGtB37E,KAAK47E,cAAgB57E,KAAK47E,oBAAiBj0E,CAC7C,EAIA8zE,EAAazkE,UAAUmmE,gBAAkB,SAAyB1/E,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAKymF,EAAYzmF,GAChD,MAAM,IAAIsjF,WAAW,gFAAkFtjF,EAAI,KAG7G,OADAuC,KAAK47E,cAAgBn+E,EACduC,IACT,EAQAy7E,EAAazkE,UAAUomE,gBAAkB,WACvC,OAAOoH,EAAiBxkF,KAC1B,EAEAy7E,EAAazkE,UAAUiU,KAAO,SAAc1sB,GAE1C,IADA,IAAIsxB,EAAO,GACFryB,EAAI,EAAGA,EAAI0D,UAAUC,OAAQ3D,IAAKqyB,EAAKvc,KAAKpS,UAAU1D,IAC/D,IAAI8/E,EAAoB,UAAT/+E,EAEXq2B,EAAS50B,KAAK07E,QAClB,QAAe/zE,IAAXitB,EACF0oD,EAAWA,QAA4B31E,IAAjBitB,EAAOjX,WAC1B,IAAK2/D,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAID,EAGJ,GAFIxtD,EAAK1uB,OAAS,IAChBk8E,EAAKxtD,EAAK,IACRwtD,aAAcloE,MAGhB,MAAMkoE,EAGR,IAAI3hB,EAAM,IAAIvmD,MAAM,oBAAsBkoE,EAAK,KAAOA,EAAG1pD,QAAU,IAAM,KAEzE,MADA+nC,EAAInuB,QAAU8vC,EACR3hB,CACR,CAEA,IAAI/yC,EAAUiM,EAAOr2B,GAErB,QAAgBoJ,IAAZghB,EACF,OAAO,EAET,GAAuB,mBAAZA,EACTs7D,EAAat7D,EAAS3oB,KAAM6vB,OAE5B,KAAIu3C,EAAMz+C,EAAQxnB,OACd6D,EAAYg4E,EAAWr0D,EAASy+C,GACpC,IAAS5pE,EAAI,EAAGA,EAAI4pE,IAAO5pE,EACzBymF,EAAaj/E,EAAUxH,GAAIwC,KAAM6vB,EAHX,CAM1B,OAAO,CACT,EAgEA4rD,EAAazkE,UAAUgnE,YAAc,SAAqBz/E,EAAMw/C,GAC9D,OAAOk+B,EAAaj8E,KAAMzB,EAAMw/C,GAAU,EAC5C,EAEA09B,EAAazkE,UAAUlR,GAAK21E,EAAazkE,UAAUgnE,YAEnDvC,EAAazkE,UAAUinE,gBACnB,SAAyB1/E,EAAMw/C,GAC7B,OAAOk+B,EAAaj8E,KAAMzB,EAAMw/C,GAAU,EAC5C,EAoBJ09B,EAAazkE,UAAUm1B,KAAO,SAAc5tC,EAAMw/C,GAGhD,OAFAwmC,EAAcxmC,GACd/9C,KAAK8F,GAAGvH,EAAMm+E,EAAU18E,KAAMzB,EAAMw/C,IAC7B/9C,IACT,EAEAy7E,EAAazkE,UAAUknE,oBACnB,SAA6B3/E,EAAMw/C,GAGjC,OAFAwmC,EAAcxmC,GACd/9C,KAAKi+E,gBAAgB1/E,EAAMm+E,EAAU18E,KAAMzB,EAAMw/C,IAC1C/9C,IACT,EAGJy7E,EAAazkE,UAAUwlE,eACnB,SAAwBj+E,EAAMw/C,GAC5B,IAAIyT,EAAM58B,EAAQ8c,EAAUl0C,EAAG2gF,EAK/B,GAHAoG,EAAcxmC,QAGCp2C,KADfitB,EAAS50B,KAAK07E,SAEZ,OAAO17E,KAGT,QAAa2H,KADb6pD,EAAO58B,EAAOr2B,IAEZ,OAAOyB,KAET,GAAIwxD,IAASzT,GAAYyT,EAAKzT,WAAaA,EACb,KAAtB/9C,KAAK27E,aACT37E,KAAK07E,QAAUj8E,OAAOsiE,OAAO,cAEtBntC,EAAOr2B,GACVq2B,EAAO4nD,gBACTx8E,KAAKirB,KAAK,iBAAkB1sB,EAAMizD,EAAKzT,UAAYA,SAElD,GAAoB,mBAATyT,EAAqB,CAGrC,IAFA9f,GAAY,EAEPl0C,EAAIg0D,EAAKrwD,OAAS,EAAG3D,GAAK,EAAGA,IAChC,GAAIg0D,EAAKh0D,KAAOugD,GAAYyT,EAAKh0D,GAAGugD,WAAaA,EAAU,CACzDogC,EAAmB3sB,EAAKh0D,GAAGugD,SAC3BrM,EAAWl0C,EACX,KACF,CAGF,GAAIk0C,EAAW,EACb,OAAO1xC,KAEQ,IAAb0xC,EACF8f,EAAKjV,QAiIf,SAAmBiV,EAAM1rC,GACvB,KAAOA,EAAQ,EAAI0rC,EAAKrwD,OAAQ2kB,IAC9B0rC,EAAK1rC,GAAS0rC,EAAK1rC,EAAQ,GAC7B0rC,EAAKloC,KACP,CAnIU80D,CAAU5sB,EAAM9f,GAGE,IAAhB8f,EAAKrwD,SACPyzB,EAAOr2B,GAAQizD,EAAK,SAEQ7pD,IAA1BitB,EAAO4nD,gBACTx8E,KAAKirB,KAAK,iBAAkB1sB,EAAM4/E,GAAoBpgC,EAC1D,CAEA,OAAO/9C,IACT,EAEJy7E,EAAazkE,UAAUjL,IAAM0vE,EAAazkE,UAAUwlE,eAEpDf,EAAazkE,UAAUqnE,mBACnB,SAA4B9/E,GAC1B,IAAIyG,EAAW4vB,EAAQp3B,EAGvB,QAAemK,KADfitB,EAAS50B,KAAK07E,SAEZ,OAAO17E,KAGT,QAA8B2H,IAA1BitB,EAAO4nD,eAUT,OATyB,IAArBt7E,UAAUC,QACZnB,KAAK07E,QAAUj8E,OAAOsiE,OAAO,MAC7B/hE,KAAK27E,aAAe,QACMh0E,IAAjBitB,EAAOr2B,KACY,KAAtByB,KAAK27E,aACT37E,KAAK07E,QAAUj8E,OAAOsiE,OAAO,aAEtBntC,EAAOr2B,IAEXyB,KAIT,GAAyB,IAArBkB,UAAUC,OAAc,CAC1B,IACImO,EADA0gB,EAAOvwB,OAAOuwB,KAAK4E,GAEvB,IAAKp3B,EAAI,EAAGA,EAAIwyB,EAAK7uB,SAAU3D,EAEjB,oBADZ8R,EAAM0gB,EAAKxyB,KAEXwC,KAAKq+E,mBAAmB/uE,GAK1B,OAHAtP,KAAKq+E,mBAAmB,kBACxBr+E,KAAK07E,QAAUj8E,OAAOsiE,OAAO,MAC7B/hE,KAAK27E,aAAe,EACb37E,IACT,CAIA,GAAyB,mBAFzBgF,EAAY4vB,EAAOr2B,IAGjByB,KAAKw8E,eAAej+E,EAAMyG,QACrB,QAAkB2C,IAAd3C,EAET,IAAKxH,EAAIwH,EAAU7D,OAAS,EAAG3D,GAAK,EAAGA,IACrCwC,KAAKw8E,eAAej+E,EAAMyG,EAAUxH,IAIxC,OAAOwC,IACT,EAmBJy7E,EAAazkE,UAAUhS,UAAY,SAAmBzG,GACpD,OAAOq+E,EAAW58E,KAAMzB,GAAM,EAChC,EAEAk9E,EAAazkE,UAAUsnE,aAAe,SAAsB//E,GAC1D,OAAOq+E,EAAW58E,KAAMzB,GAAM,EAChC,EAEAk9E,EAAawB,cAAgB,SAASZ,EAAS99E,GAC7C,MAAqC,mBAA1B89E,EAAQY,cACVZ,EAAQY,cAAc1+E,GAEtB0+E,EAAc33E,KAAK+2E,EAAS99E,EAEvC,EAEAk9E,EAAazkE,UAAUimE,cAAgBA,EAiBvCxB,EAAazkE,UAAUunE,WAAa,WAClC,OAAOv+E,KAAK27E,aAAe,EAAIqI,EAAehkF,KAAK07E,SAAW,EAChE,mBCpZAz+E,EAAOR,QAAUkoF,EAEjB,IAAIC,EAAK,sBAoBT,SAASD,IACPC,EAAGt/E,KAAKtF,KACV,CArBe,EAAQ,MAEvB6kF,CAASF,EAAQC,GACjBD,EAAOG,SAAW,EAAQ,OAC1BH,EAAOI,SAAW,EAAQ,OAC1BJ,EAAOK,OAAS,EAAQ,OACxBL,EAAOM,UAAY,EAAQ,OAC3BN,EAAOO,YAAc,EAAQ,OAC7BP,EAAOQ,SAAW,EAAQ,OAC1BR,EAAOS,SAAW,EAAQ,OAG1BT,EAAOA,OAASA,EAWhBA,EAAO3tE,UAAUquE,KAAO,SAASC,EAAM70E,GACrC,IAAIkX,EAAS3nB,KAEb,SAASulF,EAAO/jD,GACV8jD,EAAKhmD,WACH,IAAUgmD,EAAKE,MAAMhkD,IAAU7Z,EAAO7e,OACxC6e,EAAO7e,OAGb,CAIA,SAAS28E,IACH99D,EAAO+9D,UAAY/9D,EAAOg+D,QAC5Bh+D,EAAOg+D,QAEX,CANAh+D,EAAO7hB,GAAG,OAAQy/E,GAQlBD,EAAKx/E,GAAG,QAAS2/E,GAIZH,EAAKM,UAAcn1E,IAA2B,IAAhBA,EAAQ0iC,MACzCxrB,EAAO7hB,GAAG,MAAO+/E,GACjBl+D,EAAO7hB,GAAG,QAASggF,IAGrB,IAAIC,GAAW,EACf,SAASF,IACHE,IACJA,GAAW,EAEXT,EAAKnyC,MACP,CAGA,SAAS2yC,IACHC,IACJA,GAAW,EAEiB,mBAAjBT,EAAKt5E,SAAwBs5E,EAAKt5E,UAC/C,CAGA,SAAS8lB,EAAQurD,GAEf,GADA1/B,IACwC,IAApCinC,EAAG3H,cAAcj9E,KAAM,SACzB,MAAMq9E,CAEV,CAMA,SAAS1/B,IACPh2B,EAAO60D,eAAe,OAAQ+I,GAC9BD,EAAK9I,eAAe,QAASiJ,GAE7B99D,EAAO60D,eAAe,MAAOqJ,GAC7Bl+D,EAAO60D,eAAe,QAASsJ,GAE/Bn+D,EAAO60D,eAAe,QAAS1qD,GAC/BwzD,EAAK9I,eAAe,QAAS1qD,GAE7BnK,EAAO60D,eAAe,MAAO7+B,GAC7Bh2B,EAAO60D,eAAe,QAAS7+B,GAE/B2nC,EAAK9I,eAAe,QAAS7+B,EAC/B,CAUA,OA5BAh2B,EAAO7hB,GAAG,QAASgsB,GACnBwzD,EAAKx/E,GAAG,QAASgsB,GAmBjBnK,EAAO7hB,GAAG,MAAO63C,GACjBh2B,EAAO7hB,GAAG,QAAS63C,GAEnB2nC,EAAKx/E,GAAG,QAAS63C,GAEjB2nC,EAAKr6D,KAAK,OAAQtD,GAGX29D,CACT,0BC5HA,IAAIU,EAAQ,CAAC,EAEb,SAASC,EAAgBvtE,EAAMib,EAASuyD,GACjCA,IACHA,EAAO/wE,OAWT,IAAIgxE,EAEJ,SAAUC,GAnBZ,IAAwB7L,EAAUC,EAsB9B,SAAS2L,EAAU1I,EAAME,EAAME,GAC7B,OAAOuI,EAAM9gF,KAAKtF,KAdtB,SAAoBy9E,EAAME,EAAME,GAC9B,MAAuB,iBAAZlqD,EACFA,EAEAA,EAAQ8pD,EAAME,EAAME,EAE/B,CAQ4BwI,CAAW5I,EAAME,EAAME,KAAU79E,IAC3D,CAEA,OA1B8Bw6E,EAoBJ4L,GApBN7L,EAoBL4L,GApBsCnvE,UAAYvX,OAAOsiE,OAAOyY,EAAWxjE,WAAYujE,EAASvjE,UAAU0R,YAAc6xD,EAAUA,EAAShN,UAAYiN,EA0B/J2L,CACT,CARA,CAQED,GAEFC,EAAUnvE,UAAUhZ,KAAOkoF,EAAKloF,KAChCmoF,EAAUnvE,UAAU0B,KAAOA,EAC3BstE,EAAMttE,GAAQytE,CAChB,CAGA,SAASG,EAAMC,EAAUC,GACvB,GAAIh8E,MAAM6I,QAAQkzE,GAAW,CAC3B,IAAInf,EAAMmf,EAASplF,OAKnB,OAJAolF,EAAWA,EAAS3pF,KAAI,SAAUY,GAChC,OAAOoB,OAAOpB,EAChB,IAEI4pE,EAAM,EACD,UAAUjnE,OAAOqmF,EAAO,KAAKrmF,OAAOomF,EAASv/E,MAAM,EAAGogE,EAAM,GAAGtqE,KAAK,MAAO,SAAWypF,EAASnf,EAAM,GAC3F,IAARA,EACF,UAAUjnE,OAAOqmF,EAAO,KAAKrmF,OAAOomF,EAAS,GAAI,QAAQpmF,OAAOomF,EAAS,IAEzE,MAAMpmF,OAAOqmF,EAAO,KAAKrmF,OAAOomF,EAAS,GAEpD,CACE,MAAO,MAAMpmF,OAAOqmF,EAAO,KAAKrmF,OAAOvB,OAAO2nF,GAElD,CA6BAN,EAAgB,yBAAyB,SAAUjoF,EAAMsQ,GACvD,MAAO,cAAgBA,EAAQ,4BAA8BtQ,EAAO,GACtE,GAAGktC,WACH+6C,EAAgB,wBAAwB,SAAUjoF,EAAMuoF,EAAUE,GAEhE,IAAIC,EA/BmBj8D,EAwCnBgiD,EA1BY7tB,EAAaj2C,EA4B7B,GATwB,iBAAb49E,IAjCY97D,EAiCkC,OAAV87D,EAhCpCjlB,OAAyB,EAAU72C,KAAmBA,IAiC/Di8D,EAAa,cACbH,EAAWA,EAASnzE,QAAQ,QAAS,KAErCszE,EAAa,UAhCjB,SAAkB9nC,EAAKn0B,EAAQk8D,GAK7B,YAJiBh/E,IAAbg/E,GAA0BA,EAAW/nC,EAAIz9C,UAC3CwlF,EAAW/nC,EAAIz9C,QAGVy9C,EAAIpzB,UAAUm7D,EAAWl8D,EAAek8D,KAAcl8D,CAC/D,CA+BMm8D,CAAS5oF,EAAM,aAEjByuE,EAAM,OAAOtsE,OAAOnC,EAAM,KAAKmC,OAAOumF,EAAY,KAAKvmF,OAAOmmF,EAAMC,EAAU,aACzE,CACL,IAAIhoF,GA/Be,iBAAVoK,IACTA,EAAQ,GAGNA,EAAQ8hB,GALIm0B,EAgCM5gD,GA3BUmD,SAGS,IAAhCy9C,EAAI7/C,QAwBe,IAxBC4J,GAwBmB,WAAb,YACjC8jE,EAAM,QAAStsE,OAAOnC,EAAM,MAAOmC,OAAO5B,EAAM,KAAK4B,OAAOumF,EAAY,KAAKvmF,OAAOmmF,EAAMC,EAAU,QACtG,CAGA,OADA9Z,EAAO,mBAAmBtsE,cAAcsmF,EAE1C,GAAGv7C,WACH+6C,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAUjoF,GACtD,MAAO,OAASA,EAAO,4BACzB,IACAioF,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAUjoF,GAChD,MAAO,eAAiBA,EAAO,+BACjC,IACAioF,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuC/6C,WACjF+6C,EAAgB,wBAAwB,SAAU/K,GAChD,MAAO,qBAAuBA,CAChC,GAAGhwC,WACH+6C,EAAgB,qCAAsC,oCACtDhpF,EAAOR,QAAQ,EAAQupF,+CCjGnBxK,EAAa/7E,OAAOuwB,MAAQ,SAAUmP,GACxC,IAAInP,EAAO,GACX,IAAK,IAAI1gB,KAAO6vB,EAAKnP,EAAK1c,KAAKhE,GAC/B,OAAO0gB,CACT,EAGA/yB,EAAOR,QAAUuoF,EACjB,IAAIF,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OACvB,EAAQ,MAAR,CAAoBC,EAAQF,GAI1B,IADA,IAAI90D,EAAOwrD,EAAWuJ,EAAS/tE,WACtB5S,EAAI,EAAGA,EAAI4rB,EAAK7uB,OAAQiD,IAAK,CACpC,IAAI0rB,EAASE,EAAK5rB,GACb4gF,EAAOhuE,UAAU8Y,KAASk1D,EAAOhuE,UAAU8Y,GAAUi1D,EAAS/tE,UAAU8Y,GAC/E,CAEF,SAASk1D,EAAOv0E,GACd,KAAMzQ,gBAAgBglF,GAAS,OAAO,IAAIA,EAAOv0E,GACjDq0E,EAASx/E,KAAKtF,KAAMyQ,GACpBs0E,EAASz/E,KAAKtF,KAAMyQ,GACpBzQ,KAAK6mF,eAAgB,EACjBp2E,KACuB,IAArBA,EAAQi1E,WAAoB1lF,KAAK0lF,UAAW,IACvB,IAArBj1E,EAAQ6uB,WAAoBt/B,KAAKs/B,UAAW,IAClB,IAA1B7uB,EAAQo2E,gBACV7mF,KAAK6mF,eAAgB,EACrB7mF,KAAKmsC,KAAK,MAAO05C,IAGvB,CA8BA,SAASA,IAEH7lF,KAAK8mF,eAAeC,OAIxBC,EAAQ/oD,SAASgpD,EAASjnF,KAC5B,CACA,SAASinF,EAAQ/pF,GACfA,EAAKi2C,KACP,CAvCA1zC,OAAOoX,eAAemuE,EAAOhuE,UAAW,wBAAyB,CAI/DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,eAAeI,aAC7B,IAEFznF,OAAOoX,eAAemuE,EAAOhuE,UAAW,iBAAkB,CAIxDF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,gBAAkB9mF,KAAK8mF,eAAeK,WACpD,IAEF1nF,OAAOoX,eAAemuE,EAAOhuE,UAAW,iBAAkB,CAIxDF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,eAAe3lF,MAC7B,IAeF1B,OAAOoX,eAAemuE,EAAOhuE,UAAW,YAAa,CAInDF,YAAY,EACZC,IAAK,WACH,YAA4BpP,IAAxB3H,KAAKonF,qBAAwDz/E,IAAxB3H,KAAK8mF,gBAGvC9mF,KAAKonF,eAAe56E,WAAaxM,KAAK8mF,eAAet6E,SAC9D,EACAmQ,IAAK,SAAarO,QAGY3G,IAAxB3H,KAAKonF,qBAAwDz/E,IAAxB3H,KAAK8mF,iBAM9C9mF,KAAKonF,eAAe56E,UAAY8B,EAChCtO,KAAK8mF,eAAet6E,UAAY8B,EAClC,kCCjGFrR,EAAOR,QAAUyoF,EACjB,IAAID,EAAY,EAAQ,OAExB,SAASC,EAAYz0E,GACnB,KAAMzQ,gBAAgBklF,GAAc,OAAO,IAAIA,EAAYz0E,GAC3Dw0E,EAAU3/E,KAAKtF,KAAMyQ,EACvB,CAJA,EAAQ,MAAR,CAAoBy0E,EAAaD,GAKjCC,EAAYluE,UAAUqwE,WAAa,SAAU7lD,EAAO8lD,EAAU1vC,GAC5DA,EAAG,KAAMpW,EACX,oCCVIwjD,aAHJ/nF,EAAOR,QAAUqoF,EAMjBA,EAASyC,cAAgBA,EAGhB,sBAAT,IAqBI/kE,EApBAglE,EAAkB,SAAyBnL,EAAS99E,GACtD,OAAO89E,EAAQr3E,UAAUzG,GAAM4C,MACjC,EAIIwjF,EAAS,EAAQ,OAGjB8C,EAAS,gBACTC,QAAmC,IAAX,EAAAvjF,EAAyB,EAAAA,EAA2B,oBAAXR,OAAyBA,OAAyB,oBAATzG,KAAuBA,KAAO,CAAC,GAAG2iF,YAAc,WAAa,EASvK8H,EAAY,EAAQ,OAGtBnlE,EADEmlE,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,WAAkB,EAI5B,IAWIC,EACAC,EACAxvD,EAbAyvD,EAAa,EAAQ,MACrBC,EAAc,EAAQ,OAExBC,EADa,EAAQ,OACOA,iBAC1BC,EAAiB,WACnBC,EAAuBD,EAAeC,qBACtCC,EAA4BF,EAAeE,0BAC3CC,EAA6BH,EAAeG,2BAC5CC,EAAqCJ,EAAeI,mCAMtD,EAAQ,MAAR,CAAoBxD,EAAUH,GAC9B,IAAI4D,EAAiBP,EAAYO,eAC7BC,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAY1D,SAASjB,EAAc92E,EAASg4E,EAAQC,GACtC1D,EAASA,GAAU,EAAQ,OAC3Bv0E,EAAUA,GAAW,CAAC,EAOE,kBAAbi4E,IAAwBA,EAAWD,aAAkBzD,GAIhEhlF,KAAK2oF,aAAel4E,EAAQk4E,WACxBD,IAAU1oF,KAAK2oF,WAAa3oF,KAAK2oF,cAAgBl4E,EAAQm4E,oBAI7D5oF,KAAKknF,cAAgBe,EAAiBjoF,KAAMyQ,EAAS,wBAAyBi4E,GAK9E1oF,KAAK2vC,OAAS,IAAIo4C,EAClB/nF,KAAKmB,OAAS,EACdnB,KAAK6oF,MAAQ,KACb7oF,KAAK8oF,WAAa,EAClB9oF,KAAK+oF,QAAU,KACf/oF,KAAK+mF,OAAQ,EACb/mF,KAAKgpF,YAAa,EAClBhpF,KAAKipF,SAAU,EAMfjpF,KAAKkpF,MAAO,EAIZlpF,KAAKmpF,cAAe,EACpBnpF,KAAKopF,iBAAkB,EACvBppF,KAAKqpF,mBAAoB,EACzBrpF,KAAKspF,iBAAkB,EACvBtpF,KAAKupF,QAAS,EAGdvpF,KAAKwpF,WAAkC,IAAtB/4E,EAAQ+4E,UAGzBxpF,KAAKypF,cAAgBh5E,EAAQg5E,YAG7BzpF,KAAKwM,WAAY,EAKjBxM,KAAK0pF,gBAAkBj5E,EAAQi5E,iBAAmB,OAGlD1pF,KAAK2pF,WAAa,EAGlB3pF,KAAK4pF,aAAc,EACnB5pF,KAAK6pF,QAAU,KACf7pF,KAAKsnF,SAAW,KACZ72E,EAAQ62E,WACLO,IAAeA,EAAgB,YACpC7nF,KAAK6pF,QAAU,IAAIhC,EAAcp3E,EAAQ62E,UACzCtnF,KAAKsnF,SAAW72E,EAAQ62E,SAE5B,CACA,SAASxC,EAASr0E,GAEhB,GADAu0E,EAASA,GAAU,EAAQ,SACrBhlF,gBAAgB8kF,GAAW,OAAO,IAAIA,EAASr0E,GAIrD,IAAIi4E,EAAW1oF,gBAAgBglF,EAC/BhlF,KAAKonF,eAAiB,IAAIG,EAAc92E,EAASzQ,KAAM0oF,GAGvD1oF,KAAK0lF,UAAW,EACZj1E,IAC0B,mBAAjBA,EAAQq5E,OAAqB9pF,KAAK+pF,MAAQt5E,EAAQq5E,MAC9B,mBAApBr5E,EAAQzE,UAAwBhM,KAAKgqF,SAAWv5E,EAAQzE,UAErE24E,EAAOr/E,KAAKtF,KACd,CAwDA,SAASiqF,EAAiBxB,EAAQjnD,EAAO8lD,EAAU4C,EAAYC,GAC7D3nE,EAAM,mBAAoBgf,GAC1B,IAKM67C,EALF/mD,EAAQmyD,EAAOrB,eACnB,GAAc,OAAV5lD,EACFlL,EAAM2yD,SAAU,EAuNpB,SAAoBR,EAAQnyD,GAE1B,GADA9T,EAAM,eACF8T,EAAMywD,MAAV,CACA,GAAIzwD,EAAMuzD,QAAS,CACjB,IAAIroD,EAAQlL,EAAMuzD,QAAQ12C,MACtB3R,GAASA,EAAMrgC,SACjBm1B,EAAMqZ,OAAOr8B,KAAKkuB,GAClBlL,EAAMn1B,QAAUm1B,EAAMqyD,WAAa,EAAInnD,EAAMrgC,OAEjD,CACAm1B,EAAMywD,OAAQ,EACVzwD,EAAM4yD,KAIRkB,EAAa3B,IAGbnyD,EAAM6yD,cAAe,EAChB7yD,EAAM8yD,kBACT9yD,EAAM8yD,iBAAkB,EACxBiB,EAAc5B,IAnBK,CAsBzB,CA9OI6B,CAAW7B,EAAQnyD,QAInB,GADK6zD,IAAgB9M,EA6CzB,SAAsB/mD,EAAOkL,GAC3B,IAAI67C,EAjPiBl+C,EAqPrB,OArPqBA,EAkPFqC,EAjPZimD,EAAO9vB,SAASx4B,IAAQA,aAAeuoD,GAiPA,iBAAVlmD,QAAgC75B,IAAV65B,GAAwBlL,EAAMqyD,aACtFtL,EAAK,IAAI8K,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAe3mD,IAEtE67C,CACT,CAnD8BkN,CAAaj0D,EAAOkL,IAC1C67C,EACFkL,EAAeE,EAAQpL,QAClB,GAAI/mD,EAAMqyD,YAAcnnD,GAASA,EAAMrgC,OAAS,EAIrD,GAHqB,iBAAVqgC,GAAuBlL,EAAMqyD,YAAclpF,OAAO82D,eAAe/0B,KAAWimD,EAAOzwE,YAC5FwqB,EA3MR,SAA6BA,GAC3B,OAAOimD,EAAOnvD,KAAKkJ,EACrB,CAyMgBgpD,CAAoBhpD,IAE1B0oD,EACE5zD,EAAM0yD,WAAYT,EAAeE,EAAQ,IAAIH,GAA2CmC,EAAShC,EAAQnyD,EAAOkL,GAAO,QACtH,GAAIlL,EAAMywD,MACfwB,EAAeE,EAAQ,IAAIL,OACtB,IAAI9xD,EAAM9pB,UACf,OAAO,EAEP8pB,EAAM2yD,SAAU,EACZ3yD,EAAMuzD,UAAYvC,GACpB9lD,EAAQlL,EAAMuzD,QAAQrE,MAAMhkD,GACxBlL,EAAMqyD,YAA+B,IAAjBnnD,EAAMrgC,OAAcspF,EAAShC,EAAQnyD,EAAOkL,GAAO,GAAYkpD,EAAcjC,EAAQnyD,IAE7Gm0D,EAAShC,EAAQnyD,EAAOkL,GAAO,EAEnC,MACU0oD,IACV5zD,EAAM2yD,SAAU,EAChByB,EAAcjC,EAAQnyD,IAO1B,OAAQA,EAAMywD,QAAUzwD,EAAMn1B,OAASm1B,EAAM4wD,eAAkC,IAAjB5wD,EAAMn1B,OACtE,CACA,SAASspF,EAAShC,EAAQnyD,EAAOkL,EAAO0oD,GAClC5zD,EAAMyyD,SAA4B,IAAjBzyD,EAAMn1B,SAAiBm1B,EAAM4yD,MAChD5yD,EAAMqzD,WAAa,EACnBlB,EAAOx9D,KAAK,OAAQuW,KAGpBlL,EAAMn1B,QAAUm1B,EAAMqyD,WAAa,EAAInnD,EAAMrgC,OACzC+oF,EAAY5zD,EAAMqZ,OAAOzW,QAAQsI,GAAYlL,EAAMqZ,OAAOr8B,KAAKkuB,GAC/DlL,EAAM6yD,cAAciB,EAAa3B,IAEvCiC,EAAcjC,EAAQnyD,EACxB,CA3GA72B,OAAOoX,eAAeiuE,EAAS9tE,UAAW,YAAa,CAIrDF,YAAY,EACZC,IAAK,WACH,YAA4BpP,IAAxB3H,KAAKonF,gBAGFpnF,KAAKonF,eAAe56E,SAC7B,EACAmQ,IAAK,SAAarO,GAGXtO,KAAKonF,iBAMVpnF,KAAKonF,eAAe56E,UAAY8B,EAClC,IAEFw2E,EAAS9tE,UAAUhL,QAAUg8E,EAAYh8E,QACzC84E,EAAS9tE,UAAU2zE,WAAa3C,EAAY4C,UAC5C9F,EAAS9tE,UAAUgzE,SAAW,SAAUtuB,EAAK9jB,GAC3CA,EAAG8jB,EACL,EAMAopB,EAAS9tE,UAAU1D,KAAO,SAAUkuB,EAAO8lD,GACzC,IACI6C,EADA7zD,EAAQt2B,KAAKonF,eAcjB,OAZK9wD,EAAMqyD,WAUTwB,GAAiB,EATI,iBAAV3oD,KACT8lD,EAAWA,GAAYhxD,EAAMozD,mBACZpzD,EAAMgxD,WACrB9lD,EAAQimD,EAAOnvD,KAAKkJ,EAAO8lD,GAC3BA,EAAW,IAEb6C,GAAiB,GAKdF,EAAiBjqF,KAAMwhC,EAAO8lD,GAAU,EAAO6C,EACxD,EAGArF,EAAS9tE,UAAUkiB,QAAU,SAAUsI,GACrC,OAAOyoD,EAAiBjqF,KAAMwhC,EAAO,MAAM,GAAM,EACnD,EA6DAsjD,EAAS9tE,UAAU6zE,SAAW,WAC5B,OAAuC,IAAhC7qF,KAAKonF,eAAe2B,OAC7B,EAGAjE,EAAS9tE,UAAU8zE,YAAc,SAAUC,GACpClD,IAAeA,EAAgB,YACpC,IAAIgC,EAAU,IAAIhC,EAAckD,GAChC/qF,KAAKonF,eAAeyC,QAAUA,EAE9B7pF,KAAKonF,eAAeE,SAAWtnF,KAAKonF,eAAeyC,QAAQvC,SAK3D,IAFA,IAAIvpF,EAAIiC,KAAKonF,eAAez3C,OAAOz6B,KAC/B81E,EAAU,GACD,OAANjtF,GACLitF,GAAWnB,EAAQrE,MAAMznF,EAAE+B,MAC3B/B,EAAIA,EAAE4O,KAKR,OAHA3M,KAAKonF,eAAez3C,OAAO3mC,QACX,KAAZgiF,GAAgBhrF,KAAKonF,eAAez3C,OAAOr8B,KAAK03E,GACpDhrF,KAAKonF,eAAejmF,OAAS6pF,EAAQ7pF,OAC9BnB,IACT,EAGA,IAAIirF,EAAU,WAqBd,SAASC,EAAcztF,EAAG64B,GACxB,OAAI74B,GAAK,GAAsB,IAAjB64B,EAAMn1B,QAAgBm1B,EAAMywD,MAAc,EACpDzwD,EAAMqyD,WAAmB,EACzBlrF,GAAMA,EAEJ64B,EAAMyyD,SAAWzyD,EAAMn1B,OAAem1B,EAAMqZ,OAAOz6B,KAAKpV,KAAKqB,OAAmBm1B,EAAMn1B,QAGxF1D,EAAI64B,EAAM4wD,gBAAe5wD,EAAM4wD,cA5BrC,SAAiCzpF,GAe/B,OAdIA,GAAKwtF,EAEPxtF,EAAIwtF,GAIJxtF,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAEKA,CACT,CAYqD0tF,CAAwB1tF,IACvEA,GAAK64B,EAAMn1B,OAAe1D,EAEzB64B,EAAMywD,MAIJzwD,EAAMn1B,QAHXm1B,EAAM6yD,cAAe,EACd,GAGX,CA6HA,SAASiB,EAAa3B,GACpB,IAAInyD,EAAQmyD,EAAOrB,eACnB5kE,EAAM,eAAgB8T,EAAM6yD,aAAc7yD,EAAM8yD,iBAChD9yD,EAAM6yD,cAAe,EAChB7yD,EAAM8yD,kBACT5mE,EAAM,eAAgB8T,EAAMyyD,SAC5BzyD,EAAM8yD,iBAAkB,EACxBpC,EAAQ/oD,SAASosD,EAAe5B,GAEpC,CACA,SAAS4B,EAAc5B,GACrB,IAAInyD,EAAQmyD,EAAOrB,eACnB5kE,EAAM,gBAAiB8T,EAAM9pB,UAAW8pB,EAAMn1B,OAAQm1B,EAAMywD,OACvDzwD,EAAM9pB,YAAc8pB,EAAMn1B,SAAUm1B,EAAMywD,QAC7C0B,EAAOx9D,KAAK,YACZqL,EAAM8yD,iBAAkB,GAS1B9yD,EAAM6yD,cAAgB7yD,EAAMyyD,UAAYzyD,EAAMywD,OAASzwD,EAAMn1B,QAAUm1B,EAAM4wD,cAC7EkE,EAAK3C,EACP,CAQA,SAASiC,EAAcjC,EAAQnyD,GACxBA,EAAMszD,cACTtzD,EAAMszD,aAAc,EACpB5C,EAAQ/oD,SAASotD,EAAgB5C,EAAQnyD,GAE7C,CACA,SAAS+0D,EAAe5C,EAAQnyD,GAwB9B,MAAQA,EAAM2yD,UAAY3yD,EAAMywD,QAAUzwD,EAAMn1B,OAASm1B,EAAM4wD,eAAiB5wD,EAAMyyD,SAA4B,IAAjBzyD,EAAMn1B,SAAe,CACpH,IAAIimE,EAAM9wC,EAAMn1B,OAGhB,GAFAqhB,EAAM,wBACNimE,EAAOqB,KAAK,GACR1iB,IAAQ9wC,EAAMn1B,OAEhB,KACJ,CACAm1B,EAAMszD,aAAc,CACtB,CAgPA,SAAS0B,EAAwBpuF,GAC/B,IAAIo5B,EAAQp5B,EAAKkqF,eACjB9wD,EAAM+yD,kBAAoBnsF,EAAK+/E,cAAc,YAAc,EACvD3mD,EAAMgzD,kBAAoBhzD,EAAMizD,OAGlCjzD,EAAMyyD,SAAU,EAGP7rF,EAAK+/E,cAAc,QAAU,GACtC//E,EAAKyoF,QAET,CACA,SAAS4F,EAAiBruF,GACxBslB,EAAM,4BACNtlB,EAAK4sF,KAAK,EACZ,CAuBA,SAAS0B,EAAQ/C,EAAQnyD,GACvB9T,EAAM,SAAU8T,EAAM2yD,SACjB3yD,EAAM2yD,SACTR,EAAOqB,KAAK,GAEdxzD,EAAMgzD,iBAAkB,EACxBb,EAAOx9D,KAAK,UACZmgE,EAAK3C,GACDnyD,EAAMyyD,UAAYzyD,EAAM2yD,SAASR,EAAOqB,KAAK,EACnD,CAWA,SAASsB,EAAK3C,GACZ,IAAInyD,EAAQmyD,EAAOrB,eAEnB,IADA5kE,EAAM,OAAQ8T,EAAMyyD,SACbzyD,EAAMyyD,SAA6B,OAAlBN,EAAOqB,SACjC,CAmHA,SAAS2B,EAAShuF,EAAG64B,GAEnB,OAAqB,IAAjBA,EAAMn1B,OAAqB,MAE3Bm1B,EAAMqyD,WAAYrqD,EAAMhI,EAAMqZ,OAAO4M,SAAkB9+C,GAAKA,GAAK64B,EAAMn1B,QAEtDm9B,EAAfhI,EAAMuzD,QAAevzD,EAAMqZ,OAAO7yC,KAAK,IAAqC,IAAxBw5B,EAAMqZ,OAAOxuC,OAAoBm1B,EAAMqZ,OAAO0yC,QAAmB/rD,EAAMqZ,OAAOxvC,OAAOm2B,EAAMn1B,QACnJm1B,EAAMqZ,OAAO3mC,SAGbs1B,EAAMhI,EAAMqZ,OAAO+7C,QAAQjuF,EAAG64B,EAAMuzD,SAE/BvrD,GATP,IAAIA,CAUN,CACA,SAASqtD,EAAYlD,GACnB,IAAInyD,EAAQmyD,EAAOrB,eACnB5kE,EAAM,cAAe8T,EAAM0yD,YACtB1yD,EAAM0yD,aACT1yD,EAAMywD,OAAQ,EACdC,EAAQ/oD,SAAS2tD,EAAet1D,EAAOmyD,GAE3C,CACA,SAASmD,EAAct1D,EAAOmyD,GAI5B,GAHAjmE,EAAM,gBAAiB8T,EAAM0yD,WAAY1yD,EAAMn1B,SAG1Cm1B,EAAM0yD,YAA+B,IAAjB1yD,EAAMn1B,SAC7Bm1B,EAAM0yD,YAAa,EACnBP,EAAO/C,UAAW,EAClB+C,EAAOx9D,KAAK,OACRqL,EAAMmzD,aAAa,CAGrB,IAAIoC,EAASpD,EAAO3B,iBACf+E,GAAUA,EAAOpC,aAAeoC,EAAO1G,WAC1CsD,EAAOz8E,SAEX,CAEJ,CASA,SAASjN,EAAQ+sF,EAAI/mF,GACnB,IAAK,IAAIvH,EAAI,EAAGI,EAAIkuF,EAAG3qF,OAAQ3D,EAAII,EAAGJ,IACpC,GAAIsuF,EAAGtuF,KAAOuH,EAAG,OAAOvH,EAE1B,OAAQ,CACV,CA1pBAsnF,EAAS9tE,UAAU8yE,KAAO,SAAUrsF,GAClC+kB,EAAM,OAAQ/kB,GACdA,EAAI6rC,SAAS7rC,EAAG,IAChB,IAAI64B,EAAQt2B,KAAKonF,eACb2E,EAAQtuF,EAMZ,GALU,IAANA,IAAS64B,EAAM8yD,iBAAkB,GAK3B,IAAN3rF,GAAW64B,EAAM6yD,gBAA0C,IAAxB7yD,EAAM4wD,cAAsB5wD,EAAMn1B,QAAUm1B,EAAM4wD,cAAgB5wD,EAAMn1B,OAAS,IAAMm1B,EAAMywD,OAGlI,OAFAvkE,EAAM,qBAAsB8T,EAAMn1B,OAAQm1B,EAAMywD,OAC3B,IAAjBzwD,EAAMn1B,QAAgBm1B,EAAMywD,MAAO4E,EAAY3rF,MAAWoqF,EAAapqF,MACpE,KAKT,GAAU,KAHVvC,EAAIytF,EAAcztF,EAAG64B,KAGNA,EAAMywD,MAEnB,OADqB,IAAjBzwD,EAAMn1B,QAAcwqF,EAAY3rF,MAC7B,KA0BT,IA2BIs+B,EA3BA0tD,EAAS11D,EAAM6yD,aA6CnB,OA5CA3mE,EAAM,gBAAiBwpE,IAGF,IAAjB11D,EAAMn1B,QAAgBm1B,EAAMn1B,OAAS1D,EAAI64B,EAAM4wD,gBAEjD1kE,EAAM,6BADNwpE,GAAS,GAMP11D,EAAMywD,OAASzwD,EAAM2yD,QAEvBzmE,EAAM,mBADNwpE,GAAS,GAEAA,IACTxpE,EAAM,WACN8T,EAAM2yD,SAAU,EAChB3yD,EAAM4yD,MAAO,EAEQ,IAAjB5yD,EAAMn1B,SAAcm1B,EAAM6yD,cAAe,GAE7CnpF,KAAK+pF,MAAMzzD,EAAM4wD,eACjB5wD,EAAM4yD,MAAO,EAGR5yD,EAAM2yD,UAASxrF,EAAIytF,EAAca,EAAOz1D,KAInC,QADDgI,EAAP7gC,EAAI,EAASguF,EAAShuF,EAAG64B,GAAkB,OAE7CA,EAAM6yD,aAAe7yD,EAAMn1B,QAAUm1B,EAAM4wD,cAC3CzpF,EAAI,IAEJ64B,EAAMn1B,QAAU1D,EAChB64B,EAAMqzD,WAAa,GAEA,IAAjBrzD,EAAMn1B,SAGHm1B,EAAMywD,QAAOzwD,EAAM6yD,cAAe,GAGnC4C,IAAUtuF,GAAK64B,EAAMywD,OAAO4E,EAAY3rF,OAElC,OAARs+B,GAAct+B,KAAKirB,KAAK,OAAQqT,GAC7BA,CACT,EA6GAwmD,EAAS9tE,UAAU+yE,MAAQ,SAAUtsF,GACnC8qF,EAAevoF,KAAM,IAAIqoF,EAA2B,WACtD,EACAvD,EAAS9tE,UAAUquE,KAAO,SAAUC,EAAM2G,GACxC,IAAI3nC,EAAMtkD,KACNs2B,EAAQt2B,KAAKonF,eACjB,OAAQ9wD,EAAMwyD,YACZ,KAAK,EACHxyD,EAAMuyD,MAAQvD,EACd,MACF,KAAK,EACHhvD,EAAMuyD,MAAQ,CAACvyD,EAAMuyD,MAAOvD,GAC5B,MACF,QACEhvD,EAAMuyD,MAAMv1E,KAAKgyE,GAGrBhvD,EAAMwyD,YAAc,EACpBtmE,EAAM,wBAAyB8T,EAAMwyD,WAAYmD,GACjD,IACIC,EADUD,IAA6B,IAAjBA,EAAS94C,KAAkBmyC,IAAS0B,EAAQmF,QAAU7G,IAAS0B,EAAQoF,OACrEC,EAARxG,EAYpB,SAASA,IACPrjE,EAAM,SACN8iE,EAAKnyC,KACP,CAdI7c,EAAM0yD,WAAYhC,EAAQ/oD,SAASiuD,GAAY5nC,EAAInY,KAAK,MAAO+/C,GACnE5G,EAAKx/E,GAAG,UACR,SAASwmF,EAAS5G,EAAU6G,GAC1B/pE,EAAM,YACFkjE,IAAaphC,GACXioC,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EAkB5BhqE,EAAM,WAEN8iE,EAAK9I,eAAe,QAASsJ,GAC7BR,EAAK9I,eAAe,SAAUiQ,GAC9BnH,EAAK9I,eAAe,QAASiJ,GAC7BH,EAAK9I,eAAe,QAAS1qD,GAC7BwzD,EAAK9I,eAAe,SAAU8P,GAC9BhoC,EAAIk4B,eAAe,MAAOqJ,GAC1BvhC,EAAIk4B,eAAe,MAAO6P,GAC1B/nC,EAAIk4B,eAAe,OAAQ+I,GAC3BmH,GAAY,GAORp2D,EAAMqzD,YAAgBrE,EAAKwB,iBAAkBxB,EAAKwB,eAAe6F,WAAYlH,IA/BnF,IAUA,IAAIA,EAgFN,SAAqBnhC,GACnB,OAAO,WACL,IAAIhuB,EAAQguB,EAAI8iC,eAChB5kE,EAAM,cAAe8T,EAAMqzD,YACvBrzD,EAAMqzD,YAAYrzD,EAAMqzD,aACH,IAArBrzD,EAAMqzD,YAAoBnC,EAAgBljC,EAAK,UACjDhuB,EAAMyyD,SAAU,EAChBqC,EAAK9mC,GAET,CACF,CA1FgBsoC,CAAYtoC,GAC1BghC,EAAKx/E,GAAG,QAAS2/E,GACjB,IAAIiH,GAAY,EAsBhB,SAASnH,EAAO/jD,GACdhf,EAAM,UACN,IAAI8b,EAAMgnD,EAAKE,MAAMhkD,GACrBhf,EAAM,aAAc8b,IACR,IAARA,KAKwB,IAArBhI,EAAMwyD,YAAoBxyD,EAAMuyD,QAAUvD,GAAQhvD,EAAMwyD,WAAa,IAAqC,IAAhC/pF,EAAQu3B,EAAMuyD,MAAOvD,MAAkBoH,IACpHlqE,EAAM,8BAA+B8T,EAAMqzD,YAC3CrzD,EAAMqzD,cAERrlC,EAAIx7C,QAER,CAIA,SAASgpB,EAAQurD,GACf76D,EAAM,UAAW66D,GACjBgP,IACA/G,EAAK9I,eAAe,QAAS1qD,GACU,IAAnC01D,EAAgBlC,EAAM,UAAgBiD,EAAejD,EAAMjI,EACjE,CAMA,SAASyI,IACPR,EAAK9I,eAAe,SAAUiQ,GAC9BJ,GACF,CAEA,SAASI,IACPjqE,EAAM,YACN8iE,EAAK9I,eAAe,QAASsJ,GAC7BuG,GACF,CAEA,SAASA,IACP7pE,EAAM,UACN8hC,EAAI+nC,OAAO/G,EACb,CAUA,OAvDAhhC,EAAIx+C,GAAG,OAAQy/E,GAniBjB,SAAyBlJ,EAAS1jE,EAAOpJ,GAGvC,GAAuC,mBAA5B8sE,EAAQ4B,gBAAgC,OAAO5B,EAAQ4B,gBAAgBtlE,EAAOpJ,GAMpF8sE,EAAQX,SAAYW,EAAQX,QAAQ/iE,GAAuCnO,MAAM6I,QAAQgpE,EAAQX,QAAQ/iE,IAAS0jE,EAAQX,QAAQ/iE,GAAOugB,QAAQ3pB,GAAS8sE,EAAQX,QAAQ/iE,GAAS,CAACpJ,EAAI8sE,EAAQX,QAAQ/iE,IAA5J0jE,EAAQv2E,GAAG6S,EAAOpJ,EACrE,CAqjBE0uE,CAAgBqH,EAAM,QAASxzD,GAO/BwzD,EAAKn5C,KAAK,QAAS25C,GAMnBR,EAAKn5C,KAAK,SAAUsgD,GAOpBnH,EAAKr6D,KAAK,OAAQq5B,GAGbhuB,EAAMyyD,UACTvmE,EAAM,eACN8hC,EAAIqhC,UAECL,CACT,EAYAR,EAAS9tE,UAAUq1E,OAAS,SAAU/G,GACpC,IAAIhvD,EAAQt2B,KAAKonF,eACbmF,EAAa,CACfC,YAAY,GAId,GAAyB,IAArBl2D,EAAMwyD,WAAkB,OAAO9oF,KAGnC,GAAyB,IAArBs2B,EAAMwyD,WAER,OAAIxD,GAAQA,IAAShvD,EAAMuyD,QACtBvD,IAAMA,EAAOhvD,EAAMuyD,OAGxBvyD,EAAMuyD,MAAQ,KACdvyD,EAAMwyD,WAAa,EACnBxyD,EAAMyyD,SAAU,EACZzD,GAAMA,EAAKr6D,KAAK,SAAUjrB,KAAMusF,IAPKvsF,KAa3C,IAAKslF,EAAM,CAET,IAAIuH,EAAQv2D,EAAMuyD,MACdzhB,EAAM9wC,EAAMwyD,WAChBxyD,EAAMuyD,MAAQ,KACdvyD,EAAMwyD,WAAa,EACnBxyD,EAAMyyD,SAAU,EAChB,IAAK,IAAIvrF,EAAI,EAAGA,EAAI4pE,EAAK5pE,IAAKqvF,EAAMrvF,GAAGytB,KAAK,SAAUjrB,KAAM,CAC1DwsF,YAAY,IAEd,OAAOxsF,IACT,CAGA,IAAI8lB,EAAQ/mB,EAAQu3B,EAAMuyD,MAAOvD,GACjC,OAAe,IAAXx/D,IACJwQ,EAAMuyD,MAAM/zE,OAAOgR,EAAO,GAC1BwQ,EAAMwyD,YAAc,EACK,IAArBxyD,EAAMwyD,aAAkBxyD,EAAMuyD,MAAQvyD,EAAMuyD,MAAM,IACtDvD,EAAKr6D,KAAK,SAAUjrB,KAAMusF,IAJDvsF,IAM3B,EAIA8kF,EAAS9tE,UAAUlR,GAAK,SAAUgnF,EAAIv9E,GACpC,IAAIssD,EAAM8oB,EAAO3tE,UAAUlR,GAAGR,KAAKtF,KAAM8sF,EAAIv9E,GACzC+mB,EAAQt2B,KAAKonF,eAqBjB,MApBW,SAAP0F,GAGFx2D,EAAM+yD,kBAAoBrpF,KAAKi9E,cAAc,YAAc,GAGrC,IAAlB3mD,EAAMyyD,SAAmB/oF,KAAK2lF,UAClB,aAAPmH,IACJx2D,EAAM0yD,YAAe1yD,EAAM+yD,oBAC9B/yD,EAAM+yD,kBAAoB/yD,EAAM6yD,cAAe,EAC/C7yD,EAAMyyD,SAAU,EAChBzyD,EAAM8yD,iBAAkB,EACxB5mE,EAAM,cAAe8T,EAAMn1B,OAAQm1B,EAAM2yD,SACrC3yD,EAAMn1B,OACRipF,EAAapqF,MACHs2B,EAAM2yD,SAChBjC,EAAQ/oD,SAASstD,EAAkBvrF,QAIlC67D,CACT,EACAipB,EAAS9tE,UAAUgnE,YAAc8G,EAAS9tE,UAAUlR,GACpDg/E,EAAS9tE,UAAUwlE,eAAiB,SAAUsQ,EAAIv9E,GAChD,IAAIssD,EAAM8oB,EAAO3tE,UAAUwlE,eAAel3E,KAAKtF,KAAM8sF,EAAIv9E,GAUzD,MATW,aAAPu9E,GAOF9F,EAAQ/oD,SAASqtD,EAAyBtrF,MAErC67D,CACT,EACAipB,EAAS9tE,UAAUqnE,mBAAqB,SAAUyO,GAChD,IAAIjxB,EAAM8oB,EAAO3tE,UAAUqnE,mBAAmB1uE,MAAM3P,KAAMkB,WAU1D,MATW,aAAP4rF,QAA4BnlF,IAAPmlF,GAOvB9F,EAAQ/oD,SAASqtD,EAAyBtrF,MAErC67D,CACT,EAqBAipB,EAAS9tE,UAAU2uE,OAAS,WAC1B,IAAIrvD,EAAQt2B,KAAKonF,eAUjB,OATK9wD,EAAMyyD,UACTvmE,EAAM,UAIN8T,EAAMyyD,SAAWzyD,EAAM+yD,kBAM3B,SAAgBZ,EAAQnyD,GACjBA,EAAMgzD,kBACThzD,EAAMgzD,iBAAkB,EACxBtC,EAAQ/oD,SAASutD,EAAS/C,EAAQnyD,GAEtC,CAVIqvD,CAAO3lF,KAAMs2B,IAEfA,EAAMizD,QAAS,EACRvpF,IACT,EAiBA8kF,EAAS9tE,UAAUlO,MAAQ,WAQzB,OAPA0Z,EAAM,wBAAyBxiB,KAAKonF,eAAe2B,UACf,IAAhC/oF,KAAKonF,eAAe2B,UACtBvmE,EAAM,SACNxiB,KAAKonF,eAAe2B,SAAU,EAC9B/oF,KAAKirB,KAAK,UAEZjrB,KAAKonF,eAAemC,QAAS,EACtBvpF,IACT,EAUA8kF,EAAS9tE,UAAU+1E,KAAO,SAAUtE,GAClC,IAAIt+C,EAAQnqC,KACRs2B,EAAQt2B,KAAKonF,eACbmC,GAAS,EAwBb,IAAK,IAAI/rF,KAvBTirF,EAAO3iF,GAAG,OAAO,WAEf,GADA0c,EAAM,eACF8T,EAAMuzD,UAAYvzD,EAAMywD,MAAO,CACjC,IAAIvlD,EAAQlL,EAAMuzD,QAAQ12C,MACtB3R,GAASA,EAAMrgC,QAAQgpC,EAAM72B,KAAKkuB,EACxC,CACA2I,EAAM72B,KAAK,KACb,IACAm1E,EAAO3iF,GAAG,QAAQ,SAAU07B,GAC1Bhf,EAAM,gBACF8T,EAAMuzD,UAASroD,EAAQlL,EAAMuzD,QAAQrE,MAAMhkD,IAG3ClL,EAAMqyD,YAAc,MAACnnD,IAAyDlL,EAAMqyD,YAAgBnnD,GAAUA,EAAMrgC,UAC9GgpC,EAAM72B,KAAKkuB,KAEnB+nD,GAAS,EACTd,EAAO3/E,SAEX,IAIc2/E,OACI9gF,IAAZ3H,KAAKxC,IAAyC,mBAAdirF,EAAOjrF,KACzCwC,KAAKxC,GAAK,SAAoBsyB,GAC5B,OAAO,WACL,OAAO24D,EAAO34D,GAAQngB,MAAM84E,EAAQvnF,UACtC,CACF,CAJU,CAIR1D,IAKN,IAAK,IAAIC,EAAI,EAAGA,EAAI+qF,EAAarnF,OAAQ1D,IACvCgrF,EAAO3iF,GAAG0iF,EAAa/qF,GAAIuC,KAAKirB,KAAK7jB,KAAKpH,KAAMwoF,EAAa/qF,KAY/D,OAPAuC,KAAK+pF,MAAQ,SAAUtsF,GACrB+kB,EAAM,gBAAiB/kB,GACnB8rF,IACFA,GAAS,EACTd,EAAO9C,SAEX,EACO3lF,IACT,EACsB,mBAAXkX,SACT4tE,EAAS9tE,UAAUE,OAAO81E,eAAiB,WAIzC,YAH0CrlF,IAAtCmgF,IACFA,EAAoC,EAAQ,QAEvCA,EAAkC9nF,KAC3C,GAEFP,OAAOoX,eAAeiuE,EAAS9tE,UAAW,wBAAyB,CAIjEF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAKonF,eAAeF,aAC7B,IAEFznF,OAAOoX,eAAeiuE,EAAS9tE,UAAW,iBAAkB,CAI1DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAKonF,gBAAkBpnF,KAAKonF,eAAez3C,MACpD,IAEFlwC,OAAOoX,eAAeiuE,EAAS9tE,UAAW,kBAAmB,CAI3DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAKonF,eAAe2B,OAC7B,EACApsE,IAAK,SAAa2Z,GACZt2B,KAAKonF,iBACPpnF,KAAKonF,eAAe2B,QAAUzyD,EAElC,IAIFwuD,EAASmI,UAAYxB,EACrBhsF,OAAOoX,eAAeiuE,EAAS9tE,UAAW,iBAAkB,CAI1DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAKonF,eAAejmF,MAC7B,IA+CoB,mBAAX+V,SACT4tE,EAASxsD,KAAO,SAAUqiD,EAAUnpD,GAIlC,YAHa7pB,IAAT2wB,IACFA,EAAO,EAAQ,QAEVA,EAAKwsD,EAAUnK,EAAUnpD,EAClC,iCC17BFv0B,EAAOR,QAAUwoF,EACjB,IAAIiD,EAAiB,WACnBG,EAA6BH,EAAeG,2BAC5C6E,EAAwBhF,EAAegF,sBACvCC,EAAqCjF,EAAeiF,mCACpDC,EAA8BlF,EAAekF,4BAC3CpI,EAAS,EAAQ,OAErB,SAASqI,EAAehQ,EAAIv9E,GAC1B,IAAIwtF,EAAKttF,KAAKutF,gBACdD,EAAGE,cAAe,EAClB,IAAI51C,EAAK01C,EAAGG,QACZ,GAAW,OAAP71C,EACF,OAAO53C,KAAKirB,KAAK,QAAS,IAAIiiE,GAEhCI,EAAGI,WAAa,KAChBJ,EAAGG,QAAU,KACD,MAAR3tF,GAEFE,KAAKsT,KAAKxT,GACZ83C,EAAGylC,GACH,IAAIsQ,EAAK3tF,KAAKonF,eACduG,EAAG1E,SAAU,GACT0E,EAAGxE,cAAgBwE,EAAGxsF,OAASwsF,EAAGzG,gBACpClnF,KAAK+pF,MAAM4D,EAAGzG,cAElB,CACA,SAASjC,EAAUx0E,GACjB,KAAMzQ,gBAAgBilF,GAAY,OAAO,IAAIA,EAAUx0E,GACvDu0E,EAAO1/E,KAAKtF,KAAMyQ,GAClBzQ,KAAKutF,gBAAkB,CACrBF,eAAgBA,EAAejmF,KAAKpH,MACpC4tF,eAAe,EACfJ,cAAc,EACdC,QAAS,KACTC,WAAY,KACZG,cAAe,MAIjB7tF,KAAKonF,eAAe+B,cAAe,EAKnCnpF,KAAKonF,eAAe8B,MAAO,EACvBz4E,IAC+B,mBAAtBA,EAAQmlC,YAA0B51C,KAAKqnF,WAAa52E,EAAQmlC,WAC1C,mBAAlBnlC,EAAQ2qB,QAAsBp7B,KAAK8tF,OAASr9E,EAAQ2qB,QAIjEp7B,KAAK8F,GAAG,YAAaioF,EACvB,CACA,SAASA,IACP,IAAI5jD,EAAQnqC,KACe,mBAAhBA,KAAK8tF,QAA0B9tF,KAAKonF,eAAe56E,UAK5DurE,EAAK/3E,KAAM,KAAM,MAJjBA,KAAK8tF,QAAO,SAAUzQ,EAAIv9E,GACxBi4E,EAAK5tC,EAAOkzC,EAAIv9E,EAClB,GAIJ,CAiDA,SAASi4E,EAAK0Q,EAAQpL,EAAIv9E,GACxB,GAAIu9E,EAAI,OAAOoL,EAAOx9D,KAAK,QAASoyD,GAQpC,GAPY,MAARv9E,GAEF2oF,EAAOn1E,KAAKxT,GAKV2oF,EAAO3B,eAAe3lF,OAAQ,MAAM,IAAIisF,EAC5C,GAAI3E,EAAO8E,gBAAgBC,aAAc,MAAM,IAAIL,EACnD,OAAO1E,EAAOn1E,KAAK,KACrB,CArHA,EAAQ,MAAR,CAAoB2xE,EAAWD,GAyD/BC,EAAUjuE,UAAU1D,KAAO,SAAUkuB,EAAO8lD,GAE1C,OADAtnF,KAAKutF,gBAAgBK,eAAgB,EAC9B5I,EAAOhuE,UAAU1D,KAAKhO,KAAKtF,KAAMwhC,EAAO8lD,EACjD,EAYArC,EAAUjuE,UAAUqwE,WAAa,SAAU7lD,EAAO8lD,EAAU1vC,GAC1DA,EAAG,IAAIywC,EAA2B,gBACpC,EACApD,EAAUjuE,UAAUg3E,OAAS,SAAUxsD,EAAO8lD,EAAU1vC,GACtD,IAAI01C,EAAKttF,KAAKutF,gBAId,GAHAD,EAAGG,QAAU71C,EACb01C,EAAGI,WAAalsD,EAChB8rD,EAAGO,cAAgBvG,GACdgG,EAAGE,aAAc,CACpB,IAAIG,EAAK3tF,KAAKonF,gBACVkG,EAAGM,eAAiBD,EAAGxE,cAAgBwE,EAAGxsF,OAASwsF,EAAGzG,gBAAelnF,KAAK+pF,MAAM4D,EAAGzG,cACzF,CACF,EAKAjC,EAAUjuE,UAAU+yE,MAAQ,SAAUtsF,GACpC,IAAI6vF,EAAKttF,KAAKutF,gBACQ,OAAlBD,EAAGI,YAAwBJ,EAAGE,aAMhCF,EAAGM,eAAgB,GALnBN,EAAGE,cAAe,EAClBxtF,KAAKqnF,WAAWiG,EAAGI,WAAYJ,EAAGO,cAAeP,EAAGD,gBAMxD,EACApI,EAAUjuE,UAAUgzE,SAAW,SAAUtuB,EAAK9jB,GAC5CotC,EAAOhuE,UAAUgzE,SAAS1kF,KAAKtF,KAAM07D,GAAK,SAAUuyB,GAClDr2C,EAAGq2C,EACL,GACF,oCC9HIjJ,aAXJ,SAASkJ,EAAc53D,GACrB,IAAI6T,EAAQnqC,KACZA,KAAK2M,KAAO,KACZ3M,KAAKksC,MAAQ,KACblsC,KAAKmuF,OAAS,YA6iBhB,SAAwBC,EAAS93D,EAAOolC,GACtC,IAAIxvB,EAAQkiD,EAAQliD,MAEpB,IADAkiD,EAAQliD,MAAQ,KACTA,GAAO,CACZ,IAAI0L,EAAK1L,EAAMtQ,SACftF,EAAM+3D,YACNz2C,EAljBA02C,WAmjBApiD,EAAQA,EAAMv/B,IAChB,CAGA2pB,EAAMi4D,mBAAmB5hF,KAAOyhF,CAClC,CAxjBIE,CAAenkD,EAAO7T,EACxB,CACF,CAnBAr5B,EAAOR,QAAUsoF,EA0BjBA,EAASyJ,cAAgBA,EAGzB,IA+JIC,EA/JAC,EAAe,CACjBC,UAAW,EAAQ,QAKjBhK,EAAS,EAAQ,OAGjB8C,EAAS,gBACTC,QAAmC,IAAX,EAAAvjF,EAAyB,EAAAA,EAA2B,oBAAXR,OAAyBA,OAAyB,oBAATzG,KAAuBA,KAAO,CAAC,GAAG2iF,YAAc,WAAa,EAOvKmI,EAAc,EAAQ,OAExBC,EADa,EAAQ,OACOA,iBAC1BC,EAAiB,WACnBC,EAAuBD,EAAeC,qBACtCE,EAA6BH,EAAeG,2BAC5C6E,EAAwBhF,EAAegF,sBACvC0B,EAAyB1G,EAAe0G,uBACxCC,EAAuB3G,EAAe2G,qBACtCC,EAAyB5G,EAAe4G,uBACxCC,EAA6B7G,EAAe6G,2BAC5CC,EAAuB9G,EAAe8G,qBACpCzG,EAAiBP,EAAYO,eAEjC,SAAS0G,IAAO,CAChB,SAAST,EAAc/9E,EAASg4E,EAAQC,GACtC1D,EAASA,GAAU,EAAQ,OAC3Bv0E,EAAUA,GAAW,CAAC,EAOE,kBAAbi4E,IAAwBA,EAAWD,aAAkBzD,GAIhEhlF,KAAK2oF,aAAel4E,EAAQk4E,WACxBD,IAAU1oF,KAAK2oF,WAAa3oF,KAAK2oF,cAAgBl4E,EAAQy+E,oBAK7DlvF,KAAKknF,cAAgBe,EAAiBjoF,KAAMyQ,EAAS,wBAAyBi4E,GAG9E1oF,KAAKmvF,aAAc,EAGnBnvF,KAAK2sF,WAAY,EAEjB3sF,KAAKovF,QAAS,EAEdpvF,KAAK+mF,OAAQ,EAEb/mF,KAAKmlF,UAAW,EAGhBnlF,KAAKwM,WAAY,EAKjB,IAAI6iF,GAAqC,IAA1B5+E,EAAQ6+E,cACvBtvF,KAAKsvF,eAAiBD,EAKtBrvF,KAAK0pF,gBAAkBj5E,EAAQi5E,iBAAmB,OAKlD1pF,KAAKmB,OAAS,EAGdnB,KAAKuvF,SAAU,EAGfvvF,KAAKwvF,OAAS,EAMdxvF,KAAKkpF,MAAO,EAKZlpF,KAAKyvF,kBAAmB,EAGxBzvF,KAAK0vF,QAAU,SAAUrS,IAsQ3B,SAAiBoL,EAAQpL,GACvB,IAAI/mD,EAAQmyD,EAAO3B,eACfoC,EAAO5yD,EAAM4yD,KACbtxC,EAAKthB,EAAMm3D,QACf,GAAkB,mBAAP71C,EAAmB,MAAM,IAAIs1C,EAExC,GAZF,SAA4B52D,GAC1BA,EAAMi5D,SAAU,EAChBj5D,EAAMm3D,QAAU,KAChBn3D,EAAMn1B,QAAUm1B,EAAMq5D,SACtBr5D,EAAMq5D,SAAW,CACnB,CAMEC,CAAmBt5D,GACf+mD,GAlCN,SAAsBoL,EAAQnyD,EAAO4yD,EAAM7L,EAAIzlC,KAC3CthB,EAAM+3D,UACJnF,GAGFlC,EAAQ/oD,SAAS2Z,EAAIylC,GAGrB2J,EAAQ/oD,SAAS4xD,EAAapH,EAAQnyD,GACtCmyD,EAAO3B,eAAegJ,cAAe,EACrCvH,EAAeE,EAAQpL,KAIvBzlC,EAAGylC,GACHoL,EAAO3B,eAAegJ,cAAe,EACrCvH,EAAeE,EAAQpL,GAGvBwS,EAAYpH,EAAQnyD,GAExB,CAaUy5D,CAAatH,EAAQnyD,EAAO4yD,EAAM7L,EAAIzlC,OAAS,CAErD,IAAIutC,EAAW6K,EAAW15D,IAAUmyD,EAAOj8E,UACtC24E,GAAa7uD,EAAMk5D,QAAWl5D,EAAMm5D,mBAAoBn5D,EAAM25D,iBACjEC,EAAYzH,EAAQnyD,GAElB4yD,EACFlC,EAAQ/oD,SAASkyD,EAAY1H,EAAQnyD,EAAO6uD,EAAUvtC,GAEtDu4C,EAAW1H,EAAQnyD,EAAO6uD,EAAUvtC,EAExC,CACF,CAvRI83C,CAAQjH,EAAQpL,EAClB,EAGAr9E,KAAKytF,QAAU,KAGfztF,KAAK2vF,SAAW,EAChB3vF,KAAKiwF,gBAAkB,KACvBjwF,KAAKowF,oBAAsB,KAI3BpwF,KAAKquF,UAAY,EAIjBruF,KAAKqwF,aAAc,EAGnBrwF,KAAK8vF,cAAe,EAGpB9vF,KAAKwpF,WAAkC,IAAtB/4E,EAAQ+4E,UAGzBxpF,KAAKypF,cAAgBh5E,EAAQg5E,YAG7BzpF,KAAKswF,qBAAuB,EAI5BtwF,KAAKuuF,mBAAqB,IAAIL,EAAcluF,KAC9C,CAqCA,SAAS+kF,EAASt0E,GAahB,IAAIi4E,EAAW1oF,gBAZfglF,EAASA,GAAU,EAAQ,QAa3B,IAAK0D,IAAa+F,EAAgBnpF,KAAKy/E,EAAU/kF,MAAO,OAAO,IAAI+kF,EAASt0E,GAC5EzQ,KAAK8mF,eAAiB,IAAI0H,EAAc/9E,EAASzQ,KAAM0oF,GAGvD1oF,KAAKs/B,UAAW,EACZ7uB,IAC2B,mBAAlBA,EAAQ+0E,QAAsBxlF,KAAKguF,OAASv9E,EAAQ+0E,OACjC,mBAAnB/0E,EAAQ8/E,SAAuBvwF,KAAKwwF,QAAU//E,EAAQ8/E,QAClC,mBAApB9/E,EAAQzE,UAAwBhM,KAAKgqF,SAAWv5E,EAAQzE,SACtC,mBAAlByE,EAAQijD,QAAsB1zD,KAAKywF,OAAShgF,EAAQijD,QAEjEixB,EAAOr/E,KAAKtF,KACd,CAgIA,SAAS0wF,EAAQjI,EAAQnyD,EAAOi6D,EAAQnpB,EAAK5lC,EAAO8lD,EAAU1vC,GAC5DthB,EAAMq5D,SAAWvoB,EACjB9wC,EAAMm3D,QAAU71C,EAChBthB,EAAMi5D,SAAU,EAChBj5D,EAAM4yD,MAAO,EACT5yD,EAAM9pB,UAAW8pB,EAAMo5D,QAAQ,IAAIb,EAAqB,UAAmB0B,EAAQ9H,EAAO+H,QAAQhvD,EAAOlL,EAAMo5D,SAAcjH,EAAOuF,OAAOxsD,EAAO8lD,EAAUhxD,EAAMo5D,SACtKp5D,EAAM4yD,MAAO,CACf,CAgDA,SAASiH,EAAW1H,EAAQnyD,EAAO6uD,EAAUvtC,GACtCutC,GASP,SAAsBsD,EAAQnyD,GACP,IAAjBA,EAAMn1B,QAAgBm1B,EAAMq2D,YAC9Br2D,EAAMq2D,WAAY,EAClBlE,EAAOx9D,KAAK,SAEhB,CAdiB0lE,CAAalI,EAAQnyD,GACpCA,EAAM+3D,YACNz2C,IACAi4C,EAAYpH,EAAQnyD,EACtB,CAaA,SAAS45D,EAAYzH,EAAQnyD,GAC3BA,EAAMm5D,kBAAmB,EACzB,IAAIvjD,EAAQ5V,EAAM25D,gBAClB,GAAIxH,EAAO+H,SAAWtkD,GAASA,EAAMv/B,KAAM,CAEzC,IAAI/O,EAAI04B,EAAMg6D,qBACV3gD,EAAS,IAAInlC,MAAM5M,GACnBgzF,EAASt6D,EAAMi4D,mBACnBqC,EAAO1kD,MAAQA,EAGf,IAFA,IAAIwG,EAAQ,EACRm+C,GAAa,EACV3kD,GACLyD,EAAO+C,GAASxG,EACXA,EAAM4kD,QAAOD,GAAa,GAC/B3kD,EAAQA,EAAMv/B,KACd+lC,GAAS,EAEX/C,EAAOkhD,WAAaA,EACpBH,EAAQjI,EAAQnyD,GAAO,EAAMA,EAAMn1B,OAAQwuC,EAAQ,GAAIihD,EAAOzC,QAI9D73D,EAAM+3D,YACN/3D,EAAM85D,oBAAsB,KACxBQ,EAAOjkF,MACT2pB,EAAMi4D,mBAAqBqC,EAAOjkF,KAClCikF,EAAOjkF,KAAO,MAEd2pB,EAAMi4D,mBAAqB,IAAIL,EAAc53D,GAE/CA,EAAMg6D,qBAAuB,CAC/B,KAAO,CAEL,KAAOpkD,GAAO,CACZ,IAAI1K,EAAQ0K,EAAM1K,MACd8lD,EAAWp7C,EAAMo7C,SACjB1vC,EAAK1L,EAAMtQ,SASf,GAPA80D,EAAQjI,EAAQnyD,GAAO,EADbA,EAAMqyD,WAAa,EAAInnD,EAAMrgC,OACJqgC,EAAO8lD,EAAU1vC,GACpD1L,EAAQA,EAAMv/B,KACd2pB,EAAMg6D,uBAKFh6D,EAAMi5D,QACR,KAEJ,CACc,OAAVrjD,IAAgB5V,EAAM85D,oBAAsB,KAClD,CACA95D,EAAM25D,gBAAkB/jD,EACxB5V,EAAMm5D,kBAAmB,CAC3B,CAoCA,SAASO,EAAW15D,GAClB,OAAOA,EAAM84D,QAA2B,IAAjB94D,EAAMn1B,QAA0C,OAA1Bm1B,EAAM25D,kBAA6B35D,EAAM6uD,WAAa7uD,EAAMi5D,OAC3G,CACA,SAASwB,EAAUtI,EAAQnyD,GACzBmyD,EAAOgI,QAAO,SAAU/0B,GACtBplC,EAAM+3D,YACF3yB,GACF6sB,EAAeE,EAAQ/sB,GAEzBplC,EAAM+5D,aAAc,EACpB5H,EAAOx9D,KAAK,aACZ4kE,EAAYpH,EAAQnyD,EACtB,GACF,CAaA,SAASu5D,EAAYpH,EAAQnyD,GAC3B,IAAI06D,EAAOhB,EAAW15D,GACtB,GAAI06D,IAdN,SAAmBvI,EAAQnyD,GACpBA,EAAM+5D,aAAgB/5D,EAAM64D,cACF,mBAAlB1G,EAAOgI,QAA0Bn6D,EAAM9pB,WAKhD8pB,EAAM+5D,aAAc,EACpB5H,EAAOx9D,KAAK,eALZqL,EAAM+3D,YACN/3D,EAAM64D,aAAc,EACpBnI,EAAQ/oD,SAAS8yD,EAAWtI,EAAQnyD,IAM1C,CAIIy3D,CAAUtF,EAAQnyD,GACM,IAApBA,EAAM+3D,YACR/3D,EAAM6uD,UAAW,EACjBsD,EAAOx9D,KAAK,UACRqL,EAAMmzD,cAAa,CAGrB,IAAIwH,EAASxI,EAAOrB,iBACf6J,GAAUA,EAAOxH,aAAewH,EAAOjI,aAC1CP,EAAOz8E,SAEX,CAGJ,OAAOglF,CACT,CAxfA,EAAQ,MAAR,CAAoBjM,EAAUJ,GA4G9B6J,EAAcx3E,UAAUmwE,UAAY,WAGlC,IAFA,IAAI12C,EAAUzwC,KAAKiwF,gBACfiB,EAAM,GACHzgD,GACLygD,EAAI59E,KAAKm9B,GACTA,EAAUA,EAAQ9jC,KAEpB,OAAOukF,CACT,EACA,WACE,IACEzxF,OAAOoX,eAAe23E,EAAcx3E,UAAW,SAAU,CACvDD,IAAK23E,EAAaC,WAAU,WAC1B,OAAO3uF,KAAKmnF,WACd,GAAG,6EAAmF,YAE1F,CAAE,MAAOz/E,GAAI,CACd,CARD,GAasB,mBAAXwP,QAAyBA,OAAOi6E,aAAiE,mBAA3CpyC,SAAS/nC,UAAUE,OAAOi6E,cACzF1C,EAAkB1vC,SAAS/nC,UAAUE,OAAOi6E,aAC5C1xF,OAAOoX,eAAekuE,EAAU7tE,OAAOi6E,YAAa,CAClD7iF,MAAO,SAAe87B,GACpB,QAAIqkD,EAAgBnpF,KAAKtF,KAAMoqC,IAC3BpqC,OAAS+kF,GACN36C,GAAUA,EAAO08C,0BAA0B0H,CACpD,KAGFC,EAAkB,SAAyBrkD,GACzC,OAAOA,aAAkBpqC,IAC3B,EA+BF+kF,EAAS/tE,UAAUquE,KAAO,WACxBkD,EAAevoF,KAAM,IAAI4uF,EAC3B,EAyBA7J,EAAS/tE,UAAUwuE,MAAQ,SAAUhkD,EAAO8lD,EAAU1vC,GACpD,IAzNqBzY,EAyNjB7I,EAAQt2B,KAAK8mF,eACbxoD,GAAM,EACNwyD,GAASx6D,EAAMqyD,aA3NExpD,EA2N0BqC,EA1NxCimD,EAAO9vB,SAASx4B,IAAQA,aAAeuoD,GAwO9C,OAbIoJ,IAAUrJ,EAAO9vB,SAASn2B,KAC5BA,EAhOJ,SAA6BA,GAC3B,OAAOimD,EAAOnvD,KAAKkJ,EACrB,CA8NYgpD,CAAoBhpD,IAEN,mBAAb8lD,IACT1vC,EAAK0vC,EACLA,EAAW,MAETwJ,EAAOxJ,EAAW,SAAmBA,IAAUA,EAAWhxD,EAAMozD,iBAClD,mBAAP9xC,IAAmBA,EAAKq3C,GAC/B34D,EAAM84D,OArCZ,SAAuB3G,EAAQ7wC,GAC7B,IAAIylC,EAAK,IAAI0R,EAEbxG,EAAeE,EAAQpL,GACvB2J,EAAQ/oD,SAAS2Z,EAAIylC,EACvB,CAgCoB+T,CAAcpxF,KAAM43C,IAAak5C,GA3BrD,SAAoBrI,EAAQnyD,EAAOkL,EAAOoW,GACxC,IAAIylC,EAMJ,OALc,OAAV77C,EACF67C,EAAK,IAAIyR,EACiB,iBAAVttD,GAAuBlL,EAAMqyD,aAC7CtL,EAAK,IAAI8K,EAAqB,QAAS,CAAC,SAAU,UAAW3mD,KAE3D67C,IACFkL,EAAeE,EAAQpL,GACvB2J,EAAQ/oD,SAAS2Z,EAAIylC,IACd,EAGX,CAc8DgU,CAAWrxF,KAAMs2B,EAAOkL,EAAOoW,MACzFthB,EAAM+3D,YACN/vD,EAiDJ,SAAuBmqD,EAAQnyD,EAAOw6D,EAAOtvD,EAAO8lD,EAAU1vC,GAC5D,IAAKk5C,EAAO,CACV,IAAIQ,EArBR,SAAqBh7D,EAAOkL,EAAO8lD,GAIjC,OAHKhxD,EAAMqyD,aAAsC,IAAxBryD,EAAMg5D,eAA4C,iBAAV9tD,IAC/DA,EAAQimD,EAAOnvD,KAAKkJ,EAAO8lD,IAEtB9lD,CACT,CAgBmB+vD,CAAYj7D,EAAOkL,EAAO8lD,GACrC9lD,IAAU8vD,IACZR,GAAQ,EACRxJ,EAAW,SACX9lD,EAAQ8vD,EAEZ,CACA,IAAIlqB,EAAM9wC,EAAMqyD,WAAa,EAAInnD,EAAMrgC,OACvCm1B,EAAMn1B,QAAUimE,EAChB,IAAI9oC,EAAMhI,EAAMn1B,OAASm1B,EAAM4wD,cAG/B,GADK5oD,IAAKhI,EAAMq2D,WAAY,GACxBr2D,EAAMi5D,SAAWj5D,EAAMk5D,OAAQ,CACjC,IAAIlN,EAAOhsD,EAAM85D,oBACjB95D,EAAM85D,oBAAsB,CAC1B5uD,MAAOA,EACP8lD,SAAUA,EACVwJ,MAAOA,EACPl1D,SAAUgc,EACVjrC,KAAM,MAEJ21E,EACFA,EAAK31E,KAAO2pB,EAAM85D,oBAElB95D,EAAM25D,gBAAkB35D,EAAM85D,oBAEhC95D,EAAMg6D,sBAAwB,CAChC,MACEI,EAAQjI,EAAQnyD,GAAO,EAAO8wC,EAAK5lC,EAAO8lD,EAAU1vC,GAEtD,OAAOtZ,CACT,CAlFUkzD,CAAcxxF,KAAMs2B,EAAOw6D,EAAOtvD,EAAO8lD,EAAU1vC,IAEpDtZ,CACT,EACAymD,EAAS/tE,UAAUy6E,KAAO,WACxBzxF,KAAK8mF,eAAe0I,QACtB,EACAzK,EAAS/tE,UAAU06E,OAAS,WAC1B,IAAIp7D,EAAQt2B,KAAK8mF,eACbxwD,EAAMk5D,SACRl5D,EAAMk5D,SACDl5D,EAAMi5D,SAAYj5D,EAAMk5D,QAAWl5D,EAAMm5D,mBAAoBn5D,EAAM25D,iBAAiBC,EAAYlwF,KAAMs2B,GAE/G,EACAyuD,EAAS/tE,UAAU26E,mBAAqB,SAA4BrK,GAGlE,GADwB,iBAAbA,IAAuBA,EAAWA,EAASrzD,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAOl1B,SAASuoF,EAAW,IAAIrzD,gBAAkB,GAAI,MAAM,IAAI+6D,EAAqB1H,GAExL,OADAtnF,KAAK8mF,eAAe4C,gBAAkBpC,EAC/BtnF,IACT,EACAP,OAAOoX,eAAekuE,EAAS/tE,UAAW,iBAAkB,CAI1DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,gBAAkB9mF,KAAK8mF,eAAeK,WACpD,IAQF1nF,OAAOoX,eAAekuE,EAAS/tE,UAAW,wBAAyB,CAIjEF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,eAAeI,aAC7B,IAuKFnC,EAAS/tE,UAAUg3E,OAAS,SAAUxsD,EAAO8lD,EAAU1vC,GACrDA,EAAG,IAAIywC,EAA2B,YACpC,EACAtD,EAAS/tE,UAAUw5E,QAAU,KAC7BzL,EAAS/tE,UAAUm8B,IAAM,SAAU3R,EAAO8lD,EAAU1vC,GAClD,IAAIthB,EAAQt2B,KAAK8mF,eAmBjB,MAlBqB,mBAAVtlD,GACToW,EAAKpW,EACLA,EAAQ,KACR8lD,EAAW,MACkB,mBAAbA,IAChB1vC,EAAK0vC,EACLA,EAAW,MAET9lD,SAAuCxhC,KAAKwlF,MAAMhkD,EAAO8lD,GAGzDhxD,EAAMk5D,SACRl5D,EAAMk5D,OAAS,EACfxvF,KAAK0xF,UAIFp7D,EAAM84D,QAyDb,SAAqB3G,EAAQnyD,EAAOshB,GAClCthB,EAAM84D,QAAS,EACfS,EAAYpH,EAAQnyD,GAChBshB,IACEthB,EAAM6uD,SAAU6B,EAAQ/oD,SAAS2Z,GAAS6wC,EAAOt8C,KAAK,SAAUyL,IAEtEthB,EAAMywD,OAAQ,EACd0B,EAAOnpD,UAAW,CACpB,CAjEqBsyD,CAAY5xF,KAAMs2B,EAAOshB,GACrC53C,IACT,EACAP,OAAOoX,eAAekuE,EAAS/tE,UAAW,iBAAkB,CAI1DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,eAAe3lF,MAC7B,IAqEF1B,OAAOoX,eAAekuE,EAAS/tE,UAAW,YAAa,CAIrDF,YAAY,EACZC,IAAK,WACH,YAA4BpP,IAAxB3H,KAAK8mF,gBAGF9mF,KAAK8mF,eAAet6E,SAC7B,EACAmQ,IAAK,SAAarO,GAGXtO,KAAK8mF,iBAMV9mF,KAAK8mF,eAAet6E,UAAY8B,EAClC,IAEFy2E,EAAS/tE,UAAUhL,QAAUg8E,EAAYh8E,QACzC+4E,EAAS/tE,UAAU2zE,WAAa3C,EAAY4C,UAC5C7F,EAAS/tE,UAAUgzE,SAAW,SAAUtuB,EAAK9jB,GAC3CA,EAAG8jB,EACL,oCC9nBIm2B,aACJ,SAAStnC,EAAgBprB,EAAK7vB,EAAKhB,GAA4L,OAAnLgB,EAC5C,SAAwB4rE,GAAO,IAAI5rE,EACnC,SAAsB+O,EAAOyzE,GAAQ,GAAqB,iBAAVzzE,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI0zE,EAAO1zE,EAAMnH,OAAO86E,aAAc,QAAarqF,IAAToqF,EAAoB,CAAE,IAAIl2B,EAAMk2B,EAAKzsF,KAAK+Y,EAAOyzE,UAAoB,GAAmB,iBAARj2B,EAAkB,OAAOA,EAAK,MAAM,IAAI3wB,UAAU,+CAAiD,CAAE,OAA4BtsC,OAAiByf,EAAQ,CAD/U4zE,CAAa/W,GAAgB,MAAsB,iBAAR5rE,EAAmBA,EAAM1Q,OAAO0Q,EAAM,CADxE4iF,CAAe5iF,MAAiB6vB,EAAO1/B,OAAOoX,eAAesoB,EAAK7vB,EAAK,CAAEhB,MAAOA,EAAOwI,YAAY,EAAMyoB,cAAc,EAAMD,UAAU,IAAkBH,EAAI7vB,GAAOhB,EAAgB6wB,CAAK,CAG3O,IAAIgmD,EAAW,EAAQ,OACnBgN,EAAej7E,OAAO,eACtBk7E,EAAcl7E,OAAO,cACrBm7E,EAASn7E,OAAO,SAChBo7E,EAASp7E,OAAO,SAChBq7E,EAAer7E,OAAO,eACtBs7E,EAAiBt7E,OAAO,iBACxBu7E,EAAUv7E,OAAO,UACrB,SAASw7E,EAAiBpkF,EAAOypE,GAC/B,MAAO,CACLzpE,MAAOA,EACPypE,KAAMA,EAEV,CACA,SAAS4a,EAAe3nD,GACtB,IAAI/a,EAAU+a,EAAKmnD,GACnB,GAAgB,OAAZliE,EAAkB,CACpB,IAAInwB,EAAOkrC,EAAKynD,GAAS3I,OAIZ,OAAThqF,IACFkrC,EAAKunD,GAAgB,KACrBvnD,EAAKmnD,GAAgB,KACrBnnD,EAAKonD,GAAe,KACpBniE,EAAQyiE,EAAiB5yF,GAAM,IAEnC,CACF,CACA,SAAS8yF,EAAW5nD,GAGlBg8C,EAAQ/oD,SAAS00D,EAAgB3nD,EACnC,CAYA,IAAI6nD,EAAyBpzF,OAAO82D,gBAAe,WAAa,IAC5Du8B,EAAuCrzF,OAAOg3D,gBAmD/ClM,EAnD+DsnC,EAAwB,CACpFpJ,aACF,OAAOzoF,KAAKyyF,EACd,EACA9lF,KAAM,WACJ,IAAIw9B,EAAQnqC,KAGR2d,EAAQ3d,KAAKqyF,GACjB,GAAc,OAAV10E,EACF,OAAOuN,QAAQ4L,OAAOnZ,GAExB,GAAI3d,KAAKsyF,GACP,OAAOpnE,QAAQ+E,QAAQyiE,OAAiB/qF,GAAW,IAErD,GAAI3H,KAAKyyF,GAASjmF,UAKhB,OAAO,IAAI0e,SAAQ,SAAU+E,EAAS6G,GACpCkwD,EAAQ/oD,UAAS,WACXkM,EAAMkoD,GACRv7D,EAAOqT,EAAMkoD,IAEbpiE,EAAQyiE,OAAiB/qF,GAAW,GAExC,GACF,IAOF,IACImkD,EADAinC,EAAc/yF,KAAKuyF,GAEvB,GAAIQ,EACFjnC,EAAU,IAAI5gC,QAlDpB,SAAqB6nE,EAAa/nD,GAChC,OAAO,SAAU/a,EAAS6G,GACxBi8D,EAAY3vE,MAAK,WACX4nB,EAAKsnD,GACPriE,EAAQyiE,OAAiB/qF,GAAW,IAGtCqjC,EAAKwnD,GAAgBviE,EAAS6G,EAChC,GAAGA,EACL,CACF,CAwC4Bk8D,CAAYD,EAAa/yF,WAC1C,CAGL,IAAIF,EAAOE,KAAKyyF,GAAS3I,OACzB,GAAa,OAAThqF,EACF,OAAOorB,QAAQ+E,QAAQyiE,EAAiB5yF,GAAM,IAEhDgsD,EAAU,IAAI5gC,QAAQlrB,KAAKwyF,GAC7B,CAEA,OADAxyF,KAAKuyF,GAAgBzmC,EACdA,CACT,GACwC50C,OAAO81E,eAAe,WAC9D,OAAOhtF,IACT,IAAIuqD,EAAgBsnC,EAAuB,UAAU,WACnD,IAAIn1C,EAAS18C,KAIb,OAAO,IAAIkrB,SAAQ,SAAU+E,EAAS6G,GACpC4lB,EAAO+1C,GAASzmF,QAAQ,MAAM,SAAU0vD,GAClCA,EACF5kC,EAAO4kC,GAGTzrC,EAAQyiE,OAAiB/qF,GAAW,GACtC,GACF,GACF,IAAIkqF,GAAwBgB,GA4D5B51F,EAAOR,QA3DiC,SAA2CgsF,GACjF,IAAIwK,EACAvoD,EAAWjrC,OAAOsiE,OAAO+wB,GAA4DvoC,EAArB0oC,EAAiB,CAAC,EAAmCR,EAAS,CAChInkF,MAAOm6E,EACPnpD,UAAU,IACRirB,EAAgB0oC,EAAgBd,EAAc,CAChD7jF,MAAO,KACPgxB,UAAU,IACRirB,EAAgB0oC,EAAgBb,EAAa,CAC/C9jF,MAAO,KACPgxB,UAAU,IACRirB,EAAgB0oC,EAAgBZ,EAAQ,CAC1C/jF,MAAO,KACPgxB,UAAU,IACRirB,EAAgB0oC,EAAgBX,EAAQ,CAC1ChkF,MAAOm6E,EAAOrB,eAAe4B,WAC7B1pD,UAAU,IACRirB,EAAgB0oC,EAAgBT,EAAgB,CAClDlkF,MAAO,SAAe2hB,EAAS6G,GAC7B,IAAIh3B,EAAO4qC,EAAS+nD,GAAS3I,OACzBhqF,GACF4qC,EAAS6nD,GAAgB,KACzB7nD,EAASynD,GAAgB,KACzBznD,EAAS0nD,GAAe,KACxBniE,EAAQyiE,EAAiB5yF,GAAM,MAE/B4qC,EAASynD,GAAgBliE,EACzBya,EAAS0nD,GAAet7D,EAE5B,EACAwI,UAAU,IACR2zD,IA0BJ,OAzBAvoD,EAAS6nD,GAAgB,KACzBpN,EAASsD,GAAQ,SAAU/sB,GACzB,GAAIA,GAAoB,+BAAbA,EAAIhjD,KAAuC,CACpD,IAAIoe,EAAS4T,EAAS0nD,GAUtB,OAPe,OAAXt7D,IACF4T,EAAS6nD,GAAgB,KACzB7nD,EAASynD,GAAgB,KACzBznD,EAAS0nD,GAAe,KACxBt7D,EAAO4kC,SAEThxB,EAAS2nD,GAAU32B,EAErB,CACA,IAAIzrC,EAAUya,EAASynD,GACP,OAAZliE,IACFya,EAAS6nD,GAAgB,KACzB7nD,EAASynD,GAAgB,KACzBznD,EAAS0nD,GAAe,KACxBniE,EAAQyiE,OAAiB/qF,GAAW,KAEtC+iC,EAAS4nD,IAAU,CACrB,IACA7J,EAAO3iF,GAAG,WAAY8sF,EAAWxrF,KAAK,KAAMsjC,IACrCA,CACT,+BChLA,SAASymC,EAAQ/mC,EAAQ8oD,GAAkB,IAAIljE,EAAOvwB,OAAOuwB,KAAKoa,GAAS,GAAI3qC,OAAO49C,sBAAuB,CAAE,IAAI81C,EAAU1zF,OAAO49C,sBAAsBjT,GAAS8oD,IAAmBC,EAAUA,EAAQ7vF,QAAO,SAAU+/E,GAAO,OAAO5jF,OAAOyjC,yBAAyBkH,EAAQi5C,GAAKvsE,UAAY,KAAKkZ,EAAK1c,KAAK3D,MAAMqgB,EAAMmjE,EAAU,CAAE,OAAOnjE,CAAM,CACpV,SAASojE,EAAcpxF,GAAU,IAAK,IAAIxE,EAAI,EAAGA,EAAI0D,UAAUC,OAAQ3D,IAAK,CAAE,IAAImqB,EAAS,MAAQzmB,UAAU1D,GAAK0D,UAAU1D,GAAK,CAAC,EAAGA,EAAI,EAAI2zE,EAAQ1xE,OAAOkoB,IAAS,GAAI1V,SAAQ,SAAU3C,GAAOi7C,EAAgBvoD,EAAQsN,EAAKqY,EAAOrY,GAAO,IAAK7P,OAAO29C,0BAA4B39C,OAAO+7C,iBAAiBx5C,EAAQvC,OAAO29C,0BAA0Bz1B,IAAWwpD,EAAQ1xE,OAAOkoB,IAAS1V,SAAQ,SAAU3C,GAAO7P,OAAOoX,eAAe7U,EAAQsN,EAAK7P,OAAOyjC,yBAAyBvb,EAAQrY,GAAO,GAAI,CAAE,OAAOtN,CAAQ,CACzf,SAASuoD,EAAgBprB,EAAK7vB,EAAKhB,GAA4L,OAAnLgB,EAAM4iF,EAAe5iF,MAAiB6vB,EAAO1/B,OAAOoX,eAAesoB,EAAK7vB,EAAK,CAAEhB,MAAOA,EAAOwI,YAAY,EAAMyoB,cAAc,EAAMD,UAAU,IAAkBH,EAAI7vB,GAAOhB,EAAgB6wB,CAAK,CAE3O,SAASwL,EAAkB3oC,EAAQ3D,GAAS,IAAK,IAAIb,EAAI,EAAGA,EAAIa,EAAM8C,OAAQ3D,IAAK,CAAE,IAAI6yB,EAAahyB,EAAMb,GAAI6yB,EAAWvZ,WAAauZ,EAAWvZ,aAAc,EAAOuZ,EAAWkP,cAAe,EAAU,UAAWlP,IAAYA,EAAWiP,UAAW,GAAM7/B,OAAOoX,eAAe7U,EAAQkwF,EAAe7hE,EAAW/gB,KAAM+gB,EAAa,CAAE,CAE5U,SAAS6hE,EAAehX,GAAO,IAAI5rE,EACnC,SAAsB+O,EAAOyzE,GAAQ,GAAqB,iBAAVzzE,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI0zE,EAAO1zE,EAAMnH,OAAO86E,aAAc,QAAarqF,IAAToqF,EAAoB,CAAE,IAAIl2B,EAAMk2B,EAAKzsF,KAAK+Y,EAAOyzE,UAAoB,GAAmB,iBAARj2B,EAAkB,OAAOA,EAAK,MAAM,IAAI3wB,UAAU,+CAAiD,CAAE,OAA4BtsC,OAAiByf,EAAQ,CAD/U4zE,CAAa/W,GAAgB,MAAsB,iBAAR5rE,EAAmBA,EAAM1Q,OAAO0Q,EAAM,CAE1H,IACEm4E,EADa,EAAQ,OACHA,OAElB4L,EADc,EAAQ,OACFA,QAClB5qF,EAAS4qF,GAAWA,EAAQ5qF,QAAU,UAI1CxL,EAAOR,QAAuB,WAC5B,SAASsrF,KAdX,SAAyBr8C,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIT,UAAU,oCAAwC,CAepJU,CAAgB5rC,KAAM+nF,GACtB/nF,KAAKkV,KAAO,KACZlV,KAAKszF,KAAO,KACZtzF,KAAKmB,OAAS,CAChB,CAjBF,IAAsBwqC,EAAaK,EA8KjC,OA9KoBL,EAkBPo8C,GAlBoB/7C,EAkBR,CAAC,CACxB18B,IAAK,OACLhB,MAAO,SAAclK,GACnB,IAAI8nC,EAAQ,CACVpsC,KAAMsE,EACNuI,KAAM,MAEJ3M,KAAKmB,OAAS,EAAGnB,KAAKszF,KAAK3mF,KAAOu/B,EAAWlsC,KAAKkV,KAAOg3B,EAC7DlsC,KAAKszF,KAAOpnD,IACVlsC,KAAKmB,MACT,GACC,CACDmO,IAAK,UACLhB,MAAO,SAAiBlK,GACtB,IAAI8nC,EAAQ,CACVpsC,KAAMsE,EACNuI,KAAM3M,KAAKkV,MAEO,IAAhBlV,KAAKmB,SAAcnB,KAAKszF,KAAOpnD,GACnClsC,KAAKkV,KAAOg3B,IACVlsC,KAAKmB,MACT,GACC,CACDmO,IAAK,QACLhB,MAAO,WACL,GAAoB,IAAhBtO,KAAKmB,OAAT,CACA,IAAIm9B,EAAMt+B,KAAKkV,KAAKpV,KAGpB,OAFoB,IAAhBE,KAAKmB,OAAcnB,KAAKkV,KAAOlV,KAAKszF,KAAO,KAAUtzF,KAAKkV,KAAOlV,KAAKkV,KAAKvI,OAC7E3M,KAAKmB,OACAm9B,CAJsB,CAK/B,GACC,CACDhvB,IAAK,QACLhB,MAAO,WACLtO,KAAKkV,KAAOlV,KAAKszF,KAAO,KACxBtzF,KAAKmB,OAAS,CAChB,GACC,CACDmO,IAAK,OACLhB,MAAO,SAAc3Q,GACnB,GAAoB,IAAhBqC,KAAKmB,OAAc,MAAO,GAG9B,IAFA,IAAIpD,EAAIiC,KAAKkV,KACTopB,EAAM,GAAKvgC,EAAE+B,KACV/B,EAAIA,EAAE4O,MAAM2xB,GAAO3gC,EAAII,EAAE+B,KAChC,OAAOw+B,CACT,GACC,CACDhvB,IAAK,SACLhB,MAAO,SAAgB7Q,GACrB,GAAoB,IAAhBuC,KAAKmB,OAAc,OAAOsmF,EAAO8L,MAAM,GAI3C,IAHA,IA5DcjvC,EAAKtiD,EAAQ6xC,EA4DvBvV,EAAMmpD,EAAO+L,YAAY/1F,IAAM,GAC/BM,EAAIiC,KAAKkV,KACT1X,EAAI,EACDO,GA/DOumD,EAgEDvmD,EAAE+B,KAhEIkC,EAgEEs8B,EAhEMuV,EAgEDr2C,EA/D9BiqF,EAAOzwE,UAAUkmE,KAAK53E,KAAKg/C,EAAKtiD,EAAQ6xC,GAgElCr2C,GAAKO,EAAE+B,KAAKqB,OACZpD,EAAIA,EAAE4O,KAER,OAAO2xB,CACT,GAGC,CACDhvB,IAAK,UACLhB,MAAO,SAAiB7Q,EAAGg2F,GACzB,IAAIn1D,EAYJ,OAXI7gC,EAAIuC,KAAKkV,KAAKpV,KAAKqB,QAErBm9B,EAAMt+B,KAAKkV,KAAKpV,KAAKkH,MAAM,EAAGvJ,GAC9BuC,KAAKkV,KAAKpV,KAAOE,KAAKkV,KAAKpV,KAAKkH,MAAMvJ,IAGtC6gC,EAFS7gC,IAAMuC,KAAKkV,KAAKpV,KAAKqB,OAExBnB,KAAKu8C,QAGLk3C,EAAazzF,KAAK0zF,WAAWj2F,GAAKuC,KAAK2zF,WAAWl2F,GAEnD6gC,CACT,GACC,CACDhvB,IAAK,QACLhB,MAAO,WACL,OAAOtO,KAAKkV,KAAKpV,IACnB,GAGC,CACDwP,IAAK,aACLhB,MAAO,SAAoB7Q,GACzB,IAAIM,EAAIiC,KAAKkV,KACTrX,EAAI,EACJygC,EAAMvgC,EAAE+B,KAEZ,IADArC,GAAK6gC,EAAIn9B,OACFpD,EAAIA,EAAE4O,MAAM,CACjB,IAAIiyC,EAAM7gD,EAAE+B,KACR8zF,EAAKn2F,EAAImhD,EAAIz9C,OAASy9C,EAAIz9C,OAAS1D,EAGvC,GAFIm2F,IAAOh1C,EAAIz9C,OAAQm9B,GAAOsgB,EAAStgB,GAAOsgB,EAAI53C,MAAM,EAAGvJ,GAEjD,IADVA,GAAKm2F,GACQ,CACPA,IAAOh1C,EAAIz9C,UACXtD,EACEE,EAAE4O,KAAM3M,KAAKkV,KAAOnX,EAAE4O,KAAU3M,KAAKkV,KAAOlV,KAAKszF,KAAO,OAE5DtzF,KAAKkV,KAAOnX,EACZA,EAAE+B,KAAO8+C,EAAI53C,MAAM4sF,IAErB,KACF,GACE/1F,CACJ,CAEA,OADAmC,KAAKmB,QAAUtD,EACRygC,CACT,GAGC,CACDhvB,IAAK,aACLhB,MAAO,SAAoB7Q,GACzB,IAAI6gC,EAAMmpD,EAAO+L,YAAY/1F,GACzBM,EAAIiC,KAAKkV,KACTrX,EAAI,EAGR,IAFAE,EAAE+B,KAAKo9E,KAAK5+C,GACZ7gC,GAAKM,EAAE+B,KAAKqB,OACLpD,EAAIA,EAAE4O,MAAM,CACjB,IAAIknF,EAAM91F,EAAE+B,KACR8zF,EAAKn2F,EAAIo2F,EAAI1yF,OAAS0yF,EAAI1yF,OAAS1D,EAGvC,GAFAo2F,EAAI3W,KAAK5+C,EAAKA,EAAIn9B,OAAS1D,EAAG,EAAGm2F,GAEvB,IADVn2F,GAAKm2F,GACQ,CACPA,IAAOC,EAAI1yF,UACXtD,EACEE,EAAE4O,KAAM3M,KAAKkV,KAAOnX,EAAE4O,KAAU3M,KAAKkV,KAAOlV,KAAKszF,KAAO,OAE5DtzF,KAAKkV,KAAOnX,EACZA,EAAE+B,KAAO+zF,EAAI7sF,MAAM4sF,IAErB,KACF,GACE/1F,CACJ,CAEA,OADAmC,KAAKmB,QAAUtD,EACRygC,CACT,GAGC,CACDhvB,IAAK7G,EACL6F,MAAO,SAAe5G,EAAG+I,GACvB,OAAO4iF,EAAQrzF,KAAMozF,EAAcA,EAAc,CAAC,EAAG3iF,GAAU,CAAC,EAAG,CAEjEwtD,MAAO,EAEP61B,eAAe,IAEnB,MA5K0EnpD,EAAkBgB,EAAY30B,UAAWg1B,GAA2EvsC,OAAOoX,eAAe80B,EAAa,YAAa,CAAErM,UAAU,IA8KrPyoD,CACT,CApK8B,gDCiC9B,SAASgM,EAAoB72F,EAAMw+D,GACjCs4B,EAAY92F,EAAMw+D,GAClBu4B,EAAY/2F,EACd,CACA,SAAS+2F,EAAY/2F,GACfA,EAAK4pF,iBAAmB5pF,EAAK4pF,eAAe0C,WAC5CtsF,EAAKkqF,iBAAmBlqF,EAAKkqF,eAAeoC,WAChDtsF,EAAK+tB,KAAK,QACZ,CAkBA,SAAS+oE,EAAY92F,EAAMw+D,GACzBx+D,EAAK+tB,KAAK,QAASywC,EACrB,CAYAz+D,EAAOR,QAAU,CACfuP,QAzFF,SAAiB0vD,EAAK9jB,GACpB,IAAIzN,EAAQnqC,KACRk0F,EAAoBl0F,KAAKonF,gBAAkBpnF,KAAKonF,eAAe56E,UAC/D2nF,EAAoBn0F,KAAK8mF,gBAAkB9mF,KAAK8mF,eAAet6E,UACnE,OAAI0nF,GAAqBC,GACnBv8C,EACFA,EAAG8jB,GACMA,IACJ17D,KAAK8mF,eAEE9mF,KAAK8mF,eAAegJ,eAC9B9vF,KAAK8mF,eAAegJ,cAAe,EACnC9I,EAAQ/oD,SAAS+1D,EAAah0F,KAAM07D,IAHpCsrB,EAAQ/oD,SAAS+1D,EAAah0F,KAAM07D,IAMjC17D,OAMLA,KAAKonF,iBACPpnF,KAAKonF,eAAe56E,WAAY,GAI9BxM,KAAK8mF,iBACP9mF,KAAK8mF,eAAet6E,WAAY,GAElCxM,KAAKgqF,SAAStuB,GAAO,MAAM,SAAUA,IAC9B9jB,GAAM8jB,EACJvxB,EAAM28C,eAEC38C,EAAM28C,eAAegJ,aAI/B9I,EAAQ/oD,SAASg2D,EAAa9pD,IAH9BA,EAAM28C,eAAegJ,cAAe,EACpC9I,EAAQ/oD,SAAS81D,EAAqB5pD,EAAOuxB,IAH7CsrB,EAAQ/oD,SAAS81D,EAAqB5pD,EAAOuxB,GAOtC9jB,GACTovC,EAAQ/oD,SAASg2D,EAAa9pD,GAC9ByN,EAAG8jB,IAEHsrB,EAAQ/oD,SAASg2D,EAAa9pD,EAElC,IACOnqC,KACT,EA2CE4qF,UAjCF,WACM5qF,KAAKonF,iBACPpnF,KAAKonF,eAAe56E,WAAY,EAChCxM,KAAKonF,eAAe6B,SAAU,EAC9BjpF,KAAKonF,eAAeL,OAAQ,EAC5B/mF,KAAKonF,eAAe4B,YAAa,GAE/BhpF,KAAK8mF,iBACP9mF,KAAK8mF,eAAet6E,WAAY,EAChCxM,KAAK8mF,eAAeC,OAAQ,EAC5B/mF,KAAK8mF,eAAesI,QAAS,EAC7BpvF,KAAK8mF,eAAeqI,aAAc,EAClCnvF,KAAK8mF,eAAeuJ,aAAc,EAClCrwF,KAAK8mF,eAAe3B,UAAW,EAC/BnlF,KAAK8mF,eAAegJ,cAAe,EAEvC,EAkBEvH,eAdF,SAAwBE,EAAQ/sB,GAO9B,IAAIu1B,EAASxI,EAAOrB,eAChByE,EAASpD,EAAO3B,eAChBmK,GAAUA,EAAOxH,aAAeoC,GAAUA,EAAOpC,YAAahB,EAAOz8E,QAAQ0vD,GAAU+sB,EAAOx9D,KAAK,QAASywC,EAClH,iCCrFA,IAAI04B,EAA6B,sCAYjC,SAASC,IAAQ,CAoEjBp3F,EAAOR,QAhEP,SAAS63F,EAAI7L,EAAQj3D,EAAMoK,GACzB,GAAoB,mBAATpK,EAAqB,OAAO8iE,EAAI7L,EAAQ,KAAMj3D,GACpDA,IAAMA,EAAO,CAAC,GACnBoK,EAlBF,SAAcA,GACZ,IAAIyuC,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EACT,IAAK,IAAIz9B,EAAO1rC,UAAUC,OAAQ0uB,EAAO,IAAIrlB,MAAMoiC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ehd,EAAKgd,GAAQ3rC,UAAU2rC,GAEzBjR,EAASjsB,MAAM3P,KAAM6vB,EALH,CAMpB,CACF,CAQasc,CAAKvQ,GAAYy4D,GAC5B,IAAI3O,EAAWl0D,EAAKk0D,WAA8B,IAAlBl0D,EAAKk0D,UAAsB+C,EAAO/C,SAC9DpmD,EAAW9N,EAAK8N,WAA8B,IAAlB9N,EAAK8N,UAAsBmpD,EAAOnpD,SAC9Di1D,EAAiB,WACd9L,EAAOnpD,UAAUmtD,GACxB,EACI+H,EAAgB/L,EAAO3B,gBAAkB2B,EAAO3B,eAAe3B,SAC/DsH,EAAW,WACbntD,GAAW,EACXk1D,GAAgB,EACX9O,GAAU9pD,EAASt2B,KAAKmjF,EAC/B,EACIgM,EAAgBhM,EAAOrB,gBAAkBqB,EAAOrB,eAAe4B,WAC/DnD,EAAQ,WACVH,GAAW,EACX+O,GAAgB,EACXn1D,GAAU1D,EAASt2B,KAAKmjF,EAC/B,EACI32D,EAAU,SAAiB4pC,GAC7B9/B,EAASt2B,KAAKmjF,EAAQ/sB,EACxB,EACIoqB,EAAU,WACZ,IAAIpqB,EACJ,OAAIgqB,IAAa+O,GACVhM,EAAOrB,gBAAmBqB,EAAOrB,eAAeL,QAAOrrB,EAAM,IAAI04B,GAC/Dx4D,EAASt2B,KAAKmjF,EAAQ/sB,IAE3Bp8B,IAAak1D,GACV/L,EAAO3B,gBAAmB2B,EAAO3B,eAAeC,QAAOrrB,EAAM,IAAI04B,GAC/Dx4D,EAASt2B,KAAKmjF,EAAQ/sB,SAF/B,CAIF,EACIg5B,EAAY,WACdjM,EAAOkM,IAAI7uF,GAAG,SAAU2mF,EAC1B,EAcA,OAtDF,SAAmBhE,GACjB,OAAOA,EAAOmM,WAAqC,mBAAjBnM,EAAO5c,KAC3C,CAuCMgpB,CAAUpM,IACZA,EAAO3iF,GAAG,WAAY2mF,GACtBhE,EAAO3iF,GAAG,QAASggF,GACf2C,EAAOkM,IAAKD,IAAiBjM,EAAO3iF,GAAG,UAAW4uF,IAC7Cp1D,IAAampD,EAAO3B,iBAE7B2B,EAAO3iF,GAAG,MAAOyuF,GACjB9L,EAAO3iF,GAAG,QAASyuF,IAErB9L,EAAO3iF,GAAG,MAAO+/E,GACjB4C,EAAO3iF,GAAG,SAAU2mF,IACD,IAAfj7D,EAAK7T,OAAiB8qE,EAAO3iF,GAAG,QAASgsB,GAC7C22D,EAAO3iF,GAAG,QAASggF,GACZ,WACL2C,EAAOjM,eAAe,WAAYiQ,GAClChE,EAAOjM,eAAe,QAASsJ,GAC/B2C,EAAOjM,eAAe,UAAWkY,GAC7BjM,EAAOkM,KAAKlM,EAAOkM,IAAInY,eAAe,SAAUiQ,GACpDhE,EAAOjM,eAAe,MAAO+X,GAC7B9L,EAAOjM,eAAe,QAAS+X,GAC/B9L,EAAOjM,eAAe,SAAUiQ,GAChChE,EAAOjM,eAAe,MAAOqJ,GAC7B4C,EAAOjM,eAAe,QAAS1qD,GAC/B22D,EAAOjM,eAAe,QAASsJ,EACjC,CACF,aCpFA7oF,EAAOR,QAAU,WACf,MAAM,IAAI0Y,MAAM,gDAClB,gCCGA,IAAIm/E,EASApM,EAAiB,WACnB4M,EAAmB5M,EAAe4M,iBAClCjG,EAAuB3G,EAAe2G,qBACxC,SAASwF,EAAK34B,GAEZ,GAAIA,EAAK,MAAMA,CACjB,CA+BA,SAASp2D,EAAKiK,GACZA,GACF,CACA,SAAS81E,EAAK/sD,EAAMvwB,GAClB,OAAOuwB,EAAK+sD,KAAKt9E,EACnB,CA6BA9K,EAAOR,QAvBP,WACE,IAAK,IAAImwC,EAAO1rC,UAAUC,OAAQ4zF,EAAU,IAAIvqF,MAAMoiC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClFkoD,EAAQloD,GAAQ3rC,UAAU2rC,GAE5B,IAKIlvB,EALAie,EATN,SAAqBm5D,GACnB,OAAKA,EAAQ5zF,OAC8B,mBAAhC4zF,EAAQA,EAAQ5zF,OAAS,GAA0BkzF,EACvDU,EAAQzrE,MAFa+qE,CAG9B,CAKiBW,CAAYD,GAE3B,GADIvqF,MAAM6I,QAAQ0hF,EAAQ,MAAKA,EAAUA,EAAQ,IAC7CA,EAAQ5zF,OAAS,EACnB,MAAM,IAAI2zF,EAAiB,WAG7B,IAAIG,EAAWF,EAAQn4F,KAAI,SAAU6rF,EAAQjrF,GAC3C,IAAIyrF,EAAUzrF,EAAIu3F,EAAQ5zF,OAAS,EAEnC,OAnDJ,SAAmBsnF,EAAQQ,EAASsG,EAAS3zD,GAC3CA,EAnBF,SAAcA,GACZ,IAAIyuC,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTzuC,EAASjsB,WAAM,EAAQzO,WACzB,CACF,CAYairC,CAAKvQ,GAChB,IAAIs5D,GAAS,EACbzM,EAAO3iF,GAAG,SAAS,WACjBovF,GAAS,CACX,SACYvtF,IAAR2sF,IAAmBA,EAAM,EAAQ,QACrCA,EAAI7L,EAAQ,CACV/C,SAAUuD,EACV3pD,SAAUiwD,IACT,SAAU7zB,GACX,GAAIA,EAAK,OAAO9/B,EAAS8/B,GACzBw5B,GAAS,EACTt5D,GACF,IACA,IAAIpvB,GAAY,EAChB,OAAO,SAAUkvD,GACf,IAAIw5B,IACA1oF,EAIJ,OAHAA,GAAY,EAtBhB,SAAmBi8E,GACjB,OAAOA,EAAOmM,WAAqC,mBAAjBnM,EAAO5c,KAC3C,CAuBQgpB,CAAUpM,GAAgBA,EAAO5c,QACP,mBAAnB4c,EAAOz8E,QAA+By8E,EAAOz8E,eACxD4vB,EAAS8/B,GAAO,IAAImzB,EAAqB,QAC3C,CACF,CAyBWsG,CAAU1M,EAAQQ,EADXzrF,EAAI,GACyB,SAAUk+D,GAC9C/9C,IAAOA,EAAQ+9C,GAChBA,GAAKu5B,EAAShjF,QAAQ3M,GACtB2jF,IACJgM,EAAShjF,QAAQ3M,GACjBs2B,EAASje,GACX,GACF,IACA,OAAOo3E,EAAQx4E,OAAO8oE,EACxB,gCClFA,IAAI+P,EAAwB,iCAiB5Bn4F,EAAOR,QAAU,CACfwrF,iBAdF,SAA0B3xD,EAAO7lB,EAAS4kF,EAAW3M,GACnD,IAAI4M,EAJN,SAA2B7kF,EAASi4E,EAAU2M,GAC5C,OAAgC,MAAzB5kF,EAAQy2E,cAAwBz2E,EAAQy2E,cAAgBwB,EAAWj4E,EAAQ4kF,GAAa,IACjG,CAEYE,CAAkB9kF,EAASi4E,EAAU2M,GAC/C,GAAW,MAAPC,EAAa,CACf,IAAMxU,SAASwU,IAAQpiF,KAAK+I,MAAMq5E,KAASA,GAAQA,EAAM,EAEvD,MAAM,IAAIF,EADC1M,EAAW2M,EAAY,gBACIC,GAExC,OAAOpiF,KAAK+I,MAAMq5E,EACpB,CAGA,OAAOh/D,EAAMqyD,WAAa,GAAK,KACjC,oBClBA1rF,EAAOR,QAAU,EAAjB,qCCAA,IAAI+4F,EAAwB,mBAARl5D,KAAsBA,IAAItlB,UAC1Cy+E,EAAoBh2F,OAAOyjC,0BAA4BsyD,EAAS/1F,OAAOyjC,yBAAyB5G,IAAItlB,UAAW,QAAU,KACzH0+E,EAAUF,GAAUC,GAAsD,mBAA1BA,EAAkB1+E,IAAqB0+E,EAAkB1+E,IAAM,KAC/G4+E,EAAaH,GAAUl5D,IAAItlB,UAAU/E,QACrC2jF,EAAwB,mBAARr5D,KAAsBA,IAAIvlB,UAC1C6+E,EAAoBp2F,OAAOyjC,0BAA4B0yD,EAASn2F,OAAOyjC,yBAAyB3G,IAAIvlB,UAAW,QAAU,KACzH8+E,EAAUF,GAAUC,GAAsD,mBAA1BA,EAAkB9+E,IAAqB8+E,EAAkB9+E,IAAM,KAC/Gg/E,EAAaH,GAAUr5D,IAAIvlB,UAAU/E,QAErC+jF,EADgC,mBAAZl5D,SAA0BA,QAAQ9lB,UAC5B8lB,QAAQ9lB,UAAUmiB,IAAM,KAElD88D,EADgC,mBAAZ3U,SAA0BA,QAAQtqE,UAC5BsqE,QAAQtqE,UAAUmiB,IAAM,KAElD+8D,EADgC,mBAAZ7U,SAA0BA,QAAQrqE,UAC1BqqE,QAAQrqE,UAAUm/E,MAAQ,KACtDC,EAAiB53F,QAAQwY,UAAUorB,QACnCi0D,EAAiB52F,OAAOuX,UAAUtQ,SAClC4vF,EAAmBv3C,SAAS/nC,UAAUtQ,SACtC6vF,EAAS33F,OAAOoY,UAAU6Q,MAC1B2uE,EAAS53F,OAAOoY,UAAUhQ,MAC1B86E,EAAWljF,OAAOoY,UAAU5D,QAC5BqjF,EAAe73F,OAAOoY,UAAUo+C,YAChCshC,EAAe93F,OAAOoY,UAAUid,YAChC0iE,EAAQ/2B,OAAO5oD,UAAU4B,KACzBgpE,EAAUp3E,MAAMwM,UAAU7W,OAC1By2F,EAAQpsF,MAAMwM,UAAUla,KACxB+5F,EAAYrsF,MAAMwM,UAAUhQ,MAC5B8vF,EAAS5jF,KAAK+I,MACd86E,EAAkC,mBAAX9W,OAAwBA,OAAOjpE,UAAUorB,QAAU,KAC1E40D,EAAOv3F,OAAO49C,sBACd45C,EAAgC,mBAAX//E,QAAoD,iBAApBA,OAAOwzB,SAAwBxzB,OAAOF,UAAUtQ,SAAW,KAChHwwF,EAAsC,mBAAXhgF,QAAoD,iBAApBA,OAAOwzB,SAElEvzB,EAAgC,mBAAXD,QAAyBA,OAAOC,cAAuBD,OAAOC,YAAf,GAClED,OAAOC,YACP,KACFggF,EAAe13F,OAAOuX,UAAUsmC,qBAEhC85C,GAA0B,mBAAZvuE,QAAyBA,QAAQ0tC,eAAiB92D,OAAO82D,kBACvE,GAAGgX,YAAc/iE,MAAMwM,UACjB,SAAUtJ,GACR,OAAOA,EAAE6/D,SACb,EACE,MAGV,SAAS8pB,EAAoBC,EAAK14C,GAC9B,GACI04C,IAAQC,KACLD,KAAQ,KACRA,GAAQA,GACPA,GAAOA,GAAO,KAAQA,EAAM,KAC7BX,EAAMrxF,KAAK,IAAKs5C,GAEnB,OAAOA,EAEX,IAAI44C,EAAW,mCACf,GAAmB,iBAARF,EAAkB,CACzB,IAAIG,EAAMH,EAAM,GAAKR,GAAQQ,GAAOR,EAAOQ,GAC3C,GAAIG,IAAQH,EAAK,CACb,IAAII,EAAS94F,OAAO64F,GAChBE,EAAMnB,EAAOlxF,KAAKs5C,EAAK84C,EAAOv2F,OAAS,GAC3C,OAAO2gF,EAASx8E,KAAKoyF,EAAQF,EAAU,OAAS,IAAM1V,EAASx8E,KAAKw8E,EAASx8E,KAAKqyF,EAAK,cAAe,OAAQ,KAAM,GACxH,CACJ,CACA,OAAO7V,EAASx8E,KAAKs5C,EAAK44C,EAAU,MACxC,CAEA,IAAII,EAAc,EAAQ,OACtBC,EAAgBD,EAAYnvF,OAC5BqvF,EAAgBx1D,EAASu1D,GAAiBA,EAAgB,KA4L9D,SAASE,EAAWp6F,EAAGq6F,EAAcxmE,GACjC,IAAIymE,EAAkD,YAArCzmE,EAAK0mE,YAAcF,GAA6B,IAAM,IACvE,OAAOC,EAAYt6F,EAAIs6F,CAC3B,CAEA,SAASzV,EAAM7kF,GACX,OAAOmkF,EAASx8E,KAAK1G,OAAOjB,GAAI,KAAM,SAC1C,CAEA,SAAS0V,EAAQ8rB,GAAO,QAAsB,mBAAfq/C,EAAMr/C,IAA+BhoB,GAAgC,iBAARgoB,GAAoBhoB,KAAegoB,EAAO,CAEtI,SAASg5D,EAASh5D,GAAO,QAAsB,oBAAfq/C,EAAMr/C,IAAgChoB,GAAgC,iBAARgoB,GAAoBhoB,KAAegoB,EAAO,CAOxI,SAASmD,EAASnD,GACd,GAAI+3D,EACA,OAAO/3D,GAAsB,iBAARA,GAAoBA,aAAejoB,OAE5D,GAAmB,iBAARioB,EACP,OAAO,EAEX,IAAKA,GAAsB,iBAARA,IAAqB83D,EACpC,OAAO,EAEX,IAEI,OADAA,EAAY3xF,KAAK65B,IACV,CACX,CAAE,MAAOpiC,GAAI,CACb,OAAO,CACX,CA3NAE,EAAOR,QAAU,SAAS27F,EAASj5D,EAAK1uB,EAASwtD,EAAOo6B,GACpD,IAAI7mE,EAAO/gB,GAAW,CAAC,EAEvB,GAAI0oB,EAAI3H,EAAM,eAAsC,WAApBA,EAAK0mE,YAA+C,WAApB1mE,EAAK0mE,WACjE,MAAM,IAAIhtD,UAAU,oDAExB,GACI/R,EAAI3H,EAAM,qBAAuD,iBAAzBA,EAAK8mE,gBACvC9mE,EAAK8mE,gBAAkB,GAAK9mE,EAAK8mE,kBAAoBf,IAC5B,OAAzB/lE,EAAK8mE,iBAGX,MAAM,IAAIptD,UAAU,0FAExB,IAAI4oD,GAAgB36D,EAAI3H,EAAM,kBAAmBA,EAAKsiE,cACtD,GAA6B,kBAAlBA,GAAiD,WAAlBA,EACtC,MAAM,IAAI5oD,UAAU,iFAGxB,GACI/R,EAAI3H,EAAM,WACS,OAAhBA,EAAK+mE,QACW,OAAhB/mE,EAAK+mE,UACHjvD,SAAS9X,EAAK+mE,OAAQ,MAAQ/mE,EAAK+mE,QAAU/mE,EAAK+mE,OAAS,GAEhE,MAAM,IAAIrtD,UAAU,4DAExB,GAAI/R,EAAI3H,EAAM,qBAAwD,kBAA1BA,EAAKgnE,iBAC7C,MAAM,IAAIttD,UAAU,qEAExB,IAAIstD,EAAmBhnE,EAAKgnE,iBAE5B,QAAmB,IAARr5D,EACP,MAAO,YAEX,GAAY,OAARA,EACA,MAAO,OAEX,GAAmB,kBAARA,EACP,OAAOA,EAAM,OAAS,QAG1B,GAAmB,iBAARA,EACP,OAAOs5D,EAAct5D,EAAK3N,GAE9B,GAAmB,iBAAR2N,EAAkB,CACzB,GAAY,IAARA,EACA,OAAOo4D,IAAWp4D,EAAM,EAAI,IAAM,KAEtC,IAAIyf,EAAMhgD,OAAOugC,GACjB,OAAOq5D,EAAmBnB,EAAoBl4D,EAAKyf,GAAOA,CAC9D,CACA,GAAmB,iBAARzf,EAAkB,CACzB,IAAIu5D,EAAY95F,OAAOugC,GAAO,IAC9B,OAAOq5D,EAAmBnB,EAAoBl4D,EAAKu5D,GAAaA,CACpE,CAEA,IAAIC,OAAiC,IAAfnnE,EAAKysC,MAAwB,EAAIzsC,EAAKysC,MAE5D,QADqB,IAAVA,IAAyBA,EAAQ,GACxCA,GAAS06B,GAAYA,EAAW,GAAoB,iBAARx5D,EAC5C,OAAO9rB,EAAQ8rB,GAAO,UAAY,WAGtC,IA4Qep6B,EA5QXwzF,EAkUR,SAAmB/mE,EAAMysC,GACrB,IAAI26B,EACJ,GAAoB,OAAhBpnE,EAAK+mE,OACLK,EAAa,SACV,MAA2B,iBAAhBpnE,EAAK+mE,QAAuB/mE,EAAK+mE,OAAS,GAGxD,OAAO,KAFPK,EAAahC,EAAMtxF,KAAKkF,MAAMgnB,EAAK+mE,OAAS,GAAI,IAGpD,CACA,MAAO,CACHlkF,KAAMukF,EACN3hD,KAAM2/C,EAAMtxF,KAAKkF,MAAMyzD,EAAQ,GAAI26B,GAE3C,CA/UiBC,CAAUrnE,EAAMysC,GAE7B,QAAoB,IAATo6B,EACPA,EAAO,QACJ,GAAIt5F,EAAQs5F,EAAMl5D,IAAQ,EAC7B,MAAO,aAGX,SAASk0D,EAAQ/kF,EAAOgqB,EAAMwgE,GAK1B,GAJIxgE,IACA+/D,EAAOxB,EAAUvxF,KAAK+yF,IACjB/kF,KAAKglB,GAEVwgE,EAAU,CACV,IAAIC,EAAU,CACV96B,MAAOzsC,EAAKysC,OAKhB,OAHI9kC,EAAI3H,EAAM,gBACVunE,EAAQb,WAAa1mE,EAAK0mE,YAEvBE,EAAS9pF,EAAOyqF,EAAS96B,EAAQ,EAAGo6B,EAC/C,CACA,OAAOD,EAAS9pF,EAAOkjB,EAAMysC,EAAQ,EAAGo6B,EAC5C,CAEA,GAAmB,mBAARl5D,IAAuBg5D,EAASh5D,GAAM,CAC7C,IAAInhC,EAwJZ,SAAgBuG,GACZ,GAAIA,EAAEvG,KAAQ,OAAOuG,EAAEvG,KACvB,IAAIiG,EAAIsyF,EAAOjxF,KAAKgxF,EAAiBhxF,KAAKf,GAAI,wBAC9C,OAAIN,EAAYA,EAAE,GACX,IACX,CA7JmB+0F,CAAO75D,GACdnP,GAAOipE,EAAW95D,EAAKk0D,GAC3B,MAAO,aAAer1F,EAAO,KAAOA,EAAO,gBAAkB,KAAOgyB,GAAK7uB,OAAS,EAAI,MAAQy1F,EAAMtxF,KAAK0qB,GAAM,MAAQ,KAAO,GAClI,CACA,GAAIsS,EAASnD,GAAM,CACf,IAAI+5D,GAAYhC,EAAoBpV,EAASx8E,KAAK1G,OAAOugC,GAAM,yBAA0B,MAAQ83D,EAAY3xF,KAAK65B,GAClH,MAAsB,iBAARA,GAAqB+3D,EAA2CgC,GAAvBC,EAAUD,GACrE,CACA,IA0Oen0F,EA1ODo6B,IA2OS,iBAANp6B,IACU,oBAAhBgL,aAA+BhL,aAAagL,aAG1B,iBAAfhL,EAAEq0F,UAAmD,mBAAnBr0F,EAAE8/D,cA/O9B,CAGhB,IAFA,IAAIlnE,GAAI,IAAM+4F,EAAapxF,KAAK1G,OAAOugC,EAAIi6D,WACvCxzF,GAAQu5B,EAAI9pB,YAAc,GACrB7X,GAAI,EAAGA,GAAIoI,GAAMzE,OAAQ3D,KAC9BG,IAAK,IAAMiI,GAAMpI,IAAGQ,KAAO,IAAM+5F,EAAWvV,EAAM58E,GAAMpI,IAAG8Q,OAAQ,SAAUkjB,GAKjF,OAHA7zB,IAAK,IACDwhC,EAAIub,YAAcvb,EAAIub,WAAWv5C,SAAUxD,IAAK,OACpDA,GAAK,KAAO+4F,EAAapxF,KAAK1G,OAAOugC,EAAIi6D,WAAa,GAE1D,CACA,GAAI/lF,EAAQ8rB,GAAM,CACd,GAAmB,IAAfA,EAAIh+B,OAAgB,MAAO,KAC/B,IAAI2qF,GAAKmN,EAAW95D,EAAKk0D,GACzB,OAAIkF,IAyQZ,SAA0BzM,GACtB,IAAK,IAAItuF,EAAI,EAAGA,EAAIsuF,EAAG3qF,OAAQ3D,IAC3B,GAAIuB,EAAQ+sF,EAAGtuF,GAAI,OAAS,EACxB,OAAO,EAGf,OAAO,CACX,CAhRuB67F,CAAiBvN,IACrB,IAAMwN,EAAaxN,GAAIyM,GAAU,IAErC,KAAO3B,EAAMtxF,KAAKwmF,GAAI,MAAQ,IACzC,CACA,GAkFJ,SAAiB3sD,GAAO,QAAsB,mBAAfq/C,EAAMr/C,IAA+BhoB,GAAgC,iBAARgoB,GAAoBhoB,KAAegoB,EAAO,CAlF9HyqC,CAAQzqC,GAAM,CACd,IAAI48B,GAAQk9B,EAAW95D,EAAKk0D,GAC5B,MAAM,UAAWl+E,MAAM6B,aAAc,UAAWmoB,IAAQg4D,EAAa7xF,KAAK65B,EAAK,SAG1D,IAAjB48B,GAAM56D,OAAuB,IAAMvC,OAAOugC,GAAO,IAC9C,MAAQvgC,OAAOugC,GAAO,KAAOy3D,EAAMtxF,KAAKy2D,GAAO,MAAQ,KAHnD,MAAQn9D,OAAOugC,GAAO,KAAOy3D,EAAMtxF,KAAKs8E,EAAQt8E,KAAK,YAAc+tF,EAAQl0D,EAAIo6D,OAAQx9B,IAAQ,MAAQ,IAItH,CACA,GAAmB,iBAAR58B,GAAoB20D,EAAe,CAC1C,GAAIgE,GAA+C,mBAAvB34D,EAAI24D,IAAiCF,EAC7D,OAAOA,EAAYz4D,EAAK,CAAE8+B,MAAO06B,EAAW16B,IACzC,GAAsB,WAAlB61B,GAAqD,mBAAhB30D,EAAIk0D,QAChD,OAAOl0D,EAAIk0D,SAEnB,CACA,GA6HJ,SAAetuF,GACX,IAAK2wF,IAAY3wF,GAAkB,iBAANA,EACzB,OAAO,EAEX,IACI2wF,EAAQpwF,KAAKP,GACb,IACI+wF,EAAQxwF,KAAKP,EACjB,CAAE,MAAOpH,GACL,OAAO,CACX,CACA,OAAOoH,aAAau3B,GACxB,CAAE,MAAOv/B,GAAI,CACb,OAAO,CACX,CA3IQy8F,CAAMr6D,GAAM,CACZ,IAAIs6D,GAAW,GAMf,OALI9D,GACAA,EAAWrwF,KAAK65B,GAAK,SAAU7wB,EAAOgB,GAClCmqF,GAASnmF,KAAK+/E,EAAQ/jF,EAAK6vB,GAAK,GAAQ,OAASk0D,EAAQ/kF,EAAO6wB,GACpE,IAEGu6D,EAAa,MAAOhE,EAAQpwF,KAAK65B,GAAMs6D,GAAUlB,EAC5D,CACA,GA+JJ,SAAexzF,GACX,IAAK+wF,IAAY/wF,GAAkB,iBAANA,EACzB,OAAO,EAEX,IACI+wF,EAAQxwF,KAAKP,GACb,IACI2wF,EAAQpwF,KAAKP,EACjB,CAAE,MAAOd,GACL,OAAO,CACX,CACA,OAAOc,aAAaw3B,GACxB,CAAE,MAAOx/B,GAAI,CACb,OAAO,CACX,CA7KQ48F,CAAMx6D,GAAM,CACZ,IAAIy6D,GAAW,GAMf,OALI7D,GACAA,EAAWzwF,KAAK65B,GAAK,SAAU7wB,GAC3BsrF,GAAStmF,KAAK+/E,EAAQ/kF,EAAO6wB,GACjC,IAEGu6D,EAAa,MAAO5D,EAAQxwF,KAAK65B,GAAMy6D,GAAUrB,EAC5D,CACA,GA2HJ,SAAmBxzF,GACf,IAAKixF,IAAejxF,GAAkB,iBAANA,EAC5B,OAAO,EAEX,IACIixF,EAAW1wF,KAAKP,EAAGixF,GACnB,IACIC,EAAW3wF,KAAKP,EAAGkxF,EACvB,CAAE,MAAOt4F,GACL,OAAO,CACX,CACA,OAAOoH,aAAa+3B,OACxB,CAAE,MAAO//B,GAAI,CACb,OAAO,CACX,CAzIQ88F,CAAU16D,GACV,OAAO26D,EAAiB,WAE5B,GAmKJ,SAAmB/0F,GACf,IAAKkxF,IAAelxF,GAAkB,iBAANA,EAC5B,OAAO,EAEX,IACIkxF,EAAW3wF,KAAKP,EAAGkxF,GACnB,IACID,EAAW1wF,KAAKP,EAAGixF,EACvB,CAAE,MAAOr4F,GACL,OAAO,CACX,CACA,OAAOoH,aAAau8E,OACxB,CAAE,MAAOvkF,GAAI,CACb,OAAO,CACX,CAjLQg9F,CAAU56D,GACV,OAAO26D,EAAiB,WAE5B,GAqIJ,SAAmB/0F,GACf,IAAKmxF,IAAiBnxF,GAAkB,iBAANA,EAC9B,OAAO,EAEX,IAEI,OADAmxF,EAAa5wF,KAAKP,IACX,CACX,CAAE,MAAOhI,GAAI,CACb,OAAO,CACX,CA9IQi9F,CAAU76D,GACV,OAAO26D,EAAiB,WAE5B,GA0CJ,SAAkB36D,GAAO,QAAsB,oBAAfq/C,EAAMr/C,IAAgChoB,GAAgC,iBAARgoB,GAAoBhoB,KAAegoB,EAAO,CA1ChIupC,CAASvpC,GACT,OAAOg6D,EAAU9F,EAAQzzF,OAAOu/B,KAEpC,GA4DJ,SAAkBA,GACd,IAAKA,GAAsB,iBAARA,IAAqB43D,EACpC,OAAO,EAEX,IAEI,OADAA,EAAczxF,KAAK65B,IACZ,CACX,CAAE,MAAOpiC,GAAI,CACb,OAAO,CACX,CArEQk9F,CAAS96D,GACT,OAAOg6D,EAAU9F,EAAQ0D,EAAczxF,KAAK65B,KAEhD,GAqCJ,SAAmBA,GAAO,QAAsB,qBAAfq/C,EAAMr/C,IAAiChoB,GAAgC,iBAARgoB,GAAoBhoB,KAAegoB,EAAO,CArClI+6D,CAAU/6D,GACV,OAAOg6D,EAAU/C,EAAe9wF,KAAK65B,IAEzC,GAgCJ,SAAkBA,GAAO,QAAsB,oBAAfq/C,EAAMr/C,IAAgChoB,GAAgC,iBAARgoB,GAAoBhoB,KAAegoB,EAAO,CAhChIg7D,CAASh7D,GACT,OAAOg6D,EAAU9F,EAAQz0F,OAAOugC,KAEpC,IA0BJ,SAAgBA,GAAO,QAAsB,kBAAfq/C,EAAMr/C,IAA8BhoB,GAAgC,iBAARgoB,GAAoBhoB,KAAegoB,EAAO,CA1B3Hi7D,CAAOj7D,KAASg5D,EAASh5D,GAAM,CAChC,IAAIk7D,GAAKpB,EAAW95D,EAAKk0D,GACrBtiE,GAAgBqmE,EAAMA,EAAIj4D,KAAS1/B,OAAOuX,UAAYmoB,aAAe1/B,QAAU0/B,EAAIzW,cAAgBjpB,OACnG66F,GAAWn7D,aAAe1/B,OAAS,GAAK,iBACxC86F,IAAaxpE,IAAiB5Z,GAAe1X,OAAO0/B,KAASA,GAAOhoB,KAAegoB,EAAMq3D,EAAOlxF,KAAKk5E,EAAMr/C,GAAM,GAAI,GAAKm7D,GAAW,SAAW,GAEhJz5F,IADiBkwB,IAA4C,mBAApBoO,EAAIzW,YAA6B,GAAKyW,EAAIzW,YAAY1qB,KAAOmhC,EAAIzW,YAAY1qB,KAAO,IAAM,KAC3Gu8F,IAAaD,GAAW,IAAM1D,EAAMtxF,KAAKs8E,EAAQt8E,KAAK,GAAIi1F,IAAa,GAAID,IAAY,IAAK,MAAQ,KAAO,IACvI,OAAkB,IAAdD,GAAGl5F,OAAuBN,GAAM,KAChC03F,EACO13F,GAAM,IAAMy4F,EAAae,GAAI9B,GAAU,IAE3C13F,GAAM,KAAO+1F,EAAMtxF,KAAK+0F,GAAI,MAAQ,IAC/C,CACA,OAAOz7F,OAAOugC,EAClB,EAgDA,IAAIwiD,EAASliF,OAAOuX,UAAUC,gBAAkB,SAAU3H,GAAO,OAAOA,KAAOtP,IAAM,EACrF,SAASm5B,EAAIgG,EAAK7vB,GACd,OAAOqyE,EAAOr8E,KAAK65B,EAAK7vB,EAC5B,CAEA,SAASkvE,EAAMr/C,GACX,OAAOk3D,EAAe/wF,KAAK65B,EAC/B,CASA,SAASpgC,EAAQ+sF,EAAI/mF,GACjB,GAAI+mF,EAAG/sF,QAAW,OAAO+sF,EAAG/sF,QAAQgG,GACpC,IAAK,IAAIvH,EAAI,EAAGI,EAAIkuF,EAAG3qF,OAAQ3D,EAAII,EAAGJ,IAClC,GAAIsuF,EAAGtuF,KAAOuH,EAAK,OAAOvH,EAE9B,OAAQ,CACZ,CAqFA,SAASi7F,EAAc75C,EAAKptB,GACxB,GAAIotB,EAAIz9C,OAASqwB,EAAK8mE,gBAAiB,CACnC,IAAIkC,EAAY57C,EAAIz9C,OAASqwB,EAAK8mE,gBAC9BmC,EAAU,OAASD,EAAY,mBAAqBA,EAAY,EAAI,IAAM,IAC9E,OAAO/B,EAAcjC,EAAOlxF,KAAKs5C,EAAK,EAAGptB,EAAK8mE,iBAAkB9mE,GAAQipE,CAC5E,CAGA,OAAO1C,EADCjW,EAASx8E,KAAKw8E,EAASx8E,KAAKs5C,EAAK,WAAY,QAAS,eAAgB87C,GACzD,SAAUlpE,EACnC,CAEA,SAASkpE,EAAQ78F,GACb,IAAIJ,EAAII,EAAEghD,WAAW,GACjB95C,EAAI,CACJ,EAAG,IACH,EAAG,IACH,GAAI,IACJ,GAAI,IACJ,GAAI,KACNtH,GACF,OAAIsH,EAAY,KAAOA,EAChB,OAAStH,EAAI,GAAO,IAAM,IAAMg5F,EAAanxF,KAAK7H,EAAEiJ,SAAS,IACxE,CAEA,SAASyyF,EAAUv6C,GACf,MAAO,UAAYA,EAAM,GAC7B,CAEA,SAASk7C,EAAiBv7F,GACtB,OAAOA,EAAO,QAClB,CAEA,SAASm7F,EAAan7F,EAAM0H,EAAMgnC,EAASsrD,GAEvC,OAAOh6F,EAAO,KAAO0H,EAAO,OADRsyF,EAASe,EAAarsD,EAASsrD,GAAU3B,EAAMtxF,KAAK2nC,EAAS,OAC7B,GACxD,CA0BA,SAASqsD,EAAaxN,EAAIyM,GACtB,GAAkB,IAAdzM,EAAG3qF,OAAgB,MAAO,GAC9B,IAAIw5F,EAAa,KAAOpC,EAAOthD,KAAOshD,EAAOlkF,KAC7C,OAAOsmF,EAAa/D,EAAMtxF,KAAKwmF,EAAI,IAAM6O,GAAc,KAAOpC,EAAOthD,IACzE,CAEA,SAASgiD,EAAW95D,EAAKk0D,GACrB,IAAIuH,EAAQvnF,EAAQ8rB,GAChB2sD,EAAK,GACT,GAAI8O,EAAO,CACP9O,EAAG3qF,OAASg+B,EAAIh+B,OAChB,IAAK,IAAI3D,EAAI,EAAGA,EAAI2hC,EAAIh+B,OAAQ3D,IAC5BsuF,EAAGtuF,GAAK27B,EAAIgG,EAAK3hC,GAAK61F,EAAQl0D,EAAI3hC,GAAI2hC,GAAO,EAErD,CACA,IACI07D,EADArX,EAAuB,mBAATwT,EAAsBA,EAAK73D,GAAO,GAEpD,GAAI+3D,EAAmB,CACnB2D,EAAS,CAAC,EACV,IAAK,IAAIp2F,EAAI,EAAGA,EAAI++E,EAAKriF,OAAQsD,IAC7Bo2F,EAAO,IAAMrX,EAAK/+E,IAAM++E,EAAK/+E,EAErC,CAEA,IAAK,IAAI6K,KAAO6vB,EACPhG,EAAIgG,EAAK7vB,KACVsrF,GAASh8F,OAAOgB,OAAO0P,MAAUA,GAAOA,EAAM6vB,EAAIh+B,QAClD+1F,GAAqB2D,EAAO,IAAMvrF,aAAgB4H,SAG3Cy/E,EAAMrxF,KAAK,SAAUgK,GAC5Bw8E,EAAGx4E,KAAK+/E,EAAQ/jF,EAAK6vB,GAAO,KAAOk0D,EAAQl0D,EAAI7vB,GAAM6vB,IAErD2sD,EAAGx4E,KAAKhE,EAAM,KAAO+jF,EAAQl0D,EAAI7vB,GAAM6vB,MAG/C,GAAoB,mBAAT63D,EACP,IAAK,IAAIxxF,EAAI,EAAGA,EAAIg+E,EAAKriF,OAAQqE,IACzB2xF,EAAa7xF,KAAK65B,EAAKqkD,EAAKh+E,KAC5BsmF,EAAGx4E,KAAK,IAAM+/E,EAAQ7P,EAAKh+E,IAAM,MAAQ6tF,EAAQl0D,EAAIqkD,EAAKh+E,IAAK25B,IAI3E,OAAO2sD,CACX,yBCngBA,iBACE,SAASzjE,GAGsC5rB,GAC9CA,EAAQq+F,SACoC79F,GAC5CA,EAAO69F,SAHT,IAIIC,EAA8B,iBAAV,EAAA52F,GAAsB,EAAAA,EAE7C42F,EAAWzpE,SAAWypE,GACtBA,EAAWp3F,SAAWo3F,GACtBA,EAAW79F,KAUZ,IAAI89F,EAGJC,EAAS,WAGT5mF,EAAO,GAEP6mF,EAAO,GACPC,EAAO,GACPC,EAAO,IAMPC,EAAgB,QAChBC,EAAgB,eAChBC,EAAkB,4BAGlBC,EAAS,CACR,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAIlBC,EAAgBpnF,EArBT,EAsBP4H,EAAQ/I,KAAK+I,MACby/E,EAAqB98F,OAAOm0B,aAa5B,SAASpV,EAAMpf,GACd,MAAM,IAAIwiF,WAAWya,EAAOj9F,GAC7B,CAUA,SAAS3B,EAAI++F,EAAOpsF,GAGnB,IAFA,IAAIpO,EAASw6F,EAAMx6F,OACf0qB,EAAS,GACN1qB,KACN0qB,EAAO1qB,GAAUoO,EAAGosF,EAAMx6F,IAE3B,OAAO0qB,CACR,CAYA,SAAS+vE,EAAU7wC,EAAQx7C,GAC1B,IAAIwsD,EAAQhR,EAAOpuD,MAAM,KACrBkvB,EAAS,GAWb,OAVIkwC,EAAM56D,OAAS,IAGlB0qB,EAASkwC,EAAM,GAAK,IACpBhR,EAASgR,EAAM,IAMTlwC,EADOjvB,GAFdmuD,EAASA,EAAO33C,QAAQmoF,EAAiB,MACrB5+F,MAAM,KACA4S,GAAIzS,KAAK,IAEpC,CAeA,SAAS++F,EAAW9wC,GAMnB,IALA,IAGIz8C,EACAwtF,EAJAnlC,EAAS,GACTolC,EAAU,EACV56F,EAAS4pD,EAAO5pD,OAGb46F,EAAU56F,IAChBmN,EAAQy8C,EAAOlM,WAAWk9C,OACb,OAAUztF,GAAS,OAAUytF,EAAU56F,EAG3B,QAAX,OADb26F,EAAQ/wC,EAAOlM,WAAWk9C,OAEzBplC,EAAOrjD,OAAe,KAARhF,IAAkB,KAAe,KAARwtF,GAAiB,QAIxDnlC,EAAOrjD,KAAKhF,GACZytF,KAGDplC,EAAOrjD,KAAKhF,GAGd,OAAOqoD,CACR,CAUA,SAASqlC,EAAWL,GACnB,OAAO/+F,EAAI++F,GAAO,SAASrtF,GAC1B,IAAIqoD,EAAS,GAOb,OANIroD,EAAQ,QAEXqoD,GAAU+kC,GADVptF,GAAS,SAC8B,GAAK,KAAQ,OACpDA,EAAQ,MAAiB,KAARA,GAElBqoD,EAAU+kC,EAAmBptF,EAE9B,IAAGxR,KAAK,GACT,CAmCA,SAASm/F,EAAaC,EAAOC,GAG5B,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,EACzD,CAOA,SAASC,EAAMC,EAAOC,EAAWC,GAChC,IAAI93F,EAAI,EAGR,IAFA43F,EAAQE,EAAYtgF,EAAMogF,EAAQjB,GAAQiB,GAAS,EACnDA,GAASpgF,EAAMogF,EAAQC,GACOD,EAAQZ,EAAgBP,GAAQ,EAAGz2F,GAAK4P,EACrEgoF,EAAQpgF,EAAMogF,EAAQZ,GAEvB,OAAOx/E,EAAMxX,GAAKg3F,EAAgB,GAAKY,GAASA,EAAQlB,GACzD,CASA,SAAS3/B,EAAOn9C,GAEf,IAEI6yE,EAIAsL,EACAh3F,EACAsgB,EACA22E,EACA/3F,EACAD,EACAy3F,EACAl/F,EAEA0/F,EArEiBC,EAsDjBhmC,EAAS,GACTimC,EAAcv+E,EAAMld,OAEpB3D,EAAI,EACJC,EA7MM,IA8MNo/F,EA/MS,GAoOb,KALAL,EAAQn+E,EAAMy+E,YA7NH,MA8NC,IACXN,EAAQ,GAGJh3F,EAAI,EAAGA,EAAIg3F,IAASh3F,EAEpB6Y,EAAMwgC,WAAWr5C,IAAM,KAC1BmY,EAAM,aAEPg5C,EAAOrjD,KAAK+K,EAAMwgC,WAAWr5C,IAM9B,IAAKsgB,EAAQ02E,EAAQ,EAAIA,EAAQ,EAAI,EAAG12E,EAAQ82E,GAAwC,CAOvF,IAAKH,EAAOj/F,EAAGkH,EAAI,EAAGD,EAAI4P,EAErByR,GAAS82E,GACZj/E,EAAM,mBAGPu+E,GAxGmBS,EAwGEt+E,EAAMwgC,WAAW/4B,MAvGxB,GAAK,GACb62E,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEbtoF,IAgGQA,GAAQ6nF,EAAQjgF,GAAOg/E,EAASz9F,GAAKkH,KACjDiZ,EAAM,YAGPngB,GAAK0+F,EAAQx3F,IAGTw3F,GAFJl/F,EAAIyH,GAAKo4F,EAvQL,EAuQoBp4F,GAAKo4F,EAAO3B,EAAOA,EAAOz2F,EAAIo4F,IAbHp4F,GAAK4P,EAoBpD3P,EAAIuX,EAAMg/E,GADdyB,EAAaroF,EAAOrX,KAEnB2gB,EAAM,YAGPjZ,GAAKg4F,EAKNG,EAAOT,EAAM5+F,EAAIi/F,EADjBvL,EAAMv6B,EAAOx1D,OAAS,EACc,GAARs7F,GAIxBxgF,EAAMze,EAAI0zF,GAAO+J,EAASx9F,GAC7BkgB,EAAM,YAGPlgB,GAAKwe,EAAMze,EAAI0zF,GACf1zF,GAAK0zF,EAGLv6B,EAAO7hD,OAAOtX,IAAK,EAAGC,EAEvB,CAEA,OAAOu+F,EAAWrlC,EACnB,CASA,SAAS4E,EAAOl9C,GACf,IAAI5gB,EACA4+F,EACAU,EACAC,EACAH,EACAr3F,EACAvB,EACAgK,EACAxJ,EACAzH,EACAigG,EAGAL,EAEAM,EACAR,EACAS,EANAxmC,EAAS,GAoBb,IARAimC,GAHAv+E,EAAQw9E,EAAWx9E,IAGCld,OAGpB1D,EAvUU,IAwUV4+F,EAAQ,EACRQ,EA1Ua,GA6URr3F,EAAI,EAAGA,EAAIo3F,IAAep3F,GAC9By3F,EAAe5+E,EAAM7Y,IACF,KAClBmxD,EAAOrjD,KAAKooF,EAAmBuB,IAejC,IAXAF,EAAiBC,EAAcrmC,EAAOx1D,OAMlC67F,GACHrmC,EAAOrjD,KAzVG,KA6VJypF,EAAiBH,GAAa,CAIpC,IAAK34F,EAAIg3F,EAAQz1F,EAAI,EAAGA,EAAIo3F,IAAep3F,GAC1Cy3F,EAAe5+E,EAAM7Y,KACD/H,GAAKw/F,EAAeh5F,IACvCA,EAAIg5F,GAcN,IAPIh5F,EAAIxG,EAAIwe,GAAOg/E,EAASoB,IAD5Ba,EAAwBH,EAAiB,KAExCp/E,EAAM,YAGP0+E,IAAUp4F,EAAIxG,GAAKy/F,EACnBz/F,EAAIwG,EAECuB,EAAI,EAAGA,EAAIo3F,IAAep3F,EAO9B,IANAy3F,EAAe5+E,EAAM7Y,IAEF/H,KAAO4+F,EAAQpB,GACjCt9E,EAAM,YAGHs/E,GAAgBx/F,EAAG,CAEtB,IAAKwQ,EAAIouF,EAAO53F,EAAI4P,IAEfpG,GADJjR,EAAIyH,GAAKo4F,EAlYP,EAkYsBp4F,GAAKo4F,EAAO3B,EAAOA,EAAOz2F,EAAIo4F,IADTp4F,GAAK4P,EAKlD8oF,EAAUlvF,EAAIjR,EACd0/F,EAAaroF,EAAOrX,EACpB25D,EAAOrjD,KACNooF,EAAmBO,EAAaj/F,EAAImgG,EAAUT,EAAY,KAE3DzuF,EAAIgO,EAAMkhF,EAAUT,GAGrB/lC,EAAOrjD,KAAKooF,EAAmBO,EAAahuF,EAAG,KAC/C4uF,EAAOT,EAAMC,EAAOa,EAAuBH,GAAkBC,GAC7DX,EAAQ,IACNU,CACH,GAGCV,IACA5+F,CAEH,CACA,OAAOk5D,EAAO75D,KAAK,GACpB,CA2CAk+F,EAAW,CAMV,QAAW,QAQX,KAAQ,CACP,OAAUa,EACV,OAAUG,GAEX,OAAUxgC,EACV,OAAUD,EACV,QA/BD,SAAiBl9C,GAChB,OAAOu9E,EAAUv9E,GAAO,SAAS0sC,GAChC,OAAOuwC,EAAc1iF,KAAKmyC,GACvB,OAASwQ,EAAOxQ,GAChBA,CACJ,GACD,EA0BC,UAnDD,SAAmB1sC,GAClB,OAAOu9E,EAAUv9E,GAAO,SAAS0sC,GAChC,OAAOswC,EAAcziF,KAAKmyC,GACvByQ,EAAOzQ,EAAO/jD,MAAM,GAAGitB,eACvB82B,CACJ,GACD,QA0DE,KAFD,aACC,OAAOiwC,CACP,+BAgBH,CAnhBC,oBCCD,IAAIrrD,EAAS,EAAQ,OACjB83C,EAAS93C,EAAO83C,OAGpB,SAAS2V,EAAW94C,EAAK+4C,GACvB,IAAK,IAAI/tF,KAAOg1C,EACd+4C,EAAI/tF,GAAOg1C,EAAIh1C,EAEnB,CASA,SAASguF,EAAYpiB,EAAKqiB,EAAkBp8F,GAC1C,OAAOsmF,EAAOvM,EAAKqiB,EAAkBp8F,EACvC,CAVIsmF,EAAOnvD,MAAQmvD,EAAO8L,OAAS9L,EAAO+L,aAAe/L,EAAO+V,gBAC9DvgG,EAAOR,QAAUkzC,GAGjBytD,EAAUztD,EAAQlzC,GAClBA,EAAQgrF,OAAS6V,GAOnBA,EAAWtmF,UAAYvX,OAAOsiE,OAAO0lB,EAAOzwE,WAG5ComF,EAAU3V,EAAQ6V,GAElBA,EAAWhlE,KAAO,SAAU4iD,EAAKqiB,EAAkBp8F,GACjD,GAAmB,iBAAR+5E,EACT,MAAM,IAAIhwC,UAAU,iCAEtB,OAAOu8C,EAAOvM,EAAKqiB,EAAkBp8F,EACvC,EAEAm8F,EAAW/J,MAAQ,SAAUttF,EAAMgJ,EAAMq4E,GACvC,GAAoB,iBAATrhF,EACT,MAAM,IAAIilC,UAAU,6BAEtB,IAAI2oD,EAAMpM,EAAOxhF,GAUjB,YATa0B,IAATsH,EACsB,iBAAbq4E,EACTuM,EAAI5kF,KAAKA,EAAMq4E,GAEfuM,EAAI5kF,KAAKA,GAGX4kF,EAAI5kF,KAAK,GAEJ4kF,CACT,EAEAyJ,EAAW9J,YAAc,SAAUvtF,GACjC,GAAoB,iBAATA,EACT,MAAM,IAAIilC,UAAU,6BAEtB,OAAOu8C,EAAOxhF,EAChB,EAEAq3F,EAAWE,gBAAkB,SAAUv3F,GACrC,GAAoB,iBAATA,EACT,MAAM,IAAIilC,UAAU,6BAEtB,OAAOyE,EAAO8tD,WAAWx3F,EAC3B,uBChEA,aAEsB,0BAAP,EAMP,WACN,SAASy3F,EAAY7yE,GACnB,IAAI8yE,EAAWC,iBAAiB/yE,EAAM,MAAMgzE,iBAAiB,YAE7D,OAAOF,EAAS5+F,QAAQ,WAAa,GAAK4+F,EAAS5+F,QAAQ,SAAY,CACzE,CAmBA,OAjBA,SAAsB8rB,GACpB,GAAMA,aAAgB9a,aAAe8a,aAAgB7a,WAArD,CAKA,IADA,IAAIygC,EAAU5lB,EAAKtV,WACZk7B,EAAQl7B,YAAY,CACzB,GAAImoF,EAAYjtD,GACd,OAAOA,EAGTA,EAAUA,EAAQl7B,UACpB,CAEA,OAAOjW,SAASw+F,kBAAoBx+F,SAASuT,eAX7C,CAYF,CAGF,GA/BsB,UAAX,IAAW,gDCAtB,IAAIgjE,EAAe,EAAQ,OACvBkoB,EAAY,EAAQ,OACpB1K,EAAU,EAAQ,OAElBpU,EAAapJ,EAAa,eAC1BmoB,EAAWnoB,EAAa,aAAa,GACrCooB,EAAOpoB,EAAa,SAAS,GAE7BqoB,EAAcH,EAAU,yBAAyB,GACjDI,EAAcJ,EAAU,yBAAyB,GACjDK,EAAcL,EAAU,yBAAyB,GACjDM,EAAUN,EAAU,qBAAqB,GACzCO,EAAUP,EAAU,qBAAqB,GACzCQ,EAAUR,EAAU,qBAAqB,GAUzCS,EAAc,SAAUhtC,EAAMliD,GACjC,IAAK,IAAiBmvF,EAAbxnD,EAAOua,EAAmC,QAAtBitC,EAAOxnD,EAAKtqC,MAAgBsqC,EAAOwnD,EAC/D,GAAIA,EAAKnvF,MAAQA,EAIhB,OAHA2nC,EAAKtqC,KAAO8xF,EAAK9xF,KACjB8xF,EAAK9xF,KAAO6kD,EAAK7kD,KACjB6kD,EAAK7kD,KAAO8xF,EACLA,CAGV,EAuBAxhG,EAAOR,QAAU,WAChB,IAAIiiG,EACAC,EACAC,EACAC,EAAU,CACbC,OAAQ,SAAUxvF,GACjB,IAAKuvF,EAAQ1lE,IAAI7pB,GAChB,MAAM,IAAI2vE,EAAW,iCAAmCoU,EAAQ/jF,GAElE,EACAyH,IAAK,SAAUzH,GACd,GAAI0uF,GAAY1uF,IAAuB,iBAARA,GAAmC,mBAARA,IACzD,GAAIovF,EACH,OAAOR,EAAYQ,EAAKpvF,QAEnB,GAAI2uF,GACV,GAAIU,EACH,OAAON,EAAQM,EAAIrvF,QAGpB,GAAIsvF,EACH,OA1CS,SAAUG,EAASzvF,GAChC,IAAIub,EAAO2zE,EAAYO,EAASzvF,GAChC,OAAOub,GAAQA,EAAKvc,KACrB,CAuCY0wF,CAAQJ,EAAItvF,EAGtB,EACA6pB,IAAK,SAAU7pB,GACd,GAAI0uF,GAAY1uF,IAAuB,iBAARA,GAAmC,mBAARA,IACzD,GAAIovF,EACH,OAAON,EAAYM,EAAKpvF,QAEnB,GAAI2uF,GACV,GAAIU,EACH,OAAOJ,EAAQI,EAAIrvF,QAGpB,GAAIsvF,EACH,OAxCS,SAAUG,EAASzvF,GAChC,QAASkvF,EAAYO,EAASzvF,EAC/B,CAsCY2vF,CAAQL,EAAItvF,GAGrB,OAAO,CACR,EACAqN,IAAK,SAAUrN,EAAKhB,GACf0vF,GAAY1uF,IAAuB,iBAARA,GAAmC,mBAARA,IACpDovF,IACJA,EAAM,IAAIV,GAEXG,EAAYO,EAAKpvF,EAAKhB,IACZ2vF,GACLU,IACJA,EAAK,IAAIV,GAEVK,EAAQK,EAAIrvF,EAAKhB,KAEZswF,IAMJA,EAAK,CAAEtvF,IAAK,CAAC,EAAG3C,KAAM,OA5Eb,SAAUoyF,EAASzvF,EAAKhB,GACrC,IAAIuc,EAAO2zE,EAAYO,EAASzvF,GAC5Bub,EACHA,EAAKvc,MAAQA,EAGbywF,EAAQpyF,KAAO,CACd2C,IAAKA,EACL3C,KAAMoyF,EAAQpyF,KACd2B,MAAOA,EAGV,CAkEI4wF,CAAQN,EAAItvF,EAAKhB,GAEnB,GAED,OAAOuwF,CACR,kBC3HA,IAAIM,EAAgB,EAAQ,OACxBn5E,EAAW,EAAQ,OACnBlB,EAAS,EAAQ,OACjBs6E,EAAc,EAAQ,OACtBj2E,EAAM,EAAQ,MAEds6D,EAAOhnF,EAEXgnF,EAAKzpB,QAAU,SAAUxoC,EAAMomB,GAE7BpmB,EADmB,iBAATA,EACHrI,EAAI8F,MAAMuC,GAEV1M,EAAO0M,GAKf,IAAI6tE,GAAoE,IAAlD,EAAAl7F,EAAOP,SAASy0D,SAAS5tC,OAAO,aAAsB,QAAU,GAElF4tC,EAAW7mC,EAAK6mC,UAAYgnC,EAC5BvzE,EAAO0F,EAAK8tE,UAAY9tE,EAAK1F,KAC7ByzE,EAAO/tE,EAAK+tE,KACZ7iG,EAAO80B,EAAK90B,MAAQ,IAGpBovB,IAA+B,IAAvBA,EAAK/sB,QAAQ,OACxB+sB,EAAO,IAAMA,EAAO,KAGrB0F,EAAKrI,KAAO2C,EAAQusC,EAAW,KAAOvsC,EAAQ,KAAOyzE,EAAO,IAAMA,EAAO,IAAM7iG,EAC/E80B,EAAK1B,QAAU0B,EAAK1B,QAAU,OAAOslC,cACrC5jC,EAAKk1B,QAAUl1B,EAAKk1B,SAAW,CAAC,EAIhC,IAAIiuC,EAAM,IAAIwK,EAAc3tE,GAG5B,OAFIomB,GACH+8C,EAAI7uF,GAAG,WAAY8xC,GACb+8C,CACR,EAEAlR,EAAK1sE,IAAM,SAAcya,EAAMomB,GAC9B,IAAI+8C,EAAMlR,EAAKzpB,QAAQxoC,EAAMomB,GAE7B,OADA+8C,EAAIxhD,MACGwhD,CACR,EAEAlR,EAAK0b,cAAgBA,EACrB1b,EAAK+b,gBAAkBx5E,EAASw5E,gBAEhC/b,EAAKgc,MAAQ,WAAa,EAC1Bhc,EAAKgc,MAAMC,kBAAoB,EAE/Bjc,EAAKkc,YAAc,IAAIlc,EAAKgc,MAE5Bhc,EAAKmc,aAAeR,EAEpB3b,EAAKoc,QAAU,CACd,WACA,UACA,OACA,SACA,MACA,OACA,OACA,WACA,QACA,aACA,QACA,OACA,SACA,UACA,QACA,OACA,WACA,YACA,QACA,MACA,SACA,SACA,YACA,QACA,SACA,+BC1ED,IAAIpuE,EACJ,SAASquE,IAER,QAAYn4F,IAAR8pB,EAAmB,OAAOA,EAE9B,GAAI,EAAAttB,EAAOutB,eAAgB,CAC1BD,EAAM,IAAI,EAAAttB,EAAOutB,eAIjB,IACCD,EAAInzB,KAAK,MAAO,EAAA6F,EAAO47F,eAAiB,IAAM,sBAC/C,CAAE,MAAMhjG,GACP00B,EAAM,IACP,CACD,MAECA,EAAM,KAEP,OAAOA,CACR,CAEA,SAASuuE,EAAkBzhG,GAC1B,IAAIkzB,EAAMquE,IACV,IAAKruE,EAAK,OAAO,EACjB,IAEC,OADAA,EAAIE,aAAepzB,EACZkzB,EAAIE,eAAiBpzB,CAC7B,CAAE,MAAOxB,GAAI,CACb,OAAO,CACR,CAeA,SAASolC,EAAY7zB,GACpB,MAAwB,mBAAVA,CACf,CAxDA7R,EAAQy2D,MAAQ/wB,EAAW,EAAAh+B,EAAO+uD,QAAU/wB,EAAW,EAAAh+B,EAAO87F,gBAE9DxjG,EAAQyjG,eAAiB/9D,EAAW,EAAAh+B,EAAOg8F,gBAE3C1jG,EAAQ2jG,gBAAkBj+D,EAAW,EAAAh+B,EAAOk8F,iBAuC5C5jG,EAAQ6jG,YAAc7jG,EAAQy2D,OAAS8sC,EAAiB,eAIxDvjG,EAAQ8jG,UAAY9jG,EAAQy2D,OAAS8sC,EAAiB,aACtDvjG,EAAQ+jG,uBAAyB/jG,EAAQy2D,OAAS8sC,EAAiB,2BAInEvjG,EAAQgkG,iBAAmBhkG,EAAQy2D,SAAU4sC,KAAW39D,EAAW29D,IAASW,kBAM5EhvE,EAAM,uDC1DFivE,EAAa,EAAQ,MACrB7b,EAAW,EAAQ,OACnB7+D,EAAW,EAAQ,OACnByiE,EAAS,EAAQ,OAEjB+W,EAAkBx5E,EAASw5E,gBAC3BmB,EAAU36E,EAAS46E,YAgBnBzB,EAAgBliG,EAAOR,QAAU,SAAU+0B,GAC9C,IAYIqvE,EAZA3jG,EAAO8C,KACXyoF,EAAO1D,SAASz/E,KAAKpI,GAErBA,EAAK4jG,MAAQtvE,EACbt0B,EAAK6jG,MAAQ,GACb7jG,EAAK8jG,SAAW,CAAC,EACbxvE,EAAKyvE,MACR/jG,EAAK03F,UAAU,gBAAiB,SAAWnN,EAAOnvD,KAAK9G,EAAKyvE,MAAMv6F,SAAS,WAC5EjH,OAAOuwB,KAAKwB,EAAKk1B,SAASz0C,SAAQ,SAAUjU,GAC3Cd,EAAK03F,UAAU52F,EAAMwzB,EAAKk1B,QAAQ1oD,GACnC,IAGA,IAAIkjG,GAAW,EACf,GAAkB,kBAAd1vE,EAAK43B,MAA6B,mBAAoB53B,IAASkvE,EAAWN,gBAE7Ec,GAAW,EACXL,GAAe,OACT,GAAkB,qBAAdrvE,EAAK43B,KAGfy3C,GAAe,OACT,GAAkB,6BAAdrvE,EAAK43B,KAEfy3C,GAAgBH,EAAWD,qBACrB,IAAKjvE,EAAK43B,MAAsB,YAAd53B,EAAK43B,MAAoC,gBAAd53B,EAAK43B,KAIxD,MAAM,IAAIj0C,MAAM,+BAFhB0rF,GAAe,CAGhB,CACA3jG,EAAKikG,MA9CN,SAAqBN,EAAcK,GAClC,OAAIR,EAAWxtC,OAASguC,EAChB,QACGR,EAAWF,sBACd,0BACGE,EAAWH,SACd,YACGG,EAAWJ,aAAeO,EAC7B,cAEA,MAET,CAkCcO,CAAWP,EAAcK,GACtChkG,EAAKmkG,YAAc,KACnBnkG,EAAKokG,eAAiB,KACtBpkG,EAAKqkG,aAAe,KAEpBrkG,EAAK4I,GAAG,UAAU,WACjB5I,EAAKskG,WACN,GACD,EAEA3c,EAASsa,EAAe1W,EAAO1D,UAE/Boa,EAAcnoF,UAAU49E,UAAY,SAAU52F,EAAMsQ,GACnD,IACImzF,EAAYzjG,EAAKi2B,eAIqB,IAAtCytE,EAAc3iG,QAAQ0iG,KALfzhG,KAQNghG,SAASS,GAAa,CAC1BzjG,KAAMA,EACNsQ,MAAOA,GAET,EAEA6wF,EAAcnoF,UAAU2qF,UAAY,SAAU3jG,GAC7C,IAAIk5D,EAASl3D,KAAKghG,SAAShjG,EAAKi2B,eAChC,OAAIijC,EACIA,EAAO5oD,MACR,IACR,EAEA6wF,EAAcnoF,UAAU4qF,aAAe,SAAU5jG,UACrCgC,KACCghG,SAAShjG,EAAKi2B,cAC3B,EAEAkrE,EAAcnoF,UAAUwqF,UAAY,WACnC,IAAItkG,EAAO8C,KAEX,IAAI9C,EAAK2kG,WAAT,CAEA,IAAIrwE,EAAOt0B,EAAK4jG,MAEZ,YAAatvE,GAAyB,IAAjBA,EAAKgb,SAC7BtvC,EAAK2L,WAAW2oB,EAAKgb,SAGtB,IAAIs1D,EAAa5kG,EAAK8jG,SAClB50F,EAAO,KACS,QAAhBolB,EAAK1B,QAAoC,SAAhB0B,EAAK1B,SAC3B1jB,EAAO,IAAI0mB,KAAK51B,EAAK6jG,MAAO,CACxBxiG,MAAOujG,EAAW,iBAAmB,CAAC,GAAGxzF,OAAS,MAK7D,IAAIyzF,EAAc,GAalB,GAZAtiG,OAAOuwB,KAAK8xE,GAAY7vF,SAAQ,SAAU+vF,GACzC,IAAIhkG,EAAO8jG,EAAWE,GAAShkG,KAC3BsQ,EAAQwzF,EAAWE,GAAS1zF,MAC5B9D,MAAM6I,QAAQ/E,GACjBA,EAAM2D,SAAQ,SAAU7N,GACvB29F,EAAYzuF,KAAK,CAACtV,EAAMoG,GACzB,IAEA29F,EAAYzuF,KAAK,CAACtV,EAAMsQ,GAE1B,IAEmB,UAAfpR,EAAKikG,MAAmB,CAC3B,IAAIrpC,EAAS,KACb,GAAI4oC,EAAWN,gBAAiB,CAC/B,IAAI6B,EAAa,IAAI5B,gBACrBvoC,EAASmqC,EAAWnqC,OACpB56D,EAAKglG,sBAAwBD,EAEzB,mBAAoBzwE,GAAgC,IAAxBA,EAAK2wE,iBACpCjlG,EAAKmkG,YAAc,EAAAl9F,EAAO0E,YAAW,WACpC3L,EAAK+tB,KAAK,kBACN/tB,EAAKglG,uBACRhlG,EAAKglG,sBAAsBr2B,OAC7B,GAAGr6C,EAAK2wE,gBAEV,CAEA,EAAAh+F,EAAO+uD,MAAMh2D,EAAK4jG,MAAM33E,IAAK,CAC5B2G,OAAQ5yB,EAAK4jG,MAAMhxE,OACnB42B,QAASq7C,EACT31F,KAAMA,QAAQzE,EACdyhD,KAAM,OACN4O,YAAaxmC,EAAKumC,gBAAkB,UAAY,cAChDD,OAAQA,IACN10C,MAAK,SAAU4C,GACjB9oB,EAAKklG,eAAiBp8E,EACtB9oB,EAAKmlG,cAAa,GAClBnlG,EAAKolG,UACN,IAAG,SAAU91B,GACZtvE,EAAKmlG,cAAa,GACbnlG,EAAK2kG,YACT3kG,EAAK+tB,KAAK,QAASuhD,EACrB,GACD,KAAO,CACN,IAAI/6C,EAAMv0B,EAAKqlG,KAAO,IAAI,EAAAp+F,EAAOutB,eACjC,IACCD,EAAInzB,KAAKpB,EAAK4jG,MAAMhxE,OAAQ5yB,EAAK4jG,MAAM33E,KAAK,EAC7C,CAAE,MAAOuyC,GAIR,YAHAsrB,EAAQ/oD,UAAS,WAChB/gC,EAAK+tB,KAAK,QAASywC,EACpB,GAED,CAGI,iBAAkBjqC,IACrBA,EAAIE,aAAez0B,EAAKikG,OAErB,oBAAqB1vE,IACxBA,EAAIsmC,kBAAoBvmC,EAAKumC,iBAEX,SAAf76D,EAAKikG,OAAoB,qBAAsB1vE,GAClDA,EAAIgvE,iBAAiB,sCAElB,mBAAoBjvE,IACvBC,EAAI+a,QAAUhb,EAAK2wE,eACnB1wE,EAAI+wE,UAAY,WACftlG,EAAK+tB,KAAK,iBACX,GAGD82E,EAAY9vF,SAAQ,SAAUilD,GAC7BzlC,EAAIgxE,iBAAiBvrC,EAAO,GAAIA,EAAO,GACxC,IAEAh6D,EAAKwlG,UAAY,KACjBjxE,EAAIkxE,mBAAqB,WACxB,OAAQlxE,EAAImxE,YACX,KAAKjC,EAAQkC,QACb,KAAKlC,EAAQmC,KACZ5lG,EAAK6lG,iBAGR,EAGmB,4BAAf7lG,EAAKikG,QACR1vE,EAAIuxE,WAAa,WAChB9lG,EAAK6lG,gBACN,GAGDtxE,EAAIK,QAAU,WACT50B,EAAK2kG,aAET3kG,EAAKmlG,cAAa,GAClBnlG,EAAK+tB,KAAK,QAAS,IAAI9V,MAAM,cAC9B,EAEA,IACCsc,EAAIM,KAAK3lB,EACV,CAAE,MAAOsvD,GAIR,YAHAsrB,EAAQ/oD,UAAS,WAChB/gC,EAAK+tB,KAAK,QAASywC,EACpB,GAED,CACD,CA7HC,CA8HF,EAgBAyjC,EAAcnoF,UAAU+rF,eAAiB,WACxC,IAAI7lG,EAAO8C,KAEX9C,EAAKmlG,cAAa,GAZnB,SAAsB5wE,GACrB,IACC,IAAIpO,EAASoO,EAAIpO,OACjB,OAAmB,OAAXA,GAA8B,IAAXA,CAC5B,CAAE,MAAOtmB,GACR,OAAO,CACR,CACD,CAOMkmG,CAAY/lG,EAAKqlG,QAASrlG,EAAK2kG,aAG/B3kG,EAAKwlG,WACTxlG,EAAKolG,WAENplG,EAAKwlG,UAAUK,eAAe7lG,EAAKmlG,aAAaj7F,KAAKlK,IACtD,EAEAiiG,EAAcnoF,UAAUsrF,SAAW,WAClC,IAAIplG,EAAO8C,KAEP9C,EAAK2kG,aAGT3kG,EAAKwlG,UAAY,IAAIlD,EAAgBtiG,EAAKqlG,KAAMrlG,EAAKklG,eAAgBllG,EAAKikG,MAAOjkG,EAAKmlG,aAAaj7F,KAAKlK,IACxGA,EAAKwlG,UAAU58F,GAAG,SAAS,SAAS41D,GACnCx+D,EAAK+tB,KAAK,QAASywC,EACpB,IAEAx+D,EAAK+tB,KAAK,WAAY/tB,EAAKwlG,WAC5B,EAEAvD,EAAcnoF,UAAUg3E,OAAS,SAAUxsD,EAAO8lD,EAAU1vC,GAChD53C,KAEN+gG,MAAMztF,KAAKkuB,GAChBoW,GACD,EAEAunD,EAAcnoF,UAAUqrF,aAAe,SAAUtqB,GAChD,IAAI76E,EAAO8C,KAEX,EAAAmE,EAAO4E,aAAa7L,EAAKqkG,cACzBrkG,EAAKqkG,aAAe,KAEhBxpB,GACH,EAAA5zE,EAAO4E,aAAa7L,EAAKmkG,aACzBnkG,EAAKmkG,YAAc,MACTnkG,EAAKokG,iBACfpkG,EAAKqkG,aAAe,EAAAp9F,EAAO0E,YAAW,WACrC3L,EAAK+tB,KAAK,UACX,GAAG/tB,EAAKokG,gBAEV,EAEAnC,EAAcnoF,UAAU60D,MAAQszB,EAAcnoF,UAAUhL,QAAU,SAAU0vD,GAC3E,IAAIx+D,EAAO8C,KACX9C,EAAK2kG,YAAa,EAClB3kG,EAAKmlG,cAAa,GACdnlG,EAAKwlG,YACRxlG,EAAKwlG,UAAUb,YAAa,GACzB3kG,EAAKqlG,KACRrlG,EAAKqlG,KAAK12B,QACF3uE,EAAKglG,uBACbhlG,EAAKglG,sBAAsBr2B,QAExBnQ,GACHx+D,EAAK+tB,KAAK,QAASywC,EACrB,EAEAyjC,EAAcnoF,UAAUm8B,IAAM,SAAUrzC,EAAMwnF,EAAU1vC,GAEnC,mBAAT93C,IACV83C,EAAK93C,EACLA,OAAO6H,GAGR8gF,EAAO1D,SAAS/tE,UAAUm8B,IAAI7tC,KANnBtF,KAM8BF,EAAMwnF,EAAU1vC,EAC1D,EAEAunD,EAAcnoF,UAAUnO,WAAa,SAAU2jC,EAASoL,GACvD,IAAI16C,EAAO8C,KAEP43C,GACH16C,EAAKivC,KAAK,UAAWyL,GAEtB16C,EAAKokG,eAAiB90D,EACtBtvC,EAAKmlG,cAAa,EACnB,EAEAlD,EAAcnoF,UAAUksF,aAAe,WAAa,EACpD/D,EAAcnoF,UAAUmsF,WAAa,WAAa,EAClDhE,EAAcnoF,UAAUosF,mBAAqB,WAAa,EAG1D,IAAI1B,EAAgB,CACnB,iBACA,kBACA,iCACA,gCACA,aACA,iBACA,SACA,UACA,OACA,MACA,SACA,OACA,aACA,SACA,UACA,KACA,UACA,oBACA,UACA,yDC9VGhB,EAAa,EAAQ,MACrB7b,EAAW,EAAQ,OACnB4D,EAAS,EAAQ,OAEjBkY,EAAUlkG,EAAQmkG,YAAc,CACnCyC,OAAQ,EACRC,OAAQ,EACRC,iBAAkB,EAClBV,QAAS,EACTC,KAAM,GAGHtD,EAAkB/iG,EAAQ+iG,gBAAkB,SAAU/tE,EAAKzL,EAAUojC,EAAMo6C,GAC9E,IAAItmG,EAAO8C,KAiBX,GAhBAyoF,EAAO3D,SAASx/E,KAAKpI,GAErBA,EAAKikG,MAAQ/3C,EACblsD,EAAKwpD,QAAU,CAAC,EAChBxpD,EAAKumG,WAAa,GAClBvmG,EAAKwmG,SAAW,CAAC,EACjBxmG,EAAKymG,YAAc,GAGnBzmG,EAAK4I,GAAG,OAAO,WAEdkhF,EAAQ/oD,UAAS,WAChB/gC,EAAK+tB,KAAK,QACX,GACD,IAEa,UAATm+B,EAAkB,CAYrB,GAXAlsD,EAAKklG,eAAiBp8E,EAEtB9oB,EAAKisB,IAAMnD,EAASmD,IACpBjsB,EAAK0mG,WAAa59E,EAAS3C,OAC3BnmB,EAAK2mG,cAAgB79E,EAAS89E,WAE9B99E,EAAS0gC,QAAQz0C,SAAQ,SAAUilD,EAAQ5nD,GAC1CpS,EAAKwpD,QAAQp3C,EAAI2kB,eAAiBijC,EAClCh6D,EAAKumG,WAAWnwF,KAAKhE,EAAK4nD,EAC3B,IAEIwpC,EAAWR,eAAgB,CAC9B,IAAI5gE,EAAW,IAAI6gE,eAAe,CACjC3a,MAAO,SAAUhkD,GAEhB,OADAgiE,GAAY,GACL,IAAIt4E,SAAQ,SAAU+E,EAAS6G,GACjC55B,EAAK2kG,WACR/qE,IACS55B,EAAKoW,KAAKm0E,EAAOnvD,KAAKkJ,IAC/BvR,IAEA/yB,EAAK6mG,aAAe9zE,CAEtB,GACD,EACArjB,MAAO,WACN42F,GAAY,GACPtmG,EAAK2kG,YACT3kG,EAAKoW,KAAK,KACZ,EACAu4D,MAAO,SAAUnQ,GAChB8nC,GAAY,GACPtmG,EAAK2kG,YACT3kG,EAAK+tB,KAAK,QAASywC,EACrB,IAGD,IAMC,YALA11C,EAAS5Z,KAAK43F,OAAO1kE,GAAUf,OAAM,SAAUm9B,GAC9C8nC,GAAY,GACPtmG,EAAK2kG,YACT3kG,EAAK+tB,KAAK,QAASywC,EACrB,GAED,CAAE,MAAO3+D,GAAI,CACd,CAEA,IAAIw2B,EAASvN,EAAS5Z,KAAK63F,aAC3B,SAASna,IACRv2D,EAAOu2D,OAAO1mE,MAAK,SAAUyI,GACxB3uB,EAAK2kG,aAET2B,EAAY33E,EAAOksD,MACflsD,EAAOksD,KACV76E,EAAKoW,KAAK,OAGXpW,EAAKoW,KAAKm0E,EAAOnvD,KAAKzM,EAAOvd,QAC7Bw7E,KACD,IAAGvrD,OAAM,SAAUm9B,GAClB8nC,GAAY,GACPtmG,EAAK2kG,YACT3kG,EAAK+tB,KAAK,QAASywC,EACrB,GACD,CACAouB,EACD,MA2BC,GA1BA5sF,EAAKqlG,KAAO9wE,EACZv0B,EAAKgnG,KAAO,EAEZhnG,EAAKisB,IAAMsI,EAAI0yE,YACfjnG,EAAK0mG,WAAanyE,EAAIpO,OACtBnmB,EAAK2mG,cAAgBpyE,EAAIqyE,WACXryE,EAAI2yE,wBAAwBznG,MAAM,SACxCsV,SAAQ,SAAUilD,GACzB,IAAIsK,EAAUtK,EAAOrvC,MAAM,oBAC3B,GAAI25C,EAAS,CACZ,IAAIlyD,EAAMkyD,EAAQ,GAAGvtC,cACT,eAAR3kB,QACuB3H,IAAtBzK,EAAKwpD,QAAQp3C,KAChBpS,EAAKwpD,QAAQp3C,GAAO,IAErBpS,EAAKwpD,QAAQp3C,GAAKgE,KAAKkuD,EAAQ,UACC75D,IAAtBzK,EAAKwpD,QAAQp3C,GACvBpS,EAAKwpD,QAAQp3C,IAAQ,KAAOkyD,EAAQ,GAEpCtkE,EAAKwpD,QAAQp3C,GAAOkyD,EAAQ,GAE7BtkE,EAAKumG,WAAWnwF,KAAKkuD,EAAQ,GAAIA,EAAQ,GAC1C,CACD,IAEAtkE,EAAKmnG,SAAW,kBACX3D,EAAWD,iBAAkB,CACjC,IAAIj+C,EAAWtlD,EAAKumG,WAAW,aAC/B,GAAIjhD,EAAU,CACb,IAAI8hD,EAAe9hD,EAAS36B,MAAM,2BAC9By8E,IACHpnG,EAAKmnG,SAAWC,EAAa,GAAGrwE,cAElC,CACK/2B,EAAKmnG,WACTnnG,EAAKmnG,SAAW,QAClB,CAEF,EAEAxf,EAAS2a,EAAiB/W,EAAO3D,UAEjC0a,EAAgBxoF,UAAU+yE,MAAQ,WACjC,IAEI95D,EAFOjwB,KAEQ+jG,aACf9zE,IAHOjwB,KAIL+jG,aAAe,KACpB9zE,IAEF,EAEAuvE,EAAgBxoF,UAAU+rF,eAAiB,SAAUS,GACpD,IAAItmG,EAAO8C,KAEPyxB,EAAMv0B,EAAKqlG,KAEXv8E,EAAW,KACf,OAAQ9oB,EAAKikG,OACZ,IAAK,OAEJ,IADAn7E,EAAWyL,EAAI8yE,cACFpjG,OAASjE,EAAKgnG,KAAM,CAChC,IAAIM,EAAUx+E,EAASs7C,OAAOpkE,EAAKgnG,MACnC,GAAsB,mBAAlBhnG,EAAKmnG,SAA+B,CAEvC,IADA,IAAI10D,EAAS83C,EAAO8L,MAAMiR,EAAQrjG,QACzB3D,EAAI,EAAGA,EAAIgnG,EAAQrjG,OAAQ3D,IACnCmyC,EAAOnyC,GAA6B,IAAxBgnG,EAAQ3lD,WAAWrhD,GAEhCN,EAAKoW,KAAKq8B,EACX,MACCzyC,EAAKoW,KAAKkxF,EAAStnG,EAAKmnG,UAEzBnnG,EAAKgnG,KAAOl+E,EAAS7kB,MACtB,CACA,MACD,IAAK,cACJ,GAAIswB,EAAImxE,aAAejC,EAAQmC,OAASrxE,EAAIzL,SAC3C,MACDA,EAAWyL,EAAIzL,SACf9oB,EAAKoW,KAAKm0E,EAAOnvD,KAAK,IAAIunD,WAAW75D,KACrC,MACD,IAAK,0BAEJ,GADAA,EAAWyL,EAAIzL,SACXyL,EAAImxE,aAAejC,EAAQkC,UAAY78E,EAC1C,MACD9oB,EAAKoW,KAAKm0E,EAAOnvD,KAAK,IAAIunD,WAAW75D,KACrC,MACD,IAAK,YAEJ,GADAA,EAAWyL,EAAIzL,SACXyL,EAAImxE,aAAejC,EAAQkC,QAC9B,MACD,IAAItvE,EAAS,IAAI,EAAApvB,EAAOsgG,eACxBlxE,EAAOyvE,WAAa,WACfzvE,EAAO1H,OAAO64E,WAAaxnG,EAAKgnG,OACnChnG,EAAKoW,KAAKm0E,EAAOnvD,KAAK,IAAIunD,WAAWtsD,EAAO1H,OAAO7kB,MAAM9J,EAAKgnG,SAC9DhnG,EAAKgnG,KAAO3wE,EAAO1H,OAAO64E,WAE5B,EACAnxE,EAAO3B,OAAS,WACf4xE,GAAY,GACZtmG,EAAKoW,KAAK,KACX,EAEAigB,EAAOoxE,kBAAkB3+E,GAKvB9oB,EAAKqlG,KAAKK,aAAejC,EAAQmC,MAAuB,cAAf5lG,EAAKikG,QACjDqC,GAAY,GACZtmG,EAAKoW,KAAK,MAEZ,0BC9MA,IAAI0yE,EAAQ,CAAC,EAEb,SAASC,EAAgBvtE,EAAMib,EAASuyD,GACjCA,IACHA,EAAO/wE,OAWT,IAAIgxE,EAEJ,SAAUC,GAnBZ,IAAwB7L,EAAUC,EAsB9B,SAAS2L,EAAU1I,EAAME,EAAME,GAC7B,OAAOuI,EAAM9gF,KAAKtF,KAdtB,SAAoBy9E,EAAME,EAAME,GAC9B,MAAuB,iBAAZlqD,EACFA,EAEAA,EAAQ8pD,EAAME,EAAME,EAE/B,CAQ4BwI,CAAW5I,EAAME,EAAME,KAAU79E,IAC3D,CAEA,OA1B8Bw6E,EAoBJ4L,GApBN7L,EAoBL4L,GApBsCnvE,UAAYvX,OAAOsiE,OAAOyY,EAAWxjE,WAAYujE,EAASvjE,UAAU0R,YAAc6xD,EAAUA,EAAShN,UAAYiN,EA0B/J2L,CACT,CARA,CAQED,GAEFC,EAAUnvE,UAAUhZ,KAAOkoF,EAAKloF,KAChCmoF,EAAUnvE,UAAU0B,KAAOA,EAC3BstE,EAAMttE,GAAQytE,CAChB,CAGA,SAASG,EAAMC,EAAUC,GACvB,GAAIh8E,MAAM6I,QAAQkzE,GAAW,CAC3B,IAAInf,EAAMmf,EAASplF,OAKnB,OAJAolF,EAAWA,EAAS3pF,KAAI,SAAUY,GAChC,OAAOoB,OAAOpB,EAChB,IAEI4pE,EAAM,EACD,UAAUjnE,OAAOqmF,EAAO,KAAKrmF,OAAOomF,EAASv/E,MAAM,EAAGogE,EAAM,GAAGtqE,KAAK,MAAO,SAAWypF,EAASnf,EAAM,GAC3F,IAARA,EACF,UAAUjnE,OAAOqmF,EAAO,KAAKrmF,OAAOomF,EAAS,GAAI,QAAQpmF,OAAOomF,EAAS,IAEzE,MAAMpmF,OAAOqmF,EAAO,KAAKrmF,OAAOomF,EAAS,GAEpD,CACE,MAAO,MAAMpmF,OAAOqmF,EAAO,KAAKrmF,OAAOvB,OAAO2nF,GAElD,CA6BAN,EAAgB,yBAAyB,SAAUjoF,EAAMsQ,GACvD,MAAO,cAAgBA,EAAQ,4BAA8BtQ,EAAO,GACtE,GAAGktC,WACH+6C,EAAgB,wBAAwB,SAAUjoF,EAAMuoF,EAAUE,GAEhE,IAAIC,EA/BmBj8D,EAwCnBgiD,EA1BY7tB,EAAaj2C,EA4B7B,GATwB,iBAAb49E,IAjCY97D,EAiCkC,OAAV87D,EAhCpCjlB,OAAyB,EAAU72C,KAAmBA,IAiC/Di8D,EAAa,cACbH,EAAWA,EAASnzE,QAAQ,QAAS,KAErCszE,EAAa,UAhCjB,SAAkB9nC,EAAKn0B,EAAQk8D,GAK7B,YAJiBh/E,IAAbg/E,GAA0BA,EAAW/nC,EAAIz9C,UAC3CwlF,EAAW/nC,EAAIz9C,QAGVy9C,EAAIpzB,UAAUm7D,EAAWl8D,EAAek8D,KAAcl8D,CAC/D,CA+BMm8D,CAAS5oF,EAAM,aAEjByuE,EAAM,OAAOtsE,OAAOnC,EAAM,KAAKmC,OAAOumF,EAAY,KAAKvmF,OAAOmmF,EAAMC,EAAU,aACzE,CACL,IAAIhoF,GA/Be,iBAAVoK,IACTA,EAAQ,GAGNA,EAAQ8hB,GALIm0B,EAgCM5gD,GA3BUmD,SAGS,IAAhCy9C,EAAI7/C,QAwBe,IAxBC4J,GAwBmB,WAAb,YACjC8jE,EAAM,QAAStsE,OAAOnC,EAAM,MAAOmC,OAAO5B,EAAM,KAAK4B,OAAOumF,EAAY,KAAKvmF,OAAOmmF,EAAMC,EAAU,QACtG,CAGA,OADA9Z,EAAO,mBAAmBtsE,cAAcsmF,EAE1C,GAAGv7C,WACH+6C,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAUjoF,GACtD,MAAO,OAASA,EAAO,4BACzB,IACAioF,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAUjoF,GAChD,MAAO,eAAiBA,EAAO,+BACjC,IACAioF,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuC/6C,WACjF+6C,EAAgB,wBAAwB,SAAU/K,GAChD,MAAO,qBAAuBA,CAChC,GAAGhwC,WACH+6C,EAAgB,qCAAsC,oCACtDhpF,EAAOR,QAAQ,EAAQupF,8CCjGnBxK,EAAa/7E,OAAOuwB,MAAQ,SAAUmP,GACxC,IAAInP,EAAO,GACX,IAAK,IAAI1gB,KAAO6vB,EAAKnP,EAAK1c,KAAKhE,GAC/B,OAAO0gB,CACT,EAGA/yB,EAAOR,QAAUuoF,EACjB,IAAIF,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OACvB,EAAQ,MAAR,CAAoBC,EAAQF,GAI1B,IADA,IAAI90D,EAAOwrD,EAAWuJ,EAAS/tE,WACtB5S,EAAI,EAAGA,EAAI4rB,EAAK7uB,OAAQiD,IAAK,CACpC,IAAI0rB,EAASE,EAAK5rB,GACb4gF,EAAOhuE,UAAU8Y,KAASk1D,EAAOhuE,UAAU8Y,GAAUi1D,EAAS/tE,UAAU8Y,GAC/E,CAEF,SAASk1D,EAAOv0E,GACd,KAAMzQ,gBAAgBglF,GAAS,OAAO,IAAIA,EAAOv0E,GACjDq0E,EAASx/E,KAAKtF,KAAMyQ,GACpBs0E,EAASz/E,KAAKtF,KAAMyQ,GACpBzQ,KAAK6mF,eAAgB,EACjBp2E,KACuB,IAArBA,EAAQi1E,WAAoB1lF,KAAK0lF,UAAW,IACvB,IAArBj1E,EAAQ6uB,WAAoBt/B,KAAKs/B,UAAW,IAClB,IAA1B7uB,EAAQo2E,gBACV7mF,KAAK6mF,eAAgB,EACrB7mF,KAAKmsC,KAAK,MAAO05C,IAGvB,CA8BA,SAASA,IAEH7lF,KAAK8mF,eAAeC,OAIxBC,EAAQ/oD,SAASgpD,EAASjnF,KAC5B,CACA,SAASinF,EAAQ/pF,GACfA,EAAKi2C,KACP,CAvCA1zC,OAAOoX,eAAemuE,EAAOhuE,UAAW,wBAAyB,CAI/DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,eAAeI,aAC7B,IAEFznF,OAAOoX,eAAemuE,EAAOhuE,UAAW,iBAAkB,CAIxDF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,gBAAkB9mF,KAAK8mF,eAAeK,WACpD,IAEF1nF,OAAOoX,eAAemuE,EAAOhuE,UAAW,iBAAkB,CAIxDF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,eAAe3lF,MAC7B,IAeF1B,OAAOoX,eAAemuE,EAAOhuE,UAAW,YAAa,CAInDF,YAAY,EACZC,IAAK,WACH,YAA4BpP,IAAxB3H,KAAKonF,qBAAwDz/E,IAAxB3H,KAAK8mF,gBAGvC9mF,KAAKonF,eAAe56E,WAAaxM,KAAK8mF,eAAet6E,SAC9D,EACAmQ,IAAK,SAAarO,QAGY3G,IAAxB3H,KAAKonF,qBAAwDz/E,IAAxB3H,KAAK8mF,iBAM9C9mF,KAAKonF,eAAe56E,UAAY8B,EAChCtO,KAAK8mF,eAAet6E,UAAY8B,EAClC,kCCjGFrR,EAAOR,QAAUyoF,EACjB,IAAID,EAAY,EAAQ,OAExB,SAASC,EAAYz0E,GACnB,KAAMzQ,gBAAgBklF,GAAc,OAAO,IAAIA,EAAYz0E,GAC3Dw0E,EAAU3/E,KAAKtF,KAAMyQ,EACvB,CAJA,EAAQ,MAAR,CAAoBy0E,EAAaD,GAKjCC,EAAYluE,UAAUqwE,WAAa,SAAU7lD,EAAO8lD,EAAU1vC,GAC5DA,EAAG,KAAMpW,EACX,oCCVIwjD,aAHJ/nF,EAAOR,QAAUqoF,EAMjBA,EAASyC,cAAgBA,EAGhB,sBAAT,IAqBI/kE,EApBAglE,EAAkB,SAAyBnL,EAAS99E,GACtD,OAAO89E,EAAQr3E,UAAUzG,GAAM4C,MACjC,EAIIwjF,EAAS,EAAQ,OAGjB8C,EAAS,gBACTC,QAAmC,IAAX,EAAAvjF,EAAyB,EAAAA,EAA2B,oBAAXR,OAAyBA,OAAyB,oBAATzG,KAAuBA,KAAO,CAAC,GAAG2iF,YAAc,WAAa,EASvK8H,EAAY,EAAQ,OAGtBnlE,EADEmlE,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,WAAkB,EAI5B,IAWIC,EACAC,EACAxvD,EAbAyvD,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OAExBC,EADa,EAAQ,OACOA,iBAC1BC,EAAiB,WACnBC,EAAuBD,EAAeC,qBACtCC,EAA4BF,EAAeE,0BAC3CC,EAA6BH,EAAeG,2BAC5CC,EAAqCJ,EAAeI,mCAMtD,EAAQ,MAAR,CAAoBxD,EAAUH,GAC9B,IAAI4D,EAAiBP,EAAYO,eAC7BC,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAY1D,SAASjB,EAAc92E,EAASg4E,EAAQC,GACtC1D,EAASA,GAAU,EAAQ,MAC3Bv0E,EAAUA,GAAW,CAAC,EAOE,kBAAbi4E,IAAwBA,EAAWD,aAAkBzD,GAIhEhlF,KAAK2oF,aAAel4E,EAAQk4E,WACxBD,IAAU1oF,KAAK2oF,WAAa3oF,KAAK2oF,cAAgBl4E,EAAQm4E,oBAI7D5oF,KAAKknF,cAAgBe,EAAiBjoF,KAAMyQ,EAAS,wBAAyBi4E,GAK9E1oF,KAAK2vC,OAAS,IAAIo4C,EAClB/nF,KAAKmB,OAAS,EACdnB,KAAK6oF,MAAQ,KACb7oF,KAAK8oF,WAAa,EAClB9oF,KAAK+oF,QAAU,KACf/oF,KAAK+mF,OAAQ,EACb/mF,KAAKgpF,YAAa,EAClBhpF,KAAKipF,SAAU,EAMfjpF,KAAKkpF,MAAO,EAIZlpF,KAAKmpF,cAAe,EACpBnpF,KAAKopF,iBAAkB,EACvBppF,KAAKqpF,mBAAoB,EACzBrpF,KAAKspF,iBAAkB,EACvBtpF,KAAKupF,QAAS,EAGdvpF,KAAKwpF,WAAkC,IAAtB/4E,EAAQ+4E,UAGzBxpF,KAAKypF,cAAgBh5E,EAAQg5E,YAG7BzpF,KAAKwM,WAAY,EAKjBxM,KAAK0pF,gBAAkBj5E,EAAQi5E,iBAAmB,OAGlD1pF,KAAK2pF,WAAa,EAGlB3pF,KAAK4pF,aAAc,EACnB5pF,KAAK6pF,QAAU,KACf7pF,KAAKsnF,SAAW,KACZ72E,EAAQ62E,WACLO,IAAeA,EAAgB,YACpC7nF,KAAK6pF,QAAU,IAAIhC,EAAcp3E,EAAQ62E,UACzCtnF,KAAKsnF,SAAW72E,EAAQ62E,SAE5B,CACA,SAASxC,EAASr0E,GAEhB,GADAu0E,EAASA,GAAU,EAAQ,QACrBhlF,gBAAgB8kF,GAAW,OAAO,IAAIA,EAASr0E,GAIrD,IAAIi4E,EAAW1oF,gBAAgBglF,EAC/BhlF,KAAKonF,eAAiB,IAAIG,EAAc92E,EAASzQ,KAAM0oF,GAGvD1oF,KAAK0lF,UAAW,EACZj1E,IAC0B,mBAAjBA,EAAQq5E,OAAqB9pF,KAAK+pF,MAAQt5E,EAAQq5E,MAC9B,mBAApBr5E,EAAQzE,UAAwBhM,KAAKgqF,SAAWv5E,EAAQzE,UAErE24E,EAAOr/E,KAAKtF,KACd,CAwDA,SAASiqF,EAAiBxB,EAAQjnD,EAAO8lD,EAAU4C,EAAYC,GAC7D3nE,EAAM,mBAAoBgf,GAC1B,IAKM67C,EALF/mD,EAAQmyD,EAAOrB,eACnB,GAAc,OAAV5lD,EACFlL,EAAM2yD,SAAU,EAuNpB,SAAoBR,EAAQnyD,GAE1B,GADA9T,EAAM,eACF8T,EAAMywD,MAAV,CACA,GAAIzwD,EAAMuzD,QAAS,CACjB,IAAIroD,EAAQlL,EAAMuzD,QAAQ12C,MACtB3R,GAASA,EAAMrgC,SACjBm1B,EAAMqZ,OAAOr8B,KAAKkuB,GAClBlL,EAAMn1B,QAAUm1B,EAAMqyD,WAAa,EAAInnD,EAAMrgC,OAEjD,CACAm1B,EAAMywD,OAAQ,EACVzwD,EAAM4yD,KAIRkB,EAAa3B,IAGbnyD,EAAM6yD,cAAe,EAChB7yD,EAAM8yD,kBACT9yD,EAAM8yD,iBAAkB,EACxBiB,EAAc5B,IAnBK,CAsBzB,CA9OI6B,CAAW7B,EAAQnyD,QAInB,GADK6zD,IAAgB9M,EA6CzB,SAAsB/mD,EAAOkL,GAC3B,IAAI67C,EAjPiBl+C,EAqPrB,OArPqBA,EAkPFqC,EAjPZimD,EAAO9vB,SAASx4B,IAAQA,aAAeuoD,GAiPA,iBAAVlmD,QAAgC75B,IAAV65B,GAAwBlL,EAAMqyD,aACtFtL,EAAK,IAAI8K,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAe3mD,IAEtE67C,CACT,CAnD8BkN,CAAaj0D,EAAOkL,IAC1C67C,EACFkL,EAAeE,EAAQpL,QAClB,GAAI/mD,EAAMqyD,YAAcnnD,GAASA,EAAMrgC,OAAS,EAIrD,GAHqB,iBAAVqgC,GAAuBlL,EAAMqyD,YAAclpF,OAAO82D,eAAe/0B,KAAWimD,EAAOzwE,YAC5FwqB,EA3MR,SAA6BA,GAC3B,OAAOimD,EAAOnvD,KAAKkJ,EACrB,CAyMgBgpD,CAAoBhpD,IAE1B0oD,EACE5zD,EAAM0yD,WAAYT,EAAeE,EAAQ,IAAIH,GAA2CmC,EAAShC,EAAQnyD,EAAOkL,GAAO,QACtH,GAAIlL,EAAMywD,MACfwB,EAAeE,EAAQ,IAAIL,OACtB,IAAI9xD,EAAM9pB,UACf,OAAO,EAEP8pB,EAAM2yD,SAAU,EACZ3yD,EAAMuzD,UAAYvC,GACpB9lD,EAAQlL,EAAMuzD,QAAQrE,MAAMhkD,GACxBlL,EAAMqyD,YAA+B,IAAjBnnD,EAAMrgC,OAAcspF,EAAShC,EAAQnyD,EAAOkL,GAAO,GAAYkpD,EAAcjC,EAAQnyD,IAE7Gm0D,EAAShC,EAAQnyD,EAAOkL,GAAO,EAEnC,MACU0oD,IACV5zD,EAAM2yD,SAAU,EAChByB,EAAcjC,EAAQnyD,IAO1B,OAAQA,EAAMywD,QAAUzwD,EAAMn1B,OAASm1B,EAAM4wD,eAAkC,IAAjB5wD,EAAMn1B,OACtE,CACA,SAASspF,EAAShC,EAAQnyD,EAAOkL,EAAO0oD,GAClC5zD,EAAMyyD,SAA4B,IAAjBzyD,EAAMn1B,SAAiBm1B,EAAM4yD,MAChD5yD,EAAMqzD,WAAa,EACnBlB,EAAOx9D,KAAK,OAAQuW,KAGpBlL,EAAMn1B,QAAUm1B,EAAMqyD,WAAa,EAAInnD,EAAMrgC,OACzC+oF,EAAY5zD,EAAMqZ,OAAOzW,QAAQsI,GAAYlL,EAAMqZ,OAAOr8B,KAAKkuB,GAC/DlL,EAAM6yD,cAAciB,EAAa3B,IAEvCiC,EAAcjC,EAAQnyD,EACxB,CA3GA72B,OAAOoX,eAAeiuE,EAAS9tE,UAAW,YAAa,CAIrDF,YAAY,EACZC,IAAK,WACH,YAA4BpP,IAAxB3H,KAAKonF,gBAGFpnF,KAAKonF,eAAe56E,SAC7B,EACAmQ,IAAK,SAAarO,GAGXtO,KAAKonF,iBAMVpnF,KAAKonF,eAAe56E,UAAY8B,EAClC,IAEFw2E,EAAS9tE,UAAUhL,QAAUg8E,EAAYh8E,QACzC84E,EAAS9tE,UAAU2zE,WAAa3C,EAAY4C,UAC5C9F,EAAS9tE,UAAUgzE,SAAW,SAAUtuB,EAAK9jB,GAC3CA,EAAG8jB,EACL,EAMAopB,EAAS9tE,UAAU1D,KAAO,SAAUkuB,EAAO8lD,GACzC,IACI6C,EADA7zD,EAAQt2B,KAAKonF,eAcjB,OAZK9wD,EAAMqyD,WAUTwB,GAAiB,EATI,iBAAV3oD,KACT8lD,EAAWA,GAAYhxD,EAAMozD,mBACZpzD,EAAMgxD,WACrB9lD,EAAQimD,EAAOnvD,KAAKkJ,EAAO8lD,GAC3BA,EAAW,IAEb6C,GAAiB,GAKdF,EAAiBjqF,KAAMwhC,EAAO8lD,GAAU,EAAO6C,EACxD,EAGArF,EAAS9tE,UAAUkiB,QAAU,SAAUsI,GACrC,OAAOyoD,EAAiBjqF,KAAMwhC,EAAO,MAAM,GAAM,EACnD,EA6DAsjD,EAAS9tE,UAAU6zE,SAAW,WAC5B,OAAuC,IAAhC7qF,KAAKonF,eAAe2B,OAC7B,EAGAjE,EAAS9tE,UAAU8zE,YAAc,SAAUC,GACpClD,IAAeA,EAAgB,YACpC,IAAIgC,EAAU,IAAIhC,EAAckD,GAChC/qF,KAAKonF,eAAeyC,QAAUA,EAE9B7pF,KAAKonF,eAAeE,SAAWtnF,KAAKonF,eAAeyC,QAAQvC,SAK3D,IAFA,IAAIvpF,EAAIiC,KAAKonF,eAAez3C,OAAOz6B,KAC/B81E,EAAU,GACD,OAANjtF,GACLitF,GAAWnB,EAAQrE,MAAMznF,EAAE+B,MAC3B/B,EAAIA,EAAE4O,KAKR,OAHA3M,KAAKonF,eAAez3C,OAAO3mC,QACX,KAAZgiF,GAAgBhrF,KAAKonF,eAAez3C,OAAOr8B,KAAK03E,GACpDhrF,KAAKonF,eAAejmF,OAAS6pF,EAAQ7pF,OAC9BnB,IACT,EAGA,IAAIirF,EAAU,WAqBd,SAASC,EAAcztF,EAAG64B,GACxB,OAAI74B,GAAK,GAAsB,IAAjB64B,EAAMn1B,QAAgBm1B,EAAMywD,MAAc,EACpDzwD,EAAMqyD,WAAmB,EACzBlrF,GAAMA,EAEJ64B,EAAMyyD,SAAWzyD,EAAMn1B,OAAem1B,EAAMqZ,OAAOz6B,KAAKpV,KAAKqB,OAAmBm1B,EAAMn1B,QAGxF1D,EAAI64B,EAAM4wD,gBAAe5wD,EAAM4wD,cA5BrC,SAAiCzpF,GAe/B,OAdIA,GAAKwtF,EAEPxtF,EAAIwtF,GAIJxtF,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAEKA,CACT,CAYqD0tF,CAAwB1tF,IACvEA,GAAK64B,EAAMn1B,OAAe1D,EAEzB64B,EAAMywD,MAIJzwD,EAAMn1B,QAHXm1B,EAAM6yD,cAAe,EACd,GAGX,CA6HA,SAASiB,EAAa3B,GACpB,IAAInyD,EAAQmyD,EAAOrB,eACnB5kE,EAAM,eAAgB8T,EAAM6yD,aAAc7yD,EAAM8yD,iBAChD9yD,EAAM6yD,cAAe,EAChB7yD,EAAM8yD,kBACT5mE,EAAM,eAAgB8T,EAAMyyD,SAC5BzyD,EAAM8yD,iBAAkB,EACxBpC,EAAQ/oD,SAASosD,EAAe5B,GAEpC,CACA,SAAS4B,EAAc5B,GACrB,IAAInyD,EAAQmyD,EAAOrB,eACnB5kE,EAAM,gBAAiB8T,EAAM9pB,UAAW8pB,EAAMn1B,OAAQm1B,EAAMywD,OACvDzwD,EAAM9pB,YAAc8pB,EAAMn1B,SAAUm1B,EAAMywD,QAC7C0B,EAAOx9D,KAAK,YACZqL,EAAM8yD,iBAAkB,GAS1B9yD,EAAM6yD,cAAgB7yD,EAAMyyD,UAAYzyD,EAAMywD,OAASzwD,EAAMn1B,QAAUm1B,EAAM4wD,cAC7EkE,EAAK3C,EACP,CAQA,SAASiC,EAAcjC,EAAQnyD,GACxBA,EAAMszD,cACTtzD,EAAMszD,aAAc,EACpB5C,EAAQ/oD,SAASotD,EAAgB5C,EAAQnyD,GAE7C,CACA,SAAS+0D,EAAe5C,EAAQnyD,GAwB9B,MAAQA,EAAM2yD,UAAY3yD,EAAMywD,QAAUzwD,EAAMn1B,OAASm1B,EAAM4wD,eAAiB5wD,EAAMyyD,SAA4B,IAAjBzyD,EAAMn1B,SAAe,CACpH,IAAIimE,EAAM9wC,EAAMn1B,OAGhB,GAFAqhB,EAAM,wBACNimE,EAAOqB,KAAK,GACR1iB,IAAQ9wC,EAAMn1B,OAEhB,KACJ,CACAm1B,EAAMszD,aAAc,CACtB,CAgPA,SAAS0B,EAAwBpuF,GAC/B,IAAIo5B,EAAQp5B,EAAKkqF,eACjB9wD,EAAM+yD,kBAAoBnsF,EAAK+/E,cAAc,YAAc,EACvD3mD,EAAMgzD,kBAAoBhzD,EAAMizD,OAGlCjzD,EAAMyyD,SAAU,EAGP7rF,EAAK+/E,cAAc,QAAU,GACtC//E,EAAKyoF,QAET,CACA,SAAS4F,EAAiBruF,GACxBslB,EAAM,4BACNtlB,EAAK4sF,KAAK,EACZ,CAuBA,SAAS0B,EAAQ/C,EAAQnyD,GACvB9T,EAAM,SAAU8T,EAAM2yD,SACjB3yD,EAAM2yD,SACTR,EAAOqB,KAAK,GAEdxzD,EAAMgzD,iBAAkB,EACxBb,EAAOx9D,KAAK,UACZmgE,EAAK3C,GACDnyD,EAAMyyD,UAAYzyD,EAAM2yD,SAASR,EAAOqB,KAAK,EACnD,CAWA,SAASsB,EAAK3C,GACZ,IAAInyD,EAAQmyD,EAAOrB,eAEnB,IADA5kE,EAAM,OAAQ8T,EAAMyyD,SACbzyD,EAAMyyD,SAA6B,OAAlBN,EAAOqB,SACjC,CAmHA,SAAS2B,EAAShuF,EAAG64B,GAEnB,OAAqB,IAAjBA,EAAMn1B,OAAqB,MAE3Bm1B,EAAMqyD,WAAYrqD,EAAMhI,EAAMqZ,OAAO4M,SAAkB9+C,GAAKA,GAAK64B,EAAMn1B,QAEtDm9B,EAAfhI,EAAMuzD,QAAevzD,EAAMqZ,OAAO7yC,KAAK,IAAqC,IAAxBw5B,EAAMqZ,OAAOxuC,OAAoBm1B,EAAMqZ,OAAO0yC,QAAmB/rD,EAAMqZ,OAAOxvC,OAAOm2B,EAAMn1B,QACnJm1B,EAAMqZ,OAAO3mC,SAGbs1B,EAAMhI,EAAMqZ,OAAO+7C,QAAQjuF,EAAG64B,EAAMuzD,SAE/BvrD,GATP,IAAIA,CAUN,CACA,SAASqtD,EAAYlD,GACnB,IAAInyD,EAAQmyD,EAAOrB,eACnB5kE,EAAM,cAAe8T,EAAM0yD,YACtB1yD,EAAM0yD,aACT1yD,EAAMywD,OAAQ,EACdC,EAAQ/oD,SAAS2tD,EAAet1D,EAAOmyD,GAE3C,CACA,SAASmD,EAAct1D,EAAOmyD,GAI5B,GAHAjmE,EAAM,gBAAiB8T,EAAM0yD,WAAY1yD,EAAMn1B,SAG1Cm1B,EAAM0yD,YAA+B,IAAjB1yD,EAAMn1B,SAC7Bm1B,EAAM0yD,YAAa,EACnBP,EAAO/C,UAAW,EAClB+C,EAAOx9D,KAAK,OACRqL,EAAMmzD,aAAa,CAGrB,IAAIoC,EAASpD,EAAO3B,iBACf+E,GAAUA,EAAOpC,aAAeoC,EAAO1G,WAC1CsD,EAAOz8E,SAEX,CAEJ,CASA,SAASjN,EAAQ+sF,EAAI/mF,GACnB,IAAK,IAAIvH,EAAI,EAAGI,EAAIkuF,EAAG3qF,OAAQ3D,EAAII,EAAGJ,IACpC,GAAIsuF,EAAGtuF,KAAOuH,EAAG,OAAOvH,EAE1B,OAAQ,CACV,CA1pBAsnF,EAAS9tE,UAAU8yE,KAAO,SAAUrsF,GAClC+kB,EAAM,OAAQ/kB,GACdA,EAAI6rC,SAAS7rC,EAAG,IAChB,IAAI64B,EAAQt2B,KAAKonF,eACb2E,EAAQtuF,EAMZ,GALU,IAANA,IAAS64B,EAAM8yD,iBAAkB,GAK3B,IAAN3rF,GAAW64B,EAAM6yD,gBAA0C,IAAxB7yD,EAAM4wD,cAAsB5wD,EAAMn1B,QAAUm1B,EAAM4wD,cAAgB5wD,EAAMn1B,OAAS,IAAMm1B,EAAMywD,OAGlI,OAFAvkE,EAAM,qBAAsB8T,EAAMn1B,OAAQm1B,EAAMywD,OAC3B,IAAjBzwD,EAAMn1B,QAAgBm1B,EAAMywD,MAAO4E,EAAY3rF,MAAWoqF,EAAapqF,MACpE,KAKT,GAAU,KAHVvC,EAAIytF,EAAcztF,EAAG64B,KAGNA,EAAMywD,MAEnB,OADqB,IAAjBzwD,EAAMn1B,QAAcwqF,EAAY3rF,MAC7B,KA0BT,IA2BIs+B,EA3BA0tD,EAAS11D,EAAM6yD,aA6CnB,OA5CA3mE,EAAM,gBAAiBwpE,IAGF,IAAjB11D,EAAMn1B,QAAgBm1B,EAAMn1B,OAAS1D,EAAI64B,EAAM4wD,gBAEjD1kE,EAAM,6BADNwpE,GAAS,GAMP11D,EAAMywD,OAASzwD,EAAM2yD,QAEvBzmE,EAAM,mBADNwpE,GAAS,GAEAA,IACTxpE,EAAM,WACN8T,EAAM2yD,SAAU,EAChB3yD,EAAM4yD,MAAO,EAEQ,IAAjB5yD,EAAMn1B,SAAcm1B,EAAM6yD,cAAe,GAE7CnpF,KAAK+pF,MAAMzzD,EAAM4wD,eACjB5wD,EAAM4yD,MAAO,EAGR5yD,EAAM2yD,UAASxrF,EAAIytF,EAAca,EAAOz1D,KAInC,QADDgI,EAAP7gC,EAAI,EAASguF,EAAShuF,EAAG64B,GAAkB,OAE7CA,EAAM6yD,aAAe7yD,EAAMn1B,QAAUm1B,EAAM4wD,cAC3CzpF,EAAI,IAEJ64B,EAAMn1B,QAAU1D,EAChB64B,EAAMqzD,WAAa,GAEA,IAAjBrzD,EAAMn1B,SAGHm1B,EAAMywD,QAAOzwD,EAAM6yD,cAAe,GAGnC4C,IAAUtuF,GAAK64B,EAAMywD,OAAO4E,EAAY3rF,OAElC,OAARs+B,GAAct+B,KAAKirB,KAAK,OAAQqT,GAC7BA,CACT,EA6GAwmD,EAAS9tE,UAAU+yE,MAAQ,SAAUtsF,GACnC8qF,EAAevoF,KAAM,IAAIqoF,EAA2B,WACtD,EACAvD,EAAS9tE,UAAUquE,KAAO,SAAUC,EAAM2G,GACxC,IAAI3nC,EAAMtkD,KACNs2B,EAAQt2B,KAAKonF,eACjB,OAAQ9wD,EAAMwyD,YACZ,KAAK,EACHxyD,EAAMuyD,MAAQvD,EACd,MACF,KAAK,EACHhvD,EAAMuyD,MAAQ,CAACvyD,EAAMuyD,MAAOvD,GAC5B,MACF,QACEhvD,EAAMuyD,MAAMv1E,KAAKgyE,GAGrBhvD,EAAMwyD,YAAc,EACpBtmE,EAAM,wBAAyB8T,EAAMwyD,WAAYmD,GACjD,IACIC,EADUD,IAA6B,IAAjBA,EAAS94C,KAAkBmyC,IAAS0B,EAAQmF,QAAU7G,IAAS0B,EAAQoF,OACrEC,EAARxG,EAYpB,SAASA,IACPrjE,EAAM,SACN8iE,EAAKnyC,KACP,CAdI7c,EAAM0yD,WAAYhC,EAAQ/oD,SAASiuD,GAAY5nC,EAAInY,KAAK,MAAO+/C,GACnE5G,EAAKx/E,GAAG,UACR,SAASwmF,EAAS5G,EAAU6G,GAC1B/pE,EAAM,YACFkjE,IAAaphC,GACXioC,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EAkB5BhqE,EAAM,WAEN8iE,EAAK9I,eAAe,QAASsJ,GAC7BR,EAAK9I,eAAe,SAAUiQ,GAC9BnH,EAAK9I,eAAe,QAASiJ,GAC7BH,EAAK9I,eAAe,QAAS1qD,GAC7BwzD,EAAK9I,eAAe,SAAU8P,GAC9BhoC,EAAIk4B,eAAe,MAAOqJ,GAC1BvhC,EAAIk4B,eAAe,MAAO6P,GAC1B/nC,EAAIk4B,eAAe,OAAQ+I,GAC3BmH,GAAY,GAORp2D,EAAMqzD,YAAgBrE,EAAKwB,iBAAkBxB,EAAKwB,eAAe6F,WAAYlH,IA/BnF,IAUA,IAAIA,EAgFN,SAAqBnhC,GACnB,OAAO,WACL,IAAIhuB,EAAQguB,EAAI8iC,eAChB5kE,EAAM,cAAe8T,EAAMqzD,YACvBrzD,EAAMqzD,YAAYrzD,EAAMqzD,aACH,IAArBrzD,EAAMqzD,YAAoBnC,EAAgBljC,EAAK,UACjDhuB,EAAMyyD,SAAU,EAChBqC,EAAK9mC,GAET,CACF,CA1FgBsoC,CAAYtoC,GAC1BghC,EAAKx/E,GAAG,QAAS2/E,GACjB,IAAIiH,GAAY,EAsBhB,SAASnH,EAAO/jD,GACdhf,EAAM,UACN,IAAI8b,EAAMgnD,EAAKE,MAAMhkD,GACrBhf,EAAM,aAAc8b,IACR,IAARA,KAKwB,IAArBhI,EAAMwyD,YAAoBxyD,EAAMuyD,QAAUvD,GAAQhvD,EAAMwyD,WAAa,IAAqC,IAAhC/pF,EAAQu3B,EAAMuyD,MAAOvD,MAAkBoH,IACpHlqE,EAAM,8BAA+B8T,EAAMqzD,YAC3CrzD,EAAMqzD,cAERrlC,EAAIx7C,QAER,CAIA,SAASgpB,EAAQurD,GACf76D,EAAM,UAAW66D,GACjBgP,IACA/G,EAAK9I,eAAe,QAAS1qD,GACU,IAAnC01D,EAAgBlC,EAAM,UAAgBiD,EAAejD,EAAMjI,EACjE,CAMA,SAASyI,IACPR,EAAK9I,eAAe,SAAUiQ,GAC9BJ,GACF,CAEA,SAASI,IACPjqE,EAAM,YACN8iE,EAAK9I,eAAe,QAASsJ,GAC7BuG,GACF,CAEA,SAASA,IACP7pE,EAAM,UACN8hC,EAAI+nC,OAAO/G,EACb,CAUA,OAvDAhhC,EAAIx+C,GAAG,OAAQy/E,GAniBjB,SAAyBlJ,EAAS1jE,EAAOpJ,GAGvC,GAAuC,mBAA5B8sE,EAAQ4B,gBAAgC,OAAO5B,EAAQ4B,gBAAgBtlE,EAAOpJ,GAMpF8sE,EAAQX,SAAYW,EAAQX,QAAQ/iE,GAAuCnO,MAAM6I,QAAQgpE,EAAQX,QAAQ/iE,IAAS0jE,EAAQX,QAAQ/iE,GAAOugB,QAAQ3pB,GAAS8sE,EAAQX,QAAQ/iE,GAAS,CAACpJ,EAAI8sE,EAAQX,QAAQ/iE,IAA5J0jE,EAAQv2E,GAAG6S,EAAOpJ,EACrE,CAqjBE0uE,CAAgBqH,EAAM,QAASxzD,GAO/BwzD,EAAKn5C,KAAK,QAAS25C,GAMnBR,EAAKn5C,KAAK,SAAUsgD,GAOpBnH,EAAKr6D,KAAK,OAAQq5B,GAGbhuB,EAAMyyD,UACTvmE,EAAM,eACN8hC,EAAIqhC,UAECL,CACT,EAYAR,EAAS9tE,UAAUq1E,OAAS,SAAU/G,GACpC,IAAIhvD,EAAQt2B,KAAKonF,eACbmF,EAAa,CACfC,YAAY,GAId,GAAyB,IAArBl2D,EAAMwyD,WAAkB,OAAO9oF,KAGnC,GAAyB,IAArBs2B,EAAMwyD,WAER,OAAIxD,GAAQA,IAAShvD,EAAMuyD,QACtBvD,IAAMA,EAAOhvD,EAAMuyD,OAGxBvyD,EAAMuyD,MAAQ,KACdvyD,EAAMwyD,WAAa,EACnBxyD,EAAMyyD,SAAU,EACZzD,GAAMA,EAAKr6D,KAAK,SAAUjrB,KAAMusF,IAPKvsF,KAa3C,IAAKslF,EAAM,CAET,IAAIuH,EAAQv2D,EAAMuyD,MACdzhB,EAAM9wC,EAAMwyD,WAChBxyD,EAAMuyD,MAAQ,KACdvyD,EAAMwyD,WAAa,EACnBxyD,EAAMyyD,SAAU,EAChB,IAAK,IAAIvrF,EAAI,EAAGA,EAAI4pE,EAAK5pE,IAAKqvF,EAAMrvF,GAAGytB,KAAK,SAAUjrB,KAAM,CAC1DwsF,YAAY,IAEd,OAAOxsF,IACT,CAGA,IAAI8lB,EAAQ/mB,EAAQu3B,EAAMuyD,MAAOvD,GACjC,OAAe,IAAXx/D,IACJwQ,EAAMuyD,MAAM/zE,OAAOgR,EAAO,GAC1BwQ,EAAMwyD,YAAc,EACK,IAArBxyD,EAAMwyD,aAAkBxyD,EAAMuyD,MAAQvyD,EAAMuyD,MAAM,IACtDvD,EAAKr6D,KAAK,SAAUjrB,KAAMusF,IAJDvsF,IAM3B,EAIA8kF,EAAS9tE,UAAUlR,GAAK,SAAUgnF,EAAIv9E,GACpC,IAAIssD,EAAM8oB,EAAO3tE,UAAUlR,GAAGR,KAAKtF,KAAM8sF,EAAIv9E,GACzC+mB,EAAQt2B,KAAKonF,eAqBjB,MApBW,SAAP0F,GAGFx2D,EAAM+yD,kBAAoBrpF,KAAKi9E,cAAc,YAAc,GAGrC,IAAlB3mD,EAAMyyD,SAAmB/oF,KAAK2lF,UAClB,aAAPmH,IACJx2D,EAAM0yD,YAAe1yD,EAAM+yD,oBAC9B/yD,EAAM+yD,kBAAoB/yD,EAAM6yD,cAAe,EAC/C7yD,EAAMyyD,SAAU,EAChBzyD,EAAM8yD,iBAAkB,EACxB5mE,EAAM,cAAe8T,EAAMn1B,OAAQm1B,EAAM2yD,SACrC3yD,EAAMn1B,OACRipF,EAAapqF,MACHs2B,EAAM2yD,SAChBjC,EAAQ/oD,SAASstD,EAAkBvrF,QAIlC67D,CACT,EACAipB,EAAS9tE,UAAUgnE,YAAc8G,EAAS9tE,UAAUlR,GACpDg/E,EAAS9tE,UAAUwlE,eAAiB,SAAUsQ,EAAIv9E,GAChD,IAAIssD,EAAM8oB,EAAO3tE,UAAUwlE,eAAel3E,KAAKtF,KAAM8sF,EAAIv9E,GAUzD,MATW,aAAPu9E,GAOF9F,EAAQ/oD,SAASqtD,EAAyBtrF,MAErC67D,CACT,EACAipB,EAAS9tE,UAAUqnE,mBAAqB,SAAUyO,GAChD,IAAIjxB,EAAM8oB,EAAO3tE,UAAUqnE,mBAAmB1uE,MAAM3P,KAAMkB,WAU1D,MATW,aAAP4rF,QAA4BnlF,IAAPmlF,GAOvB9F,EAAQ/oD,SAASqtD,EAAyBtrF,MAErC67D,CACT,EAqBAipB,EAAS9tE,UAAU2uE,OAAS,WAC1B,IAAIrvD,EAAQt2B,KAAKonF,eAUjB,OATK9wD,EAAMyyD,UACTvmE,EAAM,UAIN8T,EAAMyyD,SAAWzyD,EAAM+yD,kBAM3B,SAAgBZ,EAAQnyD,GACjBA,EAAMgzD,kBACThzD,EAAMgzD,iBAAkB,EACxBtC,EAAQ/oD,SAASutD,EAAS/C,EAAQnyD,GAEtC,CAVIqvD,CAAO3lF,KAAMs2B,IAEfA,EAAMizD,QAAS,EACRvpF,IACT,EAiBA8kF,EAAS9tE,UAAUlO,MAAQ,WAQzB,OAPA0Z,EAAM,wBAAyBxiB,KAAKonF,eAAe2B,UACf,IAAhC/oF,KAAKonF,eAAe2B,UACtBvmE,EAAM,SACNxiB,KAAKonF,eAAe2B,SAAU,EAC9B/oF,KAAKirB,KAAK,UAEZjrB,KAAKonF,eAAemC,QAAS,EACtBvpF,IACT,EAUA8kF,EAAS9tE,UAAU+1E,KAAO,SAAUtE,GAClC,IAAIt+C,EAAQnqC,KACRs2B,EAAQt2B,KAAKonF,eACbmC,GAAS,EAwBb,IAAK,IAAI/rF,KAvBTirF,EAAO3iF,GAAG,OAAO,WAEf,GADA0c,EAAM,eACF8T,EAAMuzD,UAAYvzD,EAAMywD,MAAO,CACjC,IAAIvlD,EAAQlL,EAAMuzD,QAAQ12C,MACtB3R,GAASA,EAAMrgC,QAAQgpC,EAAM72B,KAAKkuB,EACxC,CACA2I,EAAM72B,KAAK,KACb,IACAm1E,EAAO3iF,GAAG,QAAQ,SAAU07B,GAC1Bhf,EAAM,gBACF8T,EAAMuzD,UAASroD,EAAQlL,EAAMuzD,QAAQrE,MAAMhkD,IAG3ClL,EAAMqyD,YAAc,MAACnnD,IAAyDlL,EAAMqyD,YAAgBnnD,GAAUA,EAAMrgC,UAC9GgpC,EAAM72B,KAAKkuB,KAEnB+nD,GAAS,EACTd,EAAO3/E,SAEX,IAIc2/E,OACI9gF,IAAZ3H,KAAKxC,IAAyC,mBAAdirF,EAAOjrF,KACzCwC,KAAKxC,GAAK,SAAoBsyB,GAC5B,OAAO,WACL,OAAO24D,EAAO34D,GAAQngB,MAAM84E,EAAQvnF,UACtC,CACF,CAJU,CAIR1D,IAKN,IAAK,IAAIC,EAAI,EAAGA,EAAI+qF,EAAarnF,OAAQ1D,IACvCgrF,EAAO3iF,GAAG0iF,EAAa/qF,GAAIuC,KAAKirB,KAAK7jB,KAAKpH,KAAMwoF,EAAa/qF,KAY/D,OAPAuC,KAAK+pF,MAAQ,SAAUtsF,GACrB+kB,EAAM,gBAAiB/kB,GACnB8rF,IACFA,GAAS,EACTd,EAAO9C,SAEX,EACO3lF,IACT,EACsB,mBAAXkX,SACT4tE,EAAS9tE,UAAUE,OAAO81E,eAAiB,WAIzC,YAH0CrlF,IAAtCmgF,IACFA,EAAoC,EAAQ,QAEvCA,EAAkC9nF,KAC3C,GAEFP,OAAOoX,eAAeiuE,EAAS9tE,UAAW,wBAAyB,CAIjEF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAKonF,eAAeF,aAC7B,IAEFznF,OAAOoX,eAAeiuE,EAAS9tE,UAAW,iBAAkB,CAI1DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAKonF,gBAAkBpnF,KAAKonF,eAAez3C,MACpD,IAEFlwC,OAAOoX,eAAeiuE,EAAS9tE,UAAW,kBAAmB,CAI3DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAKonF,eAAe2B,OAC7B,EACApsE,IAAK,SAAa2Z,GACZt2B,KAAKonF,iBACPpnF,KAAKonF,eAAe2B,QAAUzyD,EAElC,IAIFwuD,EAASmI,UAAYxB,EACrBhsF,OAAOoX,eAAeiuE,EAAS9tE,UAAW,iBAAkB,CAI1DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAKonF,eAAejmF,MAC7B,IA+CoB,mBAAX+V,SACT4tE,EAASxsD,KAAO,SAAUqiD,EAAUnpD,GAIlC,YAHa7pB,IAAT2wB,IACFA,EAAO,EAAQ,QAEVA,EAAKwsD,EAAUnK,EAAUnpD,EAClC,iCC17BFv0B,EAAOR,QAAUwoF,EACjB,IAAIiD,EAAiB,WACnBG,EAA6BH,EAAeG,2BAC5C6E,EAAwBhF,EAAegF,sBACvCC,EAAqCjF,EAAeiF,mCACpDC,EAA8BlF,EAAekF,4BAC3CpI,EAAS,EAAQ,MAErB,SAASqI,EAAehQ,EAAIv9E,GAC1B,IAAIwtF,EAAKttF,KAAKutF,gBACdD,EAAGE,cAAe,EAClB,IAAI51C,EAAK01C,EAAGG,QACZ,GAAW,OAAP71C,EACF,OAAO53C,KAAKirB,KAAK,QAAS,IAAIiiE,GAEhCI,EAAGI,WAAa,KAChBJ,EAAGG,QAAU,KACD,MAAR3tF,GAEFE,KAAKsT,KAAKxT,GACZ83C,EAAGylC,GACH,IAAIsQ,EAAK3tF,KAAKonF,eACduG,EAAG1E,SAAU,GACT0E,EAAGxE,cAAgBwE,EAAGxsF,OAASwsF,EAAGzG,gBACpClnF,KAAK+pF,MAAM4D,EAAGzG,cAElB,CACA,SAASjC,EAAUx0E,GACjB,KAAMzQ,gBAAgBilF,GAAY,OAAO,IAAIA,EAAUx0E,GACvDu0E,EAAO1/E,KAAKtF,KAAMyQ,GAClBzQ,KAAKutF,gBAAkB,CACrBF,eAAgBA,EAAejmF,KAAKpH,MACpC4tF,eAAe,EACfJ,cAAc,EACdC,QAAS,KACTC,WAAY,KACZG,cAAe,MAIjB7tF,KAAKonF,eAAe+B,cAAe,EAKnCnpF,KAAKonF,eAAe8B,MAAO,EACvBz4E,IAC+B,mBAAtBA,EAAQmlC,YAA0B51C,KAAKqnF,WAAa52E,EAAQmlC,WAC1C,mBAAlBnlC,EAAQ2qB,QAAsBp7B,KAAK8tF,OAASr9E,EAAQ2qB,QAIjEp7B,KAAK8F,GAAG,YAAaioF,EACvB,CACA,SAASA,IACP,IAAI5jD,EAAQnqC,KACe,mBAAhBA,KAAK8tF,QAA0B9tF,KAAKonF,eAAe56E,UAK5DurE,EAAK/3E,KAAM,KAAM,MAJjBA,KAAK8tF,QAAO,SAAUzQ,EAAIv9E,GACxBi4E,EAAK5tC,EAAOkzC,EAAIv9E,EAClB,GAIJ,CAiDA,SAASi4E,EAAK0Q,EAAQpL,EAAIv9E,GACxB,GAAIu9E,EAAI,OAAOoL,EAAOx9D,KAAK,QAASoyD,GAQpC,GAPY,MAARv9E,GAEF2oF,EAAOn1E,KAAKxT,GAKV2oF,EAAO3B,eAAe3lF,OAAQ,MAAM,IAAIisF,EAC5C,GAAI3E,EAAO8E,gBAAgBC,aAAc,MAAM,IAAIL,EACnD,OAAO1E,EAAOn1E,KAAK,KACrB,CArHA,EAAQ,MAAR,CAAoB2xE,EAAWD,GAyD/BC,EAAUjuE,UAAU1D,KAAO,SAAUkuB,EAAO8lD,GAE1C,OADAtnF,KAAKutF,gBAAgBK,eAAgB,EAC9B5I,EAAOhuE,UAAU1D,KAAKhO,KAAKtF,KAAMwhC,EAAO8lD,EACjD,EAYArC,EAAUjuE,UAAUqwE,WAAa,SAAU7lD,EAAO8lD,EAAU1vC,GAC1DA,EAAG,IAAIywC,EAA2B,gBACpC,EACApD,EAAUjuE,UAAUg3E,OAAS,SAAUxsD,EAAO8lD,EAAU1vC,GACtD,IAAI01C,EAAKttF,KAAKutF,gBAId,GAHAD,EAAGG,QAAU71C,EACb01C,EAAGI,WAAalsD,EAChB8rD,EAAGO,cAAgBvG,GACdgG,EAAGE,aAAc,CACpB,IAAIG,EAAK3tF,KAAKonF,gBACVkG,EAAGM,eAAiBD,EAAGxE,cAAgBwE,EAAGxsF,OAASwsF,EAAGzG,gBAAelnF,KAAK+pF,MAAM4D,EAAGzG,cACzF,CACF,EAKAjC,EAAUjuE,UAAU+yE,MAAQ,SAAUtsF,GACpC,IAAI6vF,EAAKttF,KAAKutF,gBACQ,OAAlBD,EAAGI,YAAwBJ,EAAGE,aAMhCF,EAAGM,eAAgB,GALnBN,EAAGE,cAAe,EAClBxtF,KAAKqnF,WAAWiG,EAAGI,WAAYJ,EAAGO,cAAeP,EAAGD,gBAMxD,EACApI,EAAUjuE,UAAUgzE,SAAW,SAAUtuB,EAAK9jB,GAC5CotC,EAAOhuE,UAAUgzE,SAAS1kF,KAAKtF,KAAM07D,GAAK,SAAUuyB,GAClDr2C,EAAGq2C,EACL,GACF,oCC9HIjJ,aAXJ,SAASkJ,EAAc53D,GACrB,IAAI6T,EAAQnqC,KACZA,KAAK2M,KAAO,KACZ3M,KAAKksC,MAAQ,KACblsC,KAAKmuF,OAAS,YA6iBhB,SAAwBC,EAAS93D,EAAOolC,GACtC,IAAIxvB,EAAQkiD,EAAQliD,MAEpB,IADAkiD,EAAQliD,MAAQ,KACTA,GAAO,CACZ,IAAI0L,EAAK1L,EAAMtQ,SACftF,EAAM+3D,YACNz2C,EAljBA02C,WAmjBApiD,EAAQA,EAAMv/B,IAChB,CAGA2pB,EAAMi4D,mBAAmB5hF,KAAOyhF,CAClC,CAxjBIE,CAAenkD,EAAO7T,EACxB,CACF,CAnBAr5B,EAAOR,QAAUsoF,EA0BjBA,EAASyJ,cAAgBA,EAGzB,IA+JIC,EA/JAC,EAAe,CACjBC,UAAW,EAAQ,QAKjBhK,EAAS,EAAQ,OAGjB8C,EAAS,gBACTC,QAAmC,IAAX,EAAAvjF,EAAyB,EAAAA,EAA2B,oBAAXR,OAAyBA,OAAyB,oBAATzG,KAAuBA,KAAO,CAAC,GAAG2iF,YAAc,WAAa,EAOvKmI,EAAc,EAAQ,OAExBC,EADa,EAAQ,OACOA,iBAC1BC,EAAiB,WACnBC,EAAuBD,EAAeC,qBACtCE,EAA6BH,EAAeG,2BAC5C6E,EAAwBhF,EAAegF,sBACvC0B,EAAyB1G,EAAe0G,uBACxCC,EAAuB3G,EAAe2G,qBACtCC,EAAyB5G,EAAe4G,uBACxCC,EAA6B7G,EAAe6G,2BAC5CC,EAAuB9G,EAAe8G,qBACpCzG,EAAiBP,EAAYO,eAEjC,SAAS0G,IAAO,CAChB,SAAST,EAAc/9E,EAASg4E,EAAQC,GACtC1D,EAASA,GAAU,EAAQ,MAC3Bv0E,EAAUA,GAAW,CAAC,EAOE,kBAAbi4E,IAAwBA,EAAWD,aAAkBzD,GAIhEhlF,KAAK2oF,aAAel4E,EAAQk4E,WACxBD,IAAU1oF,KAAK2oF,WAAa3oF,KAAK2oF,cAAgBl4E,EAAQy+E,oBAK7DlvF,KAAKknF,cAAgBe,EAAiBjoF,KAAMyQ,EAAS,wBAAyBi4E,GAG9E1oF,KAAKmvF,aAAc,EAGnBnvF,KAAK2sF,WAAY,EAEjB3sF,KAAKovF,QAAS,EAEdpvF,KAAK+mF,OAAQ,EAEb/mF,KAAKmlF,UAAW,EAGhBnlF,KAAKwM,WAAY,EAKjB,IAAI6iF,GAAqC,IAA1B5+E,EAAQ6+E,cACvBtvF,KAAKsvF,eAAiBD,EAKtBrvF,KAAK0pF,gBAAkBj5E,EAAQi5E,iBAAmB,OAKlD1pF,KAAKmB,OAAS,EAGdnB,KAAKuvF,SAAU,EAGfvvF,KAAKwvF,OAAS,EAMdxvF,KAAKkpF,MAAO,EAKZlpF,KAAKyvF,kBAAmB,EAGxBzvF,KAAK0vF,QAAU,SAAUrS,IAsQ3B,SAAiBoL,EAAQpL,GACvB,IAAI/mD,EAAQmyD,EAAO3B,eACfoC,EAAO5yD,EAAM4yD,KACbtxC,EAAKthB,EAAMm3D,QACf,GAAkB,mBAAP71C,EAAmB,MAAM,IAAIs1C,EAExC,GAZF,SAA4B52D,GAC1BA,EAAMi5D,SAAU,EAChBj5D,EAAMm3D,QAAU,KAChBn3D,EAAMn1B,QAAUm1B,EAAMq5D,SACtBr5D,EAAMq5D,SAAW,CACnB,CAMEC,CAAmBt5D,GACf+mD,GAlCN,SAAsBoL,EAAQnyD,EAAO4yD,EAAM7L,EAAIzlC,KAC3CthB,EAAM+3D,UACJnF,GAGFlC,EAAQ/oD,SAAS2Z,EAAIylC,GAGrB2J,EAAQ/oD,SAAS4xD,EAAapH,EAAQnyD,GACtCmyD,EAAO3B,eAAegJ,cAAe,EACrCvH,EAAeE,EAAQpL,KAIvBzlC,EAAGylC,GACHoL,EAAO3B,eAAegJ,cAAe,EACrCvH,EAAeE,EAAQpL,GAGvBwS,EAAYpH,EAAQnyD,GAExB,CAaUy5D,CAAatH,EAAQnyD,EAAO4yD,EAAM7L,EAAIzlC,OAAS,CAErD,IAAIutC,EAAW6K,EAAW15D,IAAUmyD,EAAOj8E,UACtC24E,GAAa7uD,EAAMk5D,QAAWl5D,EAAMm5D,mBAAoBn5D,EAAM25D,iBACjEC,EAAYzH,EAAQnyD,GAElB4yD,EACFlC,EAAQ/oD,SAASkyD,EAAY1H,EAAQnyD,EAAO6uD,EAAUvtC,GAEtDu4C,EAAW1H,EAAQnyD,EAAO6uD,EAAUvtC,EAExC,CACF,CAvRI83C,CAAQjH,EAAQpL,EAClB,EAGAr9E,KAAKytF,QAAU,KAGfztF,KAAK2vF,SAAW,EAChB3vF,KAAKiwF,gBAAkB,KACvBjwF,KAAKowF,oBAAsB,KAI3BpwF,KAAKquF,UAAY,EAIjBruF,KAAKqwF,aAAc,EAGnBrwF,KAAK8vF,cAAe,EAGpB9vF,KAAKwpF,WAAkC,IAAtB/4E,EAAQ+4E,UAGzBxpF,KAAKypF,cAAgBh5E,EAAQg5E,YAG7BzpF,KAAKswF,qBAAuB,EAI5BtwF,KAAKuuF,mBAAqB,IAAIL,EAAcluF,KAC9C,CAqCA,SAAS+kF,EAASt0E,GAahB,IAAIi4E,EAAW1oF,gBAZfglF,EAASA,GAAU,EAAQ,OAa3B,IAAK0D,IAAa+F,EAAgBnpF,KAAKy/E,EAAU/kF,MAAO,OAAO,IAAI+kF,EAASt0E,GAC5EzQ,KAAK8mF,eAAiB,IAAI0H,EAAc/9E,EAASzQ,KAAM0oF,GAGvD1oF,KAAKs/B,UAAW,EACZ7uB,IAC2B,mBAAlBA,EAAQ+0E,QAAsBxlF,KAAKguF,OAASv9E,EAAQ+0E,OACjC,mBAAnB/0E,EAAQ8/E,SAAuBvwF,KAAKwwF,QAAU//E,EAAQ8/E,QAClC,mBAApB9/E,EAAQzE,UAAwBhM,KAAKgqF,SAAWv5E,EAAQzE,SACtC,mBAAlByE,EAAQijD,QAAsB1zD,KAAKywF,OAAShgF,EAAQijD,QAEjEixB,EAAOr/E,KAAKtF,KACd,CAgIA,SAAS0wF,EAAQjI,EAAQnyD,EAAOi6D,EAAQnpB,EAAK5lC,EAAO8lD,EAAU1vC,GAC5DthB,EAAMq5D,SAAWvoB,EACjB9wC,EAAMm3D,QAAU71C,EAChBthB,EAAMi5D,SAAU,EAChBj5D,EAAM4yD,MAAO,EACT5yD,EAAM9pB,UAAW8pB,EAAMo5D,QAAQ,IAAIb,EAAqB,UAAmB0B,EAAQ9H,EAAO+H,QAAQhvD,EAAOlL,EAAMo5D,SAAcjH,EAAOuF,OAAOxsD,EAAO8lD,EAAUhxD,EAAMo5D,SACtKp5D,EAAM4yD,MAAO,CACf,CAgDA,SAASiH,EAAW1H,EAAQnyD,EAAO6uD,EAAUvtC,GACtCutC,GASP,SAAsBsD,EAAQnyD,GACP,IAAjBA,EAAMn1B,QAAgBm1B,EAAMq2D,YAC9Br2D,EAAMq2D,WAAY,EAClBlE,EAAOx9D,KAAK,SAEhB,CAdiB0lE,CAAalI,EAAQnyD,GACpCA,EAAM+3D,YACNz2C,IACAi4C,EAAYpH,EAAQnyD,EACtB,CAaA,SAAS45D,EAAYzH,EAAQnyD,GAC3BA,EAAMm5D,kBAAmB,EACzB,IAAIvjD,EAAQ5V,EAAM25D,gBAClB,GAAIxH,EAAO+H,SAAWtkD,GAASA,EAAMv/B,KAAM,CAEzC,IAAI/O,EAAI04B,EAAMg6D,qBACV3gD,EAAS,IAAInlC,MAAM5M,GACnBgzF,EAASt6D,EAAMi4D,mBACnBqC,EAAO1kD,MAAQA,EAGf,IAFA,IAAIwG,EAAQ,EACRm+C,GAAa,EACV3kD,GACLyD,EAAO+C,GAASxG,EACXA,EAAM4kD,QAAOD,GAAa,GAC/B3kD,EAAQA,EAAMv/B,KACd+lC,GAAS,EAEX/C,EAAOkhD,WAAaA,EACpBH,EAAQjI,EAAQnyD,GAAO,EAAMA,EAAMn1B,OAAQwuC,EAAQ,GAAIihD,EAAOzC,QAI9D73D,EAAM+3D,YACN/3D,EAAM85D,oBAAsB,KACxBQ,EAAOjkF,MACT2pB,EAAMi4D,mBAAqBqC,EAAOjkF,KAClCikF,EAAOjkF,KAAO,MAEd2pB,EAAMi4D,mBAAqB,IAAIL,EAAc53D,GAE/CA,EAAMg6D,qBAAuB,CAC/B,KAAO,CAEL,KAAOpkD,GAAO,CACZ,IAAI1K,EAAQ0K,EAAM1K,MACd8lD,EAAWp7C,EAAMo7C,SACjB1vC,EAAK1L,EAAMtQ,SASf,GAPA80D,EAAQjI,EAAQnyD,GAAO,EADbA,EAAMqyD,WAAa,EAAInnD,EAAMrgC,OACJqgC,EAAO8lD,EAAU1vC,GACpD1L,EAAQA,EAAMv/B,KACd2pB,EAAMg6D,uBAKFh6D,EAAMi5D,QACR,KAEJ,CACc,OAAVrjD,IAAgB5V,EAAM85D,oBAAsB,KAClD,CACA95D,EAAM25D,gBAAkB/jD,EACxB5V,EAAMm5D,kBAAmB,CAC3B,CAoCA,SAASO,EAAW15D,GAClB,OAAOA,EAAM84D,QAA2B,IAAjB94D,EAAMn1B,QAA0C,OAA1Bm1B,EAAM25D,kBAA6B35D,EAAM6uD,WAAa7uD,EAAMi5D,OAC3G,CACA,SAASwB,EAAUtI,EAAQnyD,GACzBmyD,EAAOgI,QAAO,SAAU/0B,GACtBplC,EAAM+3D,YACF3yB,GACF6sB,EAAeE,EAAQ/sB,GAEzBplC,EAAM+5D,aAAc,EACpB5H,EAAOx9D,KAAK,aACZ4kE,EAAYpH,EAAQnyD,EACtB,GACF,CAaA,SAASu5D,EAAYpH,EAAQnyD,GAC3B,IAAI06D,EAAOhB,EAAW15D,GACtB,GAAI06D,IAdN,SAAmBvI,EAAQnyD,GACpBA,EAAM+5D,aAAgB/5D,EAAM64D,cACF,mBAAlB1G,EAAOgI,QAA0Bn6D,EAAM9pB,WAKhD8pB,EAAM+5D,aAAc,EACpB5H,EAAOx9D,KAAK,eALZqL,EAAM+3D,YACN/3D,EAAM64D,aAAc,EACpBnI,EAAQ/oD,SAAS8yD,EAAWtI,EAAQnyD,IAM1C,CAIIy3D,CAAUtF,EAAQnyD,GACM,IAApBA,EAAM+3D,YACR/3D,EAAM6uD,UAAW,EACjBsD,EAAOx9D,KAAK,UACRqL,EAAMmzD,cAAa,CAGrB,IAAIwH,EAASxI,EAAOrB,iBACf6J,GAAUA,EAAOxH,aAAewH,EAAOjI,aAC1CP,EAAOz8E,SAEX,CAGJ,OAAOglF,CACT,CAxfA,EAAQ,MAAR,CAAoBjM,EAAUJ,GA4G9B6J,EAAcx3E,UAAUmwE,UAAY,WAGlC,IAFA,IAAI12C,EAAUzwC,KAAKiwF,gBACfiB,EAAM,GACHzgD,GACLygD,EAAI59E,KAAKm9B,GACTA,EAAUA,EAAQ9jC,KAEpB,OAAOukF,CACT,EACA,WACE,IACEzxF,OAAOoX,eAAe23E,EAAcx3E,UAAW,SAAU,CACvDD,IAAK23E,EAAaC,WAAU,WAC1B,OAAO3uF,KAAKmnF,WACd,GAAG,6EAAmF,YAE1F,CAAE,MAAOz/E,GAAI,CACd,CARD,GAasB,mBAAXwP,QAAyBA,OAAOi6E,aAAiE,mBAA3CpyC,SAAS/nC,UAAUE,OAAOi6E,cACzF1C,EAAkB1vC,SAAS/nC,UAAUE,OAAOi6E,aAC5C1xF,OAAOoX,eAAekuE,EAAU7tE,OAAOi6E,YAAa,CAClD7iF,MAAO,SAAe87B,GACpB,QAAIqkD,EAAgBnpF,KAAKtF,KAAMoqC,IAC3BpqC,OAAS+kF,GACN36C,GAAUA,EAAO08C,0BAA0B0H,CACpD,KAGFC,EAAkB,SAAyBrkD,GACzC,OAAOA,aAAkBpqC,IAC3B,EA+BF+kF,EAAS/tE,UAAUquE,KAAO,WACxBkD,EAAevoF,KAAM,IAAI4uF,EAC3B,EAyBA7J,EAAS/tE,UAAUwuE,MAAQ,SAAUhkD,EAAO8lD,EAAU1vC,GACpD,IAzNqBzY,EAyNjB7I,EAAQt2B,KAAK8mF,eACbxoD,GAAM,EACNwyD,GAASx6D,EAAMqyD,aA3NExpD,EA2N0BqC,EA1NxCimD,EAAO9vB,SAASx4B,IAAQA,aAAeuoD,GAwO9C,OAbIoJ,IAAUrJ,EAAO9vB,SAASn2B,KAC5BA,EAhOJ,SAA6BA,GAC3B,OAAOimD,EAAOnvD,KAAKkJ,EACrB,CA8NYgpD,CAAoBhpD,IAEN,mBAAb8lD,IACT1vC,EAAK0vC,EACLA,EAAW,MAETwJ,EAAOxJ,EAAW,SAAmBA,IAAUA,EAAWhxD,EAAMozD,iBAClD,mBAAP9xC,IAAmBA,EAAKq3C,GAC/B34D,EAAM84D,OArCZ,SAAuB3G,EAAQ7wC,GAC7B,IAAIylC,EAAK,IAAI0R,EAEbxG,EAAeE,EAAQpL,GACvB2J,EAAQ/oD,SAAS2Z,EAAIylC,EACvB,CAgCoB+T,CAAcpxF,KAAM43C,IAAak5C,GA3BrD,SAAoBrI,EAAQnyD,EAAOkL,EAAOoW,GACxC,IAAIylC,EAMJ,OALc,OAAV77C,EACF67C,EAAK,IAAIyR,EACiB,iBAAVttD,GAAuBlL,EAAMqyD,aAC7CtL,EAAK,IAAI8K,EAAqB,QAAS,CAAC,SAAU,UAAW3mD,KAE3D67C,IACFkL,EAAeE,EAAQpL,GACvB2J,EAAQ/oD,SAAS2Z,EAAIylC,IACd,EAGX,CAc8DgU,CAAWrxF,KAAMs2B,EAAOkL,EAAOoW,MACzFthB,EAAM+3D,YACN/vD,EAiDJ,SAAuBmqD,EAAQnyD,EAAOw6D,EAAOtvD,EAAO8lD,EAAU1vC,GAC5D,IAAKk5C,EAAO,CACV,IAAIQ,EArBR,SAAqBh7D,EAAOkL,EAAO8lD,GAIjC,OAHKhxD,EAAMqyD,aAAsC,IAAxBryD,EAAMg5D,eAA4C,iBAAV9tD,IAC/DA,EAAQimD,EAAOnvD,KAAKkJ,EAAO8lD,IAEtB9lD,CACT,CAgBmB+vD,CAAYj7D,EAAOkL,EAAO8lD,GACrC9lD,IAAU8vD,IACZR,GAAQ,EACRxJ,EAAW,SACX9lD,EAAQ8vD,EAEZ,CACA,IAAIlqB,EAAM9wC,EAAMqyD,WAAa,EAAInnD,EAAMrgC,OACvCm1B,EAAMn1B,QAAUimE,EAChB,IAAI9oC,EAAMhI,EAAMn1B,OAASm1B,EAAM4wD,cAG/B,GADK5oD,IAAKhI,EAAMq2D,WAAY,GACxBr2D,EAAMi5D,SAAWj5D,EAAMk5D,OAAQ,CACjC,IAAIlN,EAAOhsD,EAAM85D,oBACjB95D,EAAM85D,oBAAsB,CAC1B5uD,MAAOA,EACP8lD,SAAUA,EACVwJ,MAAOA,EACPl1D,SAAUgc,EACVjrC,KAAM,MAEJ21E,EACFA,EAAK31E,KAAO2pB,EAAM85D,oBAElB95D,EAAM25D,gBAAkB35D,EAAM85D,oBAEhC95D,EAAMg6D,sBAAwB,CAChC,MACEI,EAAQjI,EAAQnyD,GAAO,EAAO8wC,EAAK5lC,EAAO8lD,EAAU1vC,GAEtD,OAAOtZ,CACT,CAlFUkzD,CAAcxxF,KAAMs2B,EAAOw6D,EAAOtvD,EAAO8lD,EAAU1vC,IAEpDtZ,CACT,EACAymD,EAAS/tE,UAAUy6E,KAAO,WACxBzxF,KAAK8mF,eAAe0I,QACtB,EACAzK,EAAS/tE,UAAU06E,OAAS,WAC1B,IAAIp7D,EAAQt2B,KAAK8mF,eACbxwD,EAAMk5D,SACRl5D,EAAMk5D,SACDl5D,EAAMi5D,SAAYj5D,EAAMk5D,QAAWl5D,EAAMm5D,mBAAoBn5D,EAAM25D,iBAAiBC,EAAYlwF,KAAMs2B,GAE/G,EACAyuD,EAAS/tE,UAAU26E,mBAAqB,SAA4BrK,GAGlE,GADwB,iBAAbA,IAAuBA,EAAWA,EAASrzD,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAOl1B,SAASuoF,EAAW,IAAIrzD,gBAAkB,GAAI,MAAM,IAAI+6D,EAAqB1H,GAExL,OADAtnF,KAAK8mF,eAAe4C,gBAAkBpC,EAC/BtnF,IACT,EACAP,OAAOoX,eAAekuE,EAAS/tE,UAAW,iBAAkB,CAI1DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,gBAAkB9mF,KAAK8mF,eAAeK,WACpD,IAQF1nF,OAAOoX,eAAekuE,EAAS/tE,UAAW,wBAAyB,CAIjEF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,eAAeI,aAC7B,IAuKFnC,EAAS/tE,UAAUg3E,OAAS,SAAUxsD,EAAO8lD,EAAU1vC,GACrDA,EAAG,IAAIywC,EAA2B,YACpC,EACAtD,EAAS/tE,UAAUw5E,QAAU,KAC7BzL,EAAS/tE,UAAUm8B,IAAM,SAAU3R,EAAO8lD,EAAU1vC,GAClD,IAAIthB,EAAQt2B,KAAK8mF,eAmBjB,MAlBqB,mBAAVtlD,GACToW,EAAKpW,EACLA,EAAQ,KACR8lD,EAAW,MACkB,mBAAbA,IAChB1vC,EAAK0vC,EACLA,EAAW,MAET9lD,SAAuCxhC,KAAKwlF,MAAMhkD,EAAO8lD,GAGzDhxD,EAAMk5D,SACRl5D,EAAMk5D,OAAS,EACfxvF,KAAK0xF,UAIFp7D,EAAM84D,QAyDb,SAAqB3G,EAAQnyD,EAAOshB,GAClCthB,EAAM84D,QAAS,EACfS,EAAYpH,EAAQnyD,GAChBshB,IACEthB,EAAM6uD,SAAU6B,EAAQ/oD,SAAS2Z,GAAS6wC,EAAOt8C,KAAK,SAAUyL,IAEtEthB,EAAMywD,OAAQ,EACd0B,EAAOnpD,UAAW,CACpB,CAjEqBsyD,CAAY5xF,KAAMs2B,EAAOshB,GACrC53C,IACT,EACAP,OAAOoX,eAAekuE,EAAS/tE,UAAW,iBAAkB,CAI1DF,YAAY,EACZC,IAAK,WACH,OAAO/W,KAAK8mF,eAAe3lF,MAC7B,IAqEF1B,OAAOoX,eAAekuE,EAAS/tE,UAAW,YAAa,CAIrDF,YAAY,EACZC,IAAK,WACH,YAA4BpP,IAAxB3H,KAAK8mF,gBAGF9mF,KAAK8mF,eAAet6E,SAC7B,EACAmQ,IAAK,SAAarO,GAGXtO,KAAK8mF,iBAMV9mF,KAAK8mF,eAAet6E,UAAY8B,EAClC,IAEFy2E,EAAS/tE,UAAUhL,QAAUg8E,EAAYh8E,QACzC+4E,EAAS/tE,UAAU2zE,WAAa3C,EAAY4C,UAC5C7F,EAAS/tE,UAAUgzE,SAAW,SAAUtuB,EAAK9jB,GAC3CA,EAAG8jB,EACL,oCC9nBIm2B,aACJ,SAAStnC,EAAgBprB,EAAK7vB,EAAKhB,GAA4L,OAAnLgB,EAC5C,SAAwB4rE,GAAO,IAAI5rE,EACnC,SAAsB+O,EAAOyzE,GAAQ,GAAqB,iBAAVzzE,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI0zE,EAAO1zE,EAAMnH,OAAO86E,aAAc,QAAarqF,IAAToqF,EAAoB,CAAE,IAAIl2B,EAAMk2B,EAAKzsF,KAAK+Y,EAAOyzE,UAAoB,GAAmB,iBAARj2B,EAAkB,OAAOA,EAAK,MAAM,IAAI3wB,UAAU,+CAAiD,CAAE,OAA4BtsC,OAAiByf,EAAQ,CAD/U4zE,CAAa/W,GAAgB,MAAsB,iBAAR5rE,EAAmBA,EAAM1Q,OAAO0Q,EAAM,CADxE4iF,CAAe5iF,MAAiB6vB,EAAO1/B,OAAOoX,eAAesoB,EAAK7vB,EAAK,CAAEhB,MAAOA,EAAOwI,YAAY,EAAMyoB,cAAc,EAAMD,UAAU,IAAkBH,EAAI7vB,GAAOhB,EAAgB6wB,CAAK,CAG3O,IAAIgmD,EAAW,EAAQ,OACnBgN,EAAej7E,OAAO,eACtBk7E,EAAcl7E,OAAO,cACrBm7E,EAASn7E,OAAO,SAChBo7E,EAASp7E,OAAO,SAChBq7E,EAAer7E,OAAO,eACtBs7E,EAAiBt7E,OAAO,iBACxBu7E,EAAUv7E,OAAO,UACrB,SAASw7E,EAAiBpkF,EAAOypE,GAC/B,MAAO,CACLzpE,MAAOA,EACPypE,KAAMA,EAEV,CACA,SAAS4a,EAAe3nD,GACtB,IAAI/a,EAAU+a,EAAKmnD,GACnB,GAAgB,OAAZliE,EAAkB,CACpB,IAAInwB,EAAOkrC,EAAKynD,GAAS3I,OAIZ,OAAThqF,IACFkrC,EAAKunD,GAAgB,KACrBvnD,EAAKmnD,GAAgB,KACrBnnD,EAAKonD,GAAe,KACpBniE,EAAQyiE,EAAiB5yF,GAAM,IAEnC,CACF,CACA,SAAS8yF,EAAW5nD,GAGlBg8C,EAAQ/oD,SAAS00D,EAAgB3nD,EACnC,CAYA,IAAI6nD,EAAyBpzF,OAAO82D,gBAAe,WAAa,IAC5Du8B,EAAuCrzF,OAAOg3D,gBAmD/ClM,EAnD+DsnC,EAAwB,CACpFpJ,aACF,OAAOzoF,KAAKyyF,EACd,EACA9lF,KAAM,WACJ,IAAIw9B,EAAQnqC,KAGR2d,EAAQ3d,KAAKqyF,GACjB,GAAc,OAAV10E,EACF,OAAOuN,QAAQ4L,OAAOnZ,GAExB,GAAI3d,KAAKsyF,GACP,OAAOpnE,QAAQ+E,QAAQyiE,OAAiB/qF,GAAW,IAErD,GAAI3H,KAAKyyF,GAASjmF,UAKhB,OAAO,IAAI0e,SAAQ,SAAU+E,EAAS6G,GACpCkwD,EAAQ/oD,UAAS,WACXkM,EAAMkoD,GACRv7D,EAAOqT,EAAMkoD,IAEbpiE,EAAQyiE,OAAiB/qF,GAAW,GAExC,GACF,IAOF,IACImkD,EADAinC,EAAc/yF,KAAKuyF,GAEvB,GAAIQ,EACFjnC,EAAU,IAAI5gC,QAlDpB,SAAqB6nE,EAAa/nD,GAChC,OAAO,SAAU/a,EAAS6G,GACxBi8D,EAAY3vE,MAAK,WACX4nB,EAAKsnD,GACPriE,EAAQyiE,OAAiB/qF,GAAW,IAGtCqjC,EAAKwnD,GAAgBviE,EAAS6G,EAChC,GAAGA,EACL,CACF,CAwC4Bk8D,CAAYD,EAAa/yF,WAC1C,CAGL,IAAIF,EAAOE,KAAKyyF,GAAS3I,OACzB,GAAa,OAAThqF,EACF,OAAOorB,QAAQ+E,QAAQyiE,EAAiB5yF,GAAM,IAEhDgsD,EAAU,IAAI5gC,QAAQlrB,KAAKwyF,GAC7B,CAEA,OADAxyF,KAAKuyF,GAAgBzmC,EACdA,CACT,GACwC50C,OAAO81E,eAAe,WAC9D,OAAOhtF,IACT,IAAIuqD,EAAgBsnC,EAAuB,UAAU,WACnD,IAAIn1C,EAAS18C,KAIb,OAAO,IAAIkrB,SAAQ,SAAU+E,EAAS6G,GACpC4lB,EAAO+1C,GAASzmF,QAAQ,MAAM,SAAU0vD,GAClCA,EACF5kC,EAAO4kC,GAGTzrC,EAAQyiE,OAAiB/qF,GAAW,GACtC,GACF,GACF,IAAIkqF,GAAwBgB,GA4D5B51F,EAAOR,QA3DiC,SAA2CgsF,GACjF,IAAIwK,EACAvoD,EAAWjrC,OAAOsiE,OAAO+wB,GAA4DvoC,EAArB0oC,EAAiB,CAAC,EAAmCR,EAAS,CAChInkF,MAAOm6E,EACPnpD,UAAU,IACRirB,EAAgB0oC,EAAgBd,EAAc,CAChD7jF,MAAO,KACPgxB,UAAU,IACRirB,EAAgB0oC,EAAgBb,EAAa,CAC/C9jF,MAAO,KACPgxB,UAAU,IACRirB,EAAgB0oC,EAAgBZ,EAAQ,CAC1C/jF,MAAO,KACPgxB,UAAU,IACRirB,EAAgB0oC,EAAgBX,EAAQ,CAC1ChkF,MAAOm6E,EAAOrB,eAAe4B,WAC7B1pD,UAAU,IACRirB,EAAgB0oC,EAAgBT,EAAgB,CAClDlkF,MAAO,SAAe2hB,EAAS6G,GAC7B,IAAIh3B,EAAO4qC,EAAS+nD,GAAS3I,OACzBhqF,GACF4qC,EAAS6nD,GAAgB,KACzB7nD,EAASynD,GAAgB,KACzBznD,EAAS0nD,GAAe,KACxBniE,EAAQyiE,EAAiB5yF,GAAM,MAE/B4qC,EAASynD,GAAgBliE,EACzBya,EAAS0nD,GAAet7D,EAE5B,EACAwI,UAAU,IACR2zD,IA0BJ,OAzBAvoD,EAAS6nD,GAAgB,KACzBpN,EAASsD,GAAQ,SAAU/sB,GACzB,GAAIA,GAAoB,+BAAbA,EAAIhjD,KAAuC,CACpD,IAAIoe,EAAS4T,EAAS0nD,GAUtB,OAPe,OAAXt7D,IACF4T,EAAS6nD,GAAgB,KACzB7nD,EAASynD,GAAgB,KACzBznD,EAAS0nD,GAAe,KACxBt7D,EAAO4kC,SAEThxB,EAAS2nD,GAAU32B,EAErB,CACA,IAAIzrC,EAAUya,EAASynD,GACP,OAAZliE,IACFya,EAAS6nD,GAAgB,KACzB7nD,EAASynD,GAAgB,KACzBznD,EAAS0nD,GAAe,KACxBniE,EAAQyiE,OAAiB/qF,GAAW,KAEtC+iC,EAAS4nD,IAAU,CACrB,IACA7J,EAAO3iF,GAAG,WAAY8sF,EAAWxrF,KAAK,KAAMsjC,IACrCA,CACT,gCChLA,SAASymC,EAAQ/mC,EAAQ8oD,GAAkB,IAAIljE,EAAOvwB,OAAOuwB,KAAKoa,GAAS,GAAI3qC,OAAO49C,sBAAuB,CAAE,IAAI81C,EAAU1zF,OAAO49C,sBAAsBjT,GAAS8oD,IAAmBC,EAAUA,EAAQ7vF,QAAO,SAAU+/E,GAAO,OAAO5jF,OAAOyjC,yBAAyBkH,EAAQi5C,GAAKvsE,UAAY,KAAKkZ,EAAK1c,KAAK3D,MAAMqgB,EAAMmjE,EAAU,CAAE,OAAOnjE,CAAM,CACpV,SAASojE,EAAcpxF,GAAU,IAAK,IAAIxE,EAAI,EAAGA,EAAI0D,UAAUC,OAAQ3D,IAAK,CAAE,IAAImqB,EAAS,MAAQzmB,UAAU1D,GAAK0D,UAAU1D,GAAK,CAAC,EAAGA,EAAI,EAAI2zE,EAAQ1xE,OAAOkoB,IAAS,GAAI1V,SAAQ,SAAU3C,GAAOi7C,EAAgBvoD,EAAQsN,EAAKqY,EAAOrY,GAAO,IAAK7P,OAAO29C,0BAA4B39C,OAAO+7C,iBAAiBx5C,EAAQvC,OAAO29C,0BAA0Bz1B,IAAWwpD,EAAQ1xE,OAAOkoB,IAAS1V,SAAQ,SAAU3C,GAAO7P,OAAOoX,eAAe7U,EAAQsN,EAAK7P,OAAOyjC,yBAAyBvb,EAAQrY,GAAO,GAAI,CAAE,OAAOtN,CAAQ,CACzf,SAASuoD,EAAgBprB,EAAK7vB,EAAKhB,GAA4L,OAAnLgB,EAAM4iF,EAAe5iF,MAAiB6vB,EAAO1/B,OAAOoX,eAAesoB,EAAK7vB,EAAK,CAAEhB,MAAOA,EAAOwI,YAAY,EAAMyoB,cAAc,EAAMD,UAAU,IAAkBH,EAAI7vB,GAAOhB,EAAgB6wB,CAAK,CAE3O,SAASwL,EAAkB3oC,EAAQ3D,GAAS,IAAK,IAAIb,EAAI,EAAGA,EAAIa,EAAM8C,OAAQ3D,IAAK,CAAE,IAAI6yB,EAAahyB,EAAMb,GAAI6yB,EAAWvZ,WAAauZ,EAAWvZ,aAAc,EAAOuZ,EAAWkP,cAAe,EAAU,UAAWlP,IAAYA,EAAWiP,UAAW,GAAM7/B,OAAOoX,eAAe7U,EAAQkwF,EAAe7hE,EAAW/gB,KAAM+gB,EAAa,CAAE,CAE5U,SAAS6hE,EAAehX,GAAO,IAAI5rE,EACnC,SAAsB+O,EAAOyzE,GAAQ,GAAqB,iBAAVzzE,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI0zE,EAAO1zE,EAAMnH,OAAO86E,aAAc,QAAarqF,IAAToqF,EAAoB,CAAE,IAAIl2B,EAAMk2B,EAAKzsF,KAAK+Y,EAAOyzE,UAAoB,GAAmB,iBAARj2B,EAAkB,OAAOA,EAAK,MAAM,IAAI3wB,UAAU,+CAAiD,CAAE,OAA4BtsC,OAAiByf,EAAQ,CAD/U4zE,CAAa/W,GAAgB,MAAsB,iBAAR5rE,EAAmBA,EAAM1Q,OAAO0Q,EAAM,CAE1H,IACEm4E,EADa,EAAQ,OACHA,OAElB4L,EADc,EAAQ,OACFA,QAClB5qF,EAAS4qF,GAAWA,EAAQ5qF,QAAU,UAI1CxL,EAAOR,QAAuB,WAC5B,SAASsrF,KAdX,SAAyBr8C,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIT,UAAU,oCAAwC,CAepJU,CAAgB5rC,KAAM+nF,GACtB/nF,KAAKkV,KAAO,KACZlV,KAAKszF,KAAO,KACZtzF,KAAKmB,OAAS,CAChB,CAjBF,IAAsBwqC,EAAaK,EA8KjC,OA9KoBL,EAkBPo8C,GAlBoB/7C,EAkBR,CAAC,CACxB18B,IAAK,OACLhB,MAAO,SAAclK,GACnB,IAAI8nC,EAAQ,CACVpsC,KAAMsE,EACNuI,KAAM,MAEJ3M,KAAKmB,OAAS,EAAGnB,KAAKszF,KAAK3mF,KAAOu/B,EAAWlsC,KAAKkV,KAAOg3B,EAC7DlsC,KAAKszF,KAAOpnD,IACVlsC,KAAKmB,MACT,GACC,CACDmO,IAAK,UACLhB,MAAO,SAAiBlK,GACtB,IAAI8nC,EAAQ,CACVpsC,KAAMsE,EACNuI,KAAM3M,KAAKkV,MAEO,IAAhBlV,KAAKmB,SAAcnB,KAAKszF,KAAOpnD,GACnClsC,KAAKkV,KAAOg3B,IACVlsC,KAAKmB,MACT,GACC,CACDmO,IAAK,QACLhB,MAAO,WACL,GAAoB,IAAhBtO,KAAKmB,OAAT,CACA,IAAIm9B,EAAMt+B,KAAKkV,KAAKpV,KAGpB,OAFoB,IAAhBE,KAAKmB,OAAcnB,KAAKkV,KAAOlV,KAAKszF,KAAO,KAAUtzF,KAAKkV,KAAOlV,KAAKkV,KAAKvI,OAC7E3M,KAAKmB,OACAm9B,CAJsB,CAK/B,GACC,CACDhvB,IAAK,QACLhB,MAAO,WACLtO,KAAKkV,KAAOlV,KAAKszF,KAAO,KACxBtzF,KAAKmB,OAAS,CAChB,GACC,CACDmO,IAAK,OACLhB,MAAO,SAAc3Q,GACnB,GAAoB,IAAhBqC,KAAKmB,OAAc,MAAO,GAG9B,IAFA,IAAIpD,EAAIiC,KAAKkV,KACTopB,EAAM,GAAKvgC,EAAE+B,KACV/B,EAAIA,EAAE4O,MAAM2xB,GAAO3gC,EAAII,EAAE+B,KAChC,OAAOw+B,CACT,GACC,CACDhvB,IAAK,SACLhB,MAAO,SAAgB7Q,GACrB,GAAoB,IAAhBuC,KAAKmB,OAAc,OAAOsmF,EAAO8L,MAAM,GAI3C,IAHA,IA5DcjvC,EAAKtiD,EAAQ6xC,EA4DvBvV,EAAMmpD,EAAO+L,YAAY/1F,IAAM,GAC/BM,EAAIiC,KAAKkV,KACT1X,EAAI,EACDO,GA/DOumD,EAgEDvmD,EAAE+B,KAhEIkC,EAgEEs8B,EAhEMuV,EAgEDr2C,EA/D9BiqF,EAAOzwE,UAAUkmE,KAAK53E,KAAKg/C,EAAKtiD,EAAQ6xC,GAgElCr2C,GAAKO,EAAE+B,KAAKqB,OACZpD,EAAIA,EAAE4O,KAER,OAAO2xB,CACT,GAGC,CACDhvB,IAAK,UACLhB,MAAO,SAAiB7Q,EAAGg2F,GACzB,IAAIn1D,EAYJ,OAXI7gC,EAAIuC,KAAKkV,KAAKpV,KAAKqB,QAErBm9B,EAAMt+B,KAAKkV,KAAKpV,KAAKkH,MAAM,EAAGvJ,GAC9BuC,KAAKkV,KAAKpV,KAAOE,KAAKkV,KAAKpV,KAAKkH,MAAMvJ,IAGtC6gC,EAFS7gC,IAAMuC,KAAKkV,KAAKpV,KAAKqB,OAExBnB,KAAKu8C,QAGLk3C,EAAazzF,KAAK0zF,WAAWj2F,GAAKuC,KAAK2zF,WAAWl2F,GAEnD6gC,CACT,GACC,CACDhvB,IAAK,QACLhB,MAAO,WACL,OAAOtO,KAAKkV,KAAKpV,IACnB,GAGC,CACDwP,IAAK,aACLhB,MAAO,SAAoB7Q,GACzB,IAAIM,EAAIiC,KAAKkV,KACTrX,EAAI,EACJygC,EAAMvgC,EAAE+B,KAEZ,IADArC,GAAK6gC,EAAIn9B,OACFpD,EAAIA,EAAE4O,MAAM,CACjB,IAAIiyC,EAAM7gD,EAAE+B,KACR8zF,EAAKn2F,EAAImhD,EAAIz9C,OAASy9C,EAAIz9C,OAAS1D,EAGvC,GAFIm2F,IAAOh1C,EAAIz9C,OAAQm9B,GAAOsgB,EAAStgB,GAAOsgB,EAAI53C,MAAM,EAAGvJ,GAEjD,IADVA,GAAKm2F,GACQ,CACPA,IAAOh1C,EAAIz9C,UACXtD,EACEE,EAAE4O,KAAM3M,KAAKkV,KAAOnX,EAAE4O,KAAU3M,KAAKkV,KAAOlV,KAAKszF,KAAO,OAE5DtzF,KAAKkV,KAAOnX,EACZA,EAAE+B,KAAO8+C,EAAI53C,MAAM4sF,IAErB,KACF,GACE/1F,CACJ,CAEA,OADAmC,KAAKmB,QAAUtD,EACRygC,CACT,GAGC,CACDhvB,IAAK,aACLhB,MAAO,SAAoB7Q,GACzB,IAAI6gC,EAAMmpD,EAAO+L,YAAY/1F,GACzBM,EAAIiC,KAAKkV,KACTrX,EAAI,EAGR,IAFAE,EAAE+B,KAAKo9E,KAAK5+C,GACZ7gC,GAAKM,EAAE+B,KAAKqB,OACLpD,EAAIA,EAAE4O,MAAM,CACjB,IAAIknF,EAAM91F,EAAE+B,KACR8zF,EAAKn2F,EAAIo2F,EAAI1yF,OAAS0yF,EAAI1yF,OAAS1D,EAGvC,GAFAo2F,EAAI3W,KAAK5+C,EAAKA,EAAIn9B,OAAS1D,EAAG,EAAGm2F,GAEvB,IADVn2F,GAAKm2F,GACQ,CACPA,IAAOC,EAAI1yF,UACXtD,EACEE,EAAE4O,KAAM3M,KAAKkV,KAAOnX,EAAE4O,KAAU3M,KAAKkV,KAAOlV,KAAKszF,KAAO,OAE5DtzF,KAAKkV,KAAOnX,EACZA,EAAE+B,KAAO+zF,EAAI7sF,MAAM4sF,IAErB,KACF,GACE/1F,CACJ,CAEA,OADAmC,KAAKmB,QAAUtD,EACRygC,CACT,GAGC,CACDhvB,IAAK7G,EACL6F,MAAO,SAAe5G,EAAG+I,GACvB,OAAO4iF,EAAQrzF,KAAMozF,EAAcA,EAAc,CAAC,EAAG3iF,GAAU,CAAC,EAAG,CAEjEwtD,MAAO,EAEP61B,eAAe,IAEnB,MA5K0EnpD,EAAkBgB,EAAY30B,UAAWg1B,GAA2EvsC,OAAOoX,eAAe80B,EAAa,YAAa,CAAErM,UAAU,IA8KrPyoD,CACT,CApK8B,gDCiC9B,SAASgM,EAAoB72F,EAAMw+D,GACjCs4B,EAAY92F,EAAMw+D,GAClBu4B,EAAY/2F,EACd,CACA,SAAS+2F,EAAY/2F,GACfA,EAAK4pF,iBAAmB5pF,EAAK4pF,eAAe0C,WAC5CtsF,EAAKkqF,iBAAmBlqF,EAAKkqF,eAAeoC,WAChDtsF,EAAK+tB,KAAK,QACZ,CAkBA,SAAS+oE,EAAY92F,EAAMw+D,GACzBx+D,EAAK+tB,KAAK,QAASywC,EACrB,CAYAz+D,EAAOR,QAAU,CACfuP,QAzFF,SAAiB0vD,EAAK9jB,GACpB,IAAIzN,EAAQnqC,KACRk0F,EAAoBl0F,KAAKonF,gBAAkBpnF,KAAKonF,eAAe56E,UAC/D2nF,EAAoBn0F,KAAK8mF,gBAAkB9mF,KAAK8mF,eAAet6E,UACnE,OAAI0nF,GAAqBC,GACnBv8C,EACFA,EAAG8jB,GACMA,IACJ17D,KAAK8mF,eAEE9mF,KAAK8mF,eAAegJ,eAC9B9vF,KAAK8mF,eAAegJ,cAAe,EACnC9I,EAAQ/oD,SAAS+1D,EAAah0F,KAAM07D,IAHpCsrB,EAAQ/oD,SAAS+1D,EAAah0F,KAAM07D,IAMjC17D,OAMLA,KAAKonF,iBACPpnF,KAAKonF,eAAe56E,WAAY,GAI9BxM,KAAK8mF,iBACP9mF,KAAK8mF,eAAet6E,WAAY,GAElCxM,KAAKgqF,SAAStuB,GAAO,MAAM,SAAUA,IAC9B9jB,GAAM8jB,EACJvxB,EAAM28C,eAEC38C,EAAM28C,eAAegJ,aAI/B9I,EAAQ/oD,SAASg2D,EAAa9pD,IAH9BA,EAAM28C,eAAegJ,cAAe,EACpC9I,EAAQ/oD,SAAS81D,EAAqB5pD,EAAOuxB,IAH7CsrB,EAAQ/oD,SAAS81D,EAAqB5pD,EAAOuxB,GAOtC9jB,GACTovC,EAAQ/oD,SAASg2D,EAAa9pD,GAC9ByN,EAAG8jB,IAEHsrB,EAAQ/oD,SAASg2D,EAAa9pD,EAElC,IACOnqC,KACT,EA2CE4qF,UAjCF,WACM5qF,KAAKonF,iBACPpnF,KAAKonF,eAAe56E,WAAY,EAChCxM,KAAKonF,eAAe6B,SAAU,EAC9BjpF,KAAKonF,eAAeL,OAAQ,EAC5B/mF,KAAKonF,eAAe4B,YAAa,GAE/BhpF,KAAK8mF,iBACP9mF,KAAK8mF,eAAet6E,WAAY,EAChCxM,KAAK8mF,eAAeC,OAAQ,EAC5B/mF,KAAK8mF,eAAesI,QAAS,EAC7BpvF,KAAK8mF,eAAeqI,aAAc,EAClCnvF,KAAK8mF,eAAeuJ,aAAc,EAClCrwF,KAAK8mF,eAAe3B,UAAW,EAC/BnlF,KAAK8mF,eAAegJ,cAAe,EAEvC,EAkBEvH,eAdF,SAAwBE,EAAQ/sB,GAO9B,IAAIu1B,EAASxI,EAAOrB,eAChByE,EAASpD,EAAO3B,eAChBmK,GAAUA,EAAOxH,aAAeoC,GAAUA,EAAOpC,YAAahB,EAAOz8E,QAAQ0vD,GAAU+sB,EAAOx9D,KAAK,QAASywC,EAClH,iCCrFA,IAAI04B,EAA6B,sCAYjC,SAASC,IAAQ,CAoEjBp3F,EAAOR,QAhEP,SAAS63F,EAAI7L,EAAQj3D,EAAMoK,GACzB,GAAoB,mBAATpK,EAAqB,OAAO8iE,EAAI7L,EAAQ,KAAMj3D,GACpDA,IAAMA,EAAO,CAAC,GACnBoK,EAlBF,SAAcA,GACZ,IAAIyuC,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EACT,IAAK,IAAIz9B,EAAO1rC,UAAUC,OAAQ0uB,EAAO,IAAIrlB,MAAMoiC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ehd,EAAKgd,GAAQ3rC,UAAU2rC,GAEzBjR,EAASjsB,MAAM3P,KAAM6vB,EALH,CAMpB,CACF,CAQasc,CAAKvQ,GAAYy4D,GAC5B,IAAI3O,EAAWl0D,EAAKk0D,WAA8B,IAAlBl0D,EAAKk0D,UAAsB+C,EAAO/C,SAC9DpmD,EAAW9N,EAAK8N,WAA8B,IAAlB9N,EAAK8N,UAAsBmpD,EAAOnpD,SAC9Di1D,EAAiB,WACd9L,EAAOnpD,UAAUmtD,GACxB,EACI+H,EAAgB/L,EAAO3B,gBAAkB2B,EAAO3B,eAAe3B,SAC/DsH,EAAW,WACbntD,GAAW,EACXk1D,GAAgB,EACX9O,GAAU9pD,EAASt2B,KAAKmjF,EAC/B,EACIgM,EAAgBhM,EAAOrB,gBAAkBqB,EAAOrB,eAAe4B,WAC/DnD,EAAQ,WACVH,GAAW,EACX+O,GAAgB,EACXn1D,GAAU1D,EAASt2B,KAAKmjF,EAC/B,EACI32D,EAAU,SAAiB4pC,GAC7B9/B,EAASt2B,KAAKmjF,EAAQ/sB,EACxB,EACIoqB,EAAU,WACZ,IAAIpqB,EACJ,OAAIgqB,IAAa+O,GACVhM,EAAOrB,gBAAmBqB,EAAOrB,eAAeL,QAAOrrB,EAAM,IAAI04B,GAC/Dx4D,EAASt2B,KAAKmjF,EAAQ/sB,IAE3Bp8B,IAAak1D,GACV/L,EAAO3B,gBAAmB2B,EAAO3B,eAAeC,QAAOrrB,EAAM,IAAI04B,GAC/Dx4D,EAASt2B,KAAKmjF,EAAQ/sB,SAF/B,CAIF,EACIg5B,EAAY,WACdjM,EAAOkM,IAAI7uF,GAAG,SAAU2mF,EAC1B,EAcA,OAtDF,SAAmBhE,GACjB,OAAOA,EAAOmM,WAAqC,mBAAjBnM,EAAO5c,KAC3C,CAuCMgpB,CAAUpM,IACZA,EAAO3iF,GAAG,WAAY2mF,GACtBhE,EAAO3iF,GAAG,QAASggF,GACf2C,EAAOkM,IAAKD,IAAiBjM,EAAO3iF,GAAG,UAAW4uF,IAC7Cp1D,IAAampD,EAAO3B,iBAE7B2B,EAAO3iF,GAAG,MAAOyuF,GACjB9L,EAAO3iF,GAAG,QAASyuF,IAErB9L,EAAO3iF,GAAG,MAAO+/E,GACjB4C,EAAO3iF,GAAG,SAAU2mF,IACD,IAAfj7D,EAAK7T,OAAiB8qE,EAAO3iF,GAAG,QAASgsB,GAC7C22D,EAAO3iF,GAAG,QAASggF,GACZ,WACL2C,EAAOjM,eAAe,WAAYiQ,GAClChE,EAAOjM,eAAe,QAASsJ,GAC/B2C,EAAOjM,eAAe,UAAWkY,GAC7BjM,EAAOkM,KAAKlM,EAAOkM,IAAInY,eAAe,SAAUiQ,GACpDhE,EAAOjM,eAAe,MAAO+X,GAC7B9L,EAAOjM,eAAe,QAAS+X,GAC/B9L,EAAOjM,eAAe,SAAUiQ,GAChChE,EAAOjM,eAAe,MAAOqJ,GAC7B4C,EAAOjM,eAAe,QAAS1qD,GAC/B22D,EAAOjM,eAAe,QAASsJ,EACjC,CACF,aCpFA7oF,EAAOR,QAAU,WACf,MAAM,IAAI0Y,MAAM,gDAClB,gCCGA,IAAIm/E,EASApM,EAAiB,WACnB4M,EAAmB5M,EAAe4M,iBAClCjG,EAAuB3G,EAAe2G,qBACxC,SAASwF,EAAK34B,GAEZ,GAAIA,EAAK,MAAMA,CACjB,CA+BA,SAASp2D,EAAKiK,GACZA,GACF,CACA,SAAS81E,EAAK/sD,EAAMvwB,GAClB,OAAOuwB,EAAK+sD,KAAKt9E,EACnB,CA6BA9K,EAAOR,QAvBP,WACE,IAAK,IAAImwC,EAAO1rC,UAAUC,OAAQ4zF,EAAU,IAAIvqF,MAAMoiC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClFkoD,EAAQloD,GAAQ3rC,UAAU2rC,GAE5B,IAKIlvB,EALAie,EATN,SAAqBm5D,GACnB,OAAKA,EAAQ5zF,OAC8B,mBAAhC4zF,EAAQA,EAAQ5zF,OAAS,GAA0BkzF,EACvDU,EAAQzrE,MAFa+qE,CAG9B,CAKiBW,CAAYD,GAE3B,GADIvqF,MAAM6I,QAAQ0hF,EAAQ,MAAKA,EAAUA,EAAQ,IAC7CA,EAAQ5zF,OAAS,EACnB,MAAM,IAAI2zF,EAAiB,WAG7B,IAAIG,EAAWF,EAAQn4F,KAAI,SAAU6rF,EAAQjrF,GAC3C,IAAIyrF,EAAUzrF,EAAIu3F,EAAQ5zF,OAAS,EAEnC,OAnDJ,SAAmBsnF,EAAQQ,EAASsG,EAAS3zD,GAC3CA,EAnBF,SAAcA,GACZ,IAAIyuC,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTzuC,EAASjsB,WAAM,EAAQzO,WACzB,CACF,CAYairC,CAAKvQ,GAChB,IAAIs5D,GAAS,EACbzM,EAAO3iF,GAAG,SAAS,WACjBovF,GAAS,CACX,SACYvtF,IAAR2sF,IAAmBA,EAAM,EAAQ,QACrCA,EAAI7L,EAAQ,CACV/C,SAAUuD,EACV3pD,SAAUiwD,IACT,SAAU7zB,GACX,GAAIA,EAAK,OAAO9/B,EAAS8/B,GACzBw5B,GAAS,EACTt5D,GACF,IACA,IAAIpvB,GAAY,EAChB,OAAO,SAAUkvD,GACf,IAAIw5B,IACA1oF,EAIJ,OAHAA,GAAY,EAtBhB,SAAmBi8E,GACjB,OAAOA,EAAOmM,WAAqC,mBAAjBnM,EAAO5c,KAC3C,CAuBQgpB,CAAUpM,GAAgBA,EAAO5c,QACP,mBAAnB4c,EAAOz8E,QAA+By8E,EAAOz8E,eACxD4vB,EAAS8/B,GAAO,IAAImzB,EAAqB,QAC3C,CACF,CAyBWsG,CAAU1M,EAAQQ,EADXzrF,EAAI,GACyB,SAAUk+D,GAC9C/9C,IAAOA,EAAQ+9C,GAChBA,GAAKu5B,EAAShjF,QAAQ3M,GACtB2jF,IACJgM,EAAShjF,QAAQ3M,GACjBs2B,EAASje,GACX,GACF,IACA,OAAOo3E,EAAQx4E,OAAO8oE,EACxB,gCClFA,IAAI+P,EAAwB,iCAiB5Bn4F,EAAOR,QAAU,CACfwrF,iBAdF,SAA0B3xD,EAAO7lB,EAAS4kF,EAAW3M,GACnD,IAAI4M,EAJN,SAA2B7kF,EAASi4E,EAAU2M,GAC5C,OAAgC,MAAzB5kF,EAAQy2E,cAAwBz2E,EAAQy2E,cAAgBwB,EAAWj4E,EAAQ4kF,GAAa,IACjG,CAEYE,CAAkB9kF,EAASi4E,EAAU2M,GAC/C,GAAW,MAAPC,EAAa,CACf,IAAMxU,SAASwU,IAAQpiF,KAAK+I,MAAMq5E,KAASA,GAAQA,EAAM,EAEvD,MAAM,IAAIF,EADC1M,EAAW2M,EAAY,gBACIC,GAExC,OAAOpiF,KAAK+I,MAAMq5E,EACpB,CAGA,OAAOh/D,EAAMqyD,WAAa,GAAK,KACjC,oBClBA1rF,EAAOR,QAAU,EAAjB,sCCAAA,EAAUQ,EAAOR,QAAU,EAAjB,QACFkoF,OAASloF,EACjBA,EAAQqoF,SAAWroF,EACnBA,EAAQsoF,SAAW,EAAnB,OACAtoF,EAAQuoF,OAAS,EAAjB,MACAvoF,EAAQwoF,UAAY,EAApB,OACAxoF,EAAQyoF,YAAc,EAAtB,OACAzoF,EAAQ0oF,SAAW,EAAnB,OACA1oF,EAAQ2oF,SAAW,EAAnB,qCCiBA,IAAIqC,EAAS,gBAGTmd,EAAand,EAAOmd,YAAc,SAAUtd,GAE9C,QADAA,EAAW,GAAKA,IACIA,EAASrzD,eAC3B,IAAK,MAAM,IAAK,OAAO,IAAK,QAAQ,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,WAAW,IAAK,MACxI,OAAO,EACT,QACE,OAAO,EAEb,EA0CA,SAAS4zD,EAAcP,GAErB,IAAIsM,EACJ,OAFA5zF,KAAKsnF,SAXP,SAA2ByD,GACzB,IAAI8Z,EA/BN,SAA4B9Z,GAC1B,IAAKA,EAAK,MAAO,OAEjB,IADA,IAAI+Z,IAEF,OAAQ/Z,GACN,IAAK,OACL,IAAK,QACH,MAAO,OACT,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,UACT,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,SACL,IAAK,QACL,IAAK,MACH,OAAOA,EACT,QACE,GAAI+Z,EAAS,OACb/Z,GAAO,GAAKA,GAAK92D,cACjB6wE,GAAU,EAGlB,CAKaC,CAAmBha,GAC9B,GAAoB,iBAAT8Z,IAAsBpd,EAAOmd,aAAeA,IAAeA,EAAW7Z,IAAO,MAAM,IAAI51E,MAAM,qBAAuB41E,GAC/H,OAAO8Z,GAAQ9Z,CACjB,CAOkBia,CAAkB1d,GAE1BtnF,KAAKsnF,UACX,IAAK,UACHtnF,KAAKoF,KAAO6/F,EACZjlG,KAAKmzC,IAAM+xD,EACXtR,EAAK,EACL,MACF,IAAK,OACH5zF,KAAKmlG,SAAWC,EAChBxR,EAAK,EACL,MACF,IAAK,SACH5zF,KAAKoF,KAAOigG,EACZrlG,KAAKmzC,IAAMmyD,EACX1R,EAAK,EACL,MACF,QAGE,OAFA5zF,KAAKwlF,MAAQ+f,OACbvlG,KAAKmzC,IAAMqyD,GAGfxlG,KAAKylG,SAAW,EAChBzlG,KAAK0lG,UAAY,EACjB1lG,KAAK2lG,SAAWle,EAAO+L,YAAYI,EACrC,CAmCA,SAASgS,EAAcC,GACrB,OAAIA,GAAQ,IAAa,EAAWA,GAAQ,GAAM,EAAa,EAAWA,GAAQ,GAAM,GAAa,EAAWA,GAAQ,GAAM,GAAa,EACpIA,GAAQ,GAAM,GAAQ,GAAK,CACpC,CA0DA,SAAST,EAAavR,GACpB,IAAI91F,EAAIiC,KAAK0lG,UAAY1lG,KAAKylG,SAC1B/nG,EAtBN,SAA6BR,EAAM22F,EAAK91F,GACtC,GAAwB,MAAV,IAAT81F,EAAI,IAEP,OADA32F,EAAKuoG,SAAW,EACT,IAET,GAAIvoG,EAAKuoG,SAAW,GAAK5R,EAAI1yF,OAAS,EAAG,CACvC,GAAwB,MAAV,IAAT0yF,EAAI,IAEP,OADA32F,EAAKuoG,SAAW,EACT,IAET,GAAIvoG,EAAKuoG,SAAW,GAAK5R,EAAI1yF,OAAS,GACZ,MAAV,IAAT0yF,EAAI,IAEP,OADA32F,EAAKuoG,SAAW,EACT,GAGb,CACF,CAKUK,CAAoB9lG,KAAM6zF,GAClC,YAAUlsF,IAANjK,EAAwBA,EACxBsC,KAAKylG,UAAY5R,EAAI1yF,QACvB0yF,EAAI3W,KAAKl9E,KAAK2lG,SAAU5nG,EAAG,EAAGiC,KAAKylG,UAC5BzlG,KAAK2lG,SAASj/F,SAAS1G,KAAKsnF,SAAU,EAAGtnF,KAAK0lG,aAEvD7R,EAAI3W,KAAKl9E,KAAK2lG,SAAU5nG,EAAG,EAAG81F,EAAI1yF,aAClCnB,KAAKylG,UAAY5R,EAAI1yF,QACvB,CA0BA,SAAS8jG,EAAUpR,EAAKr2F,GACtB,IAAKq2F,EAAI1yF,OAAS3D,GAAK,GAAM,EAAG,CAC9B,IAAIE,EAAIm2F,EAAIntF,SAAS,UAAWlJ,GAChC,GAAIE,EAAG,CACL,IAAIG,EAAIH,EAAEmhD,WAAWnhD,EAAEyD,OAAS,GAChC,GAAItD,GAAK,OAAUA,GAAK,MAKtB,OAJAmC,KAAKylG,SAAW,EAChBzlG,KAAK0lG,UAAY,EACjB1lG,KAAK2lG,SAAS,GAAK9R,EAAIA,EAAI1yF,OAAS,GACpCnB,KAAK2lG,SAAS,GAAK9R,EAAIA,EAAI1yF,OAAS,GAC7BzD,EAAEsJ,MAAM,GAAI,EAEvB,CACA,OAAOtJ,CACT,CAIA,OAHAsC,KAAKylG,SAAW,EAChBzlG,KAAK0lG,UAAY,EACjB1lG,KAAK2lG,SAAS,GAAK9R,EAAIA,EAAI1yF,OAAS,GAC7B0yF,EAAIntF,SAAS,UAAWlJ,EAAGq2F,EAAI1yF,OAAS,EACjD,CAIA,SAAS+jG,EAASrR,GAChB,IAAIn2F,EAAIm2F,GAAOA,EAAI1yF,OAASnB,KAAKwlF,MAAMqO,GAAO,GAC9C,GAAI7zF,KAAKylG,SAAU,CACjB,IAAItyD,EAAMnzC,KAAK0lG,UAAY1lG,KAAKylG,SAChC,OAAO/nG,EAAIsC,KAAK2lG,SAASj/F,SAAS,UAAW,EAAGysC,EAClD,CACA,OAAOz1C,CACT,CAEA,SAAS2nG,EAAWxR,EAAKr2F,GACvB,IAAIC,GAAKo2F,EAAI1yF,OAAS3D,GAAK,EAC3B,OAAU,IAANC,EAAgBo2F,EAAIntF,SAAS,SAAUlJ,IAC3CwC,KAAKylG,SAAW,EAAIhoG,EACpBuC,KAAK0lG,UAAY,EACP,IAANjoG,EACFuC,KAAK2lG,SAAS,GAAK9R,EAAIA,EAAI1yF,OAAS,IAEpCnB,KAAK2lG,SAAS,GAAK9R,EAAIA,EAAI1yF,OAAS,GACpCnB,KAAK2lG,SAAS,GAAK9R,EAAIA,EAAI1yF,OAAS,IAE/B0yF,EAAIntF,SAAS,SAAUlJ,EAAGq2F,EAAI1yF,OAAS1D,GAChD,CAEA,SAAS6nG,EAAUzR,GACjB,IAAIn2F,EAAIm2F,GAAOA,EAAI1yF,OAASnB,KAAKwlF,MAAMqO,GAAO,GAC9C,OAAI7zF,KAAKylG,SAAiB/nG,EAAIsC,KAAK2lG,SAASj/F,SAAS,SAAU,EAAG,EAAI1G,KAAKylG,UACpE/nG,CACT,CAGA,SAAS6nG,EAAY1R,GACnB,OAAOA,EAAIntF,SAAS1G,KAAKsnF,SAC3B,CAEA,SAASke,EAAU3R,GACjB,OAAOA,GAAOA,EAAI1yF,OAASnB,KAAKwlF,MAAMqO,GAAO,EAC/C,CA1NAp3F,EAAQ,EAAgBorF,EA6BxBA,EAAc7wE,UAAUwuE,MAAQ,SAAUqO,GACxC,GAAmB,IAAfA,EAAI1yF,OAAc,MAAO,GAC7B,IAAIzD,EACAF,EACJ,GAAIwC,KAAKylG,SAAU,CAEjB,QAAU99F,KADVjK,EAAIsC,KAAKmlG,SAAStR,IACG,MAAO,GAC5Br2F,EAAIwC,KAAKylG,SACTzlG,KAAKylG,SAAW,CAClB,MACEjoG,EAAI,EAEN,OAAIA,EAAIq2F,EAAI1yF,OAAezD,EAAIA,EAAIsC,KAAKoF,KAAKyuF,EAAKr2F,GAAKwC,KAAKoF,KAAKyuF,EAAKr2F,GAC/DE,GAAK,EACd,EAEAmqF,EAAc7wE,UAAUm8B,IAwGxB,SAAiB0gD,GACf,IAAIn2F,EAAIm2F,GAAOA,EAAI1yF,OAASnB,KAAKwlF,MAAMqO,GAAO,GAC9C,OAAI7zF,KAAKylG,SAAiB/nG,EAAI,IACvBA,CACT,EAzGAmqF,EAAc7wE,UAAU5R,KA0FxB,SAAkByuF,EAAKr2F,GACrB,IAAImqD,EArEN,SAA6BzqD,EAAM22F,EAAKr2F,GACtC,IAAIgI,EAAIquF,EAAI1yF,OAAS,EACrB,GAAIqE,EAAIhI,EAAG,OAAO,EAClB,IAAIo2F,EAAKgS,EAAc/R,EAAIruF,IAC3B,OAAIouF,GAAM,GACJA,EAAK,IAAG12F,EAAKuoG,SAAW7R,EAAK,GAC1BA,KAEHpuF,EAAIhI,IAAa,IAARo2F,EAAkB,GACjCA,EAAKgS,EAAc/R,EAAIruF,MACb,GACJouF,EAAK,IAAG12F,EAAKuoG,SAAW7R,EAAK,GAC1BA,KAEHpuF,EAAIhI,IAAa,IAARo2F,EAAkB,GACjCA,EAAKgS,EAAc/R,EAAIruF,MACb,GACJouF,EAAK,IACI,IAAPA,EAAUA,EAAK,EAAO12F,EAAKuoG,SAAW7R,EAAK,GAE1CA,GAEF,CACT,CA8CcmS,CAAoB/lG,KAAM6zF,EAAKr2F,GAC3C,IAAKwC,KAAKylG,SAAU,OAAO5R,EAAIntF,SAAS,OAAQlJ,GAChDwC,KAAK0lG,UAAY/9C,EACjB,IAAIxU,EAAM0gD,EAAI1yF,QAAUwmD,EAAQ3nD,KAAKylG,UAErC,OADA5R,EAAI3W,KAAKl9E,KAAK2lG,SAAU,EAAGxyD,GACpB0gD,EAAIntF,SAAS,OAAQlJ,EAAG21C,EACjC,EA9FA00C,EAAc7wE,UAAUmuF,SAAW,SAAUtR,GAC3C,GAAI7zF,KAAKylG,UAAY5R,EAAI1yF,OAEvB,OADA0yF,EAAI3W,KAAKl9E,KAAK2lG,SAAU3lG,KAAK0lG,UAAY1lG,KAAKylG,SAAU,EAAGzlG,KAAKylG,UACzDzlG,KAAK2lG,SAASj/F,SAAS1G,KAAKsnF,SAAU,EAAGtnF,KAAK0lG,WAEvD7R,EAAI3W,KAAKl9E,KAAK2lG,SAAU3lG,KAAK0lG,UAAY1lG,KAAKylG,SAAU,EAAG5R,EAAI1yF,QAC/DnB,KAAKylG,UAAY5R,EAAI1yF,MACvB,0BCrIA,IAAIiS,EAAUxU,OAAOoY,UAAU5D,QAC3B4yF,EAAkB,OAElBC,EAES,UAGbhpG,EAAOR,QAAU,CACb,QAAWwpG,EACXC,WAAY,CACRC,QAAS,SAAU73F,GACf,OAAO8E,EAAQ9N,KAAKgJ,EAAO03F,EAAiB,IAChD,EACAI,QAAS,SAAU93F,GACf,OAAO1P,OAAO0P,EAClB,GAEJ63F,QAdS,UAeTC,QAASH,iCCnBb,IAAI9xF,EAAY,EAAQ,OACpB8a,EAAQ,EAAQ,MAChBo3E,EAAU,EAAQ,OAEtBppG,EAAOR,QAAU,CACb4pG,QAASA,EACTp3E,MAAOA,EACP9a,UAAWA,gCCPf,IAAImyF,EAAQ,EAAQ,OAEhBntE,EAAM15B,OAAOuX,UAAUC,eACvB5D,EAAU7I,MAAM6I,QAEhBkzF,EAAW,CACXC,WAAW,EACXC,iBAAiB,EACjBC,aAAa,EACbC,WAAY,GACZC,QAAS,QACTC,iBAAiB,EACjBC,OAAO,EACPjd,QAASyc,EAAM9qC,OACfsE,UAAW,IACX7B,MAAO,EACP8oC,mBAAmB,EACnBC,0BAA0B,EAC1BC,eAAgB,IAChBC,aAAa,EACbC,cAAc,EACdC,oBAAoB,GAGpBJ,EAA2B,SAAUpoD,GACrC,OAAOA,EAAIxrC,QAAQ,aAAa,SAAUi0F,EAAIC,GAC1C,OAAO1oG,OAAOm0B,aAAauW,SAASg+D,EAAW,IACnD,GACJ,EAEIC,EAAkB,SAAUvrC,EAAKvrD,GACjC,OAAIurD,GAAsB,iBAARA,GAAoBvrD,EAAQq2F,OAAS9qC,EAAIj9D,QAAQ,MAAQ,EAChEi9D,EAAIr/D,MAAM,KAGdq/D,CACX,EAgHIwrC,EAAY,SAA8BC,EAAUzrC,EAAKvrD,EAASi3F,GAClE,GAAKD,EAAL,CAKA,IAAIn4F,EAAMmB,EAAQ+1F,UAAYiB,EAASr0F,QAAQ,cAAe,QAAUq0F,EAKpE9qD,EAAQ,gBAIR4iB,EAAU9uD,EAAQwtD,MAAQ,GALf,eAK6B9zC,KAAK7a,GAC7C6G,EAASopD,EAAUjwD,EAAItI,MAAM,EAAGu4D,EAAQz5C,OAASxW,EAIjD0gB,EAAO,GACX,GAAI7Z,EAAQ,CAER,IAAK1F,EAAQ02F,cAAgBhuE,EAAI7zB,KAAK7F,OAAOuX,UAAWb,KAC/C1F,EAAQg2F,gBACT,OAIRz2E,EAAK1c,KAAK6C,EACd,CAKA,IADA,IAAI3Y,EAAI,EACDiT,EAAQwtD,MAAQ,GAAqC,QAA/BsB,EAAU5iB,EAAMxyB,KAAK7a,KAAkB9R,EAAIiT,EAAQwtD,OAAO,CAEnF,GADAzgE,GAAK,GACAiT,EAAQ02F,cAAgBhuE,EAAI7zB,KAAK7F,OAAOuX,UAAWuoD,EAAQ,GAAGv4D,MAAM,GAAI,MACpEyJ,EAAQg2F,gBACT,OAGRz2E,EAAK1c,KAAKisD,EAAQ,GACtB,CAQA,OAJIA,GACAvvC,EAAK1c,KAAK,IAAMhE,EAAItI,MAAMu4D,EAAQz5C,OAAS,KAnFjC,SAAU2uC,EAAOuH,EAAKvrD,EAASi3F,GAG7C,IAFA,IAAIC,EAAOD,EAAe1rC,EAAMurC,EAAgBvrC,EAAKvrD,GAE5CjT,EAAIi3D,EAAMtzD,OAAS,EAAG3D,GAAK,IAAKA,EAAG,CACxC,IAAI2hC,EACA9W,EAAOosC,EAAMj3D,GAEjB,GAAa,OAAT6qB,GAAiB5X,EAAQy2F,YACzB/nE,EAAM,GAAGh/B,OAAOwnG,OACb,CACHxoE,EAAM1uB,EAAQ02F,aAAe1nG,OAAOsiE,OAAO,MAAQ,CAAC,EACpD,IAAI6lC,EAA+B,MAAnBv/E,EAAK+2C,OAAO,IAA+C,MAAjC/2C,EAAK+2C,OAAO/2C,EAAKlnB,OAAS,GAAaknB,EAAKrhB,MAAM,GAAI,GAAKqhB,EACjGvC,EAAQwjB,SAASs+D,EAAW,IAC3Bn3F,EAAQy2F,aAA6B,KAAdU,GAGvBjmE,MAAM7b,IACJuC,IAASu/E,GACThpG,OAAOknB,KAAW8hF,GAClB9hF,GAAS,GACRrV,EAAQy2F,aAAephF,GAASrV,EAAQk2F,YAE5CxnE,EAAM,IACFrZ,GAAS6hF,EACQ,cAAdC,IACPzoE,EAAIyoE,GAAaD,GAXjBxoE,EAAM,CAAE,EAAGwoE,EAanB,CAEAA,EAAOxoE,CACX,CAEA,OAAOwoE,CACX,CAqDWE,CAAY73E,EAAMgsC,EAAKvrD,EAASi3F,EAhDvC,CAiDJ,EAqCAzqG,EAAOR,QAAU,SAAUmiD,EAAKptB,GAC5B,IAAI/gB,EApCoB,SAA+B+gB,GACvD,IAAKA,EACD,OAAO+0E,EAGX,GAAqB,OAAjB/0E,EAAKq4D,cAAqCliF,IAAjB6pB,EAAKq4D,SAAiD,mBAAjBr4D,EAAKq4D,QACnE,MAAM,IAAI3+C,UAAU,iCAGxB,QAA4B,IAAjB1Z,EAAKo1E,SAA4C,UAAjBp1E,EAAKo1E,SAAwC,eAAjBp1E,EAAKo1E,QACxE,MAAM,IAAI17D,UAAU,qEAExB,IAAI07D,OAAkC,IAAjBp1E,EAAKo1E,QAA0BL,EAASK,QAAUp1E,EAAKo1E,QAE5E,MAAO,CACHJ,eAAqC,IAAnBh1E,EAAKg1E,UAA4BD,EAASC,YAAch1E,EAAKg1E,UAC/EC,gBAAiD,kBAAzBj1E,EAAKi1E,gBAAgCj1E,EAAKi1E,gBAAkBF,EAASE,gBAC7FC,YAAyC,kBAArBl1E,EAAKk1E,YAA4Bl1E,EAAKk1E,YAAcH,EAASG,YACjFC,WAAuC,iBAApBn1E,EAAKm1E,WAA0Bn1E,EAAKm1E,WAAaJ,EAASI,WAC7EC,QAASA,EACTC,gBAAiD,kBAAzBr1E,EAAKq1E,gBAAgCr1E,EAAKq1E,gBAAkBN,EAASM,gBAC7FC,MAA6B,kBAAft1E,EAAKs1E,MAAsBt1E,EAAKs1E,MAAQP,EAASO,MAC/Djd,QAAiC,mBAAjBr4D,EAAKq4D,QAAyBr4D,EAAKq4D,QAAU0c,EAAS1c,QACtE/pB,UAAqC,iBAAnBtuC,EAAKsuC,WAA0BwmC,EAAMnO,SAAS3mE,EAAKsuC,WAAatuC,EAAKsuC,UAAYymC,EAASzmC,UAE5G7B,MAA8B,iBAAfzsC,EAAKysC,QAAqC,IAAfzsC,EAAKysC,OAAoBzsC,EAAKysC,MAAQsoC,EAAStoC,MACzF8oC,mBAA8C,IAA3Bv1E,EAAKu1E,kBACxBC,yBAAmE,kBAAlCx1E,EAAKw1E,yBAAyCx1E,EAAKw1E,yBAA2BT,EAASS,yBACxHC,eAA+C,iBAAxBz1E,EAAKy1E,eAA8Bz1E,EAAKy1E,eAAiBV,EAASU,eACzFC,aAAkC,IAArB11E,EAAK01E,YAClBC,aAA2C,kBAAtB31E,EAAK21E,aAA6B31E,EAAK21E,aAAeZ,EAASY,aACpFC,mBAAuD,kBAA5B51E,EAAK41E,mBAAmC51E,EAAK41E,mBAAqBb,EAASa,mBAE9G,CAGkBU,CAAsBt2E,GAEpC,GAAY,KAARotB,SAAcA,EACd,OAAOnuC,EAAQ02F,aAAe1nG,OAAOsiE,OAAO,MAAQ,CAAC,EASzD,IANA,IAAIgmC,EAAyB,iBAARnpD,EApMP,SAAgCA,EAAKnuC,GACnD,IAMIjT,EANA2hC,EAAM,CAAEouC,UAAW,MAEnBy6B,EAAWv3F,EAAQs2F,kBAAoBnoD,EAAIxrC,QAAQ,MAAO,IAAMwrC,EAChEqpD,EAAQx3F,EAAQw2F,iBAAmB1P,SAAW5vF,EAAY8I,EAAQw2F,eAClElrC,EAAQisC,EAASrrG,MAAM8T,EAAQqvD,UAAWmoC,GAC1CC,GAAa,EAGbtB,EAAUn2F,EAAQm2F,QACtB,GAAIn2F,EAAQo2F,gBACR,IAAKrpG,EAAI,EAAGA,EAAIu+D,EAAM56D,SAAU3D,EACM,IAA9Bu+D,EAAMv+D,GAAGuB,QAAQ,WAdX,mBAeFg9D,EAAMv+D,GACNopG,EAAU,QAnBZ,wBAoBS7qC,EAAMv+D,KACbopG,EAAU,cAEdsB,EAAY1qG,EACZA,EAAIu+D,EAAM56D,QAKtB,IAAK3D,EAAI,EAAGA,EAAIu+D,EAAM56D,SAAU3D,EAC5B,GAAIA,IAAM0qG,EAAV,CAGA,IAKI54F,EAAK0sD,EALL+mB,EAAOhnB,EAAMv+D,GAEb2qG,EAAmBplB,EAAKhkF,QAAQ,MAChCqpG,GAA4B,IAAtBD,EAA0BplB,EAAKhkF,QAAQ,KAAOopG,EAAmB,GAG9D,IAATC,GACA94F,EAAMmB,EAAQo5E,QAAQ9G,EAAMwjB,EAAS1c,QAAS+c,EAAS,OACvD5qC,EAAMvrD,EAAQ22F,mBAAqB,KAAO,KAE1C93F,EAAMmB,EAAQo5E,QAAQ9G,EAAK/7E,MAAM,EAAGohG,GAAM7B,EAAS1c,QAAS+c,EAAS,OACrE5qC,EAAMsqC,EAAM+B,SACRd,EAAgBxkB,EAAK/7E,MAAMohG,EAAM,GAAI33F,IACrC,SAAU63F,GACN,OAAO73F,EAAQo5E,QAAQye,EAAY/B,EAAS1c,QAAS+c,EAAS,QAClE,KAIJ5qC,GAAOvrD,EAAQu2F,0BAAwC,eAAZJ,IAC3C5qC,EAAMgrC,EAAyBhrC,IAG/B+mB,EAAKhkF,QAAQ,QAAU,IACvBi9D,EAAM3oD,EAAQ2oD,GAAO,CAACA,GAAOA,GAG7B7iC,EAAI7zB,KAAK65B,EAAK7vB,GACd6vB,EAAI7vB,GAAOg3F,EAAMiC,QAAQppE,EAAI7vB,GAAM0sD,GAEnC78B,EAAI7vB,GAAO0sD,CA/Bf,CAmCJ,OAAO78B,CACX,CAqI4CqpE,CAAY5pD,EAAKnuC,GAAWmuC,EAChEzf,EAAM1uB,EAAQ02F,aAAe1nG,OAAOsiE,OAAO,MAAQ,CAAC,EAIpD/xC,EAAOvwB,OAAOuwB,KAAK+3E,GACdvqG,EAAI,EAAGA,EAAIwyB,EAAK7uB,SAAU3D,EAAG,CAClC,IAAI8R,EAAM0gB,EAAKxyB,GACXirG,EAASjB,EAAUl4F,EAAKy4F,EAAQz4F,GAAMmB,EAAwB,iBAARmuC,GAC1Dzf,EAAMmnE,EAAM5vC,MAAMv3B,EAAKspE,EAAQh4F,EACnC,CAEA,OAA4B,IAAxBA,EAAQi2F,YACDvnE,EAGJmnE,EAAMoC,QAAQvpE,EACzB,gCCrQA,IAAIwpE,EAAiB,EAAQ,OACzBrC,EAAQ,EAAQ,OAChBD,EAAU,EAAQ,OAClBltE,EAAM15B,OAAOuX,UAAUC,eAEvB2xF,EAAwB,CACxBC,SAAU,SAAkBhvD,GACxB,OAAOA,EAAS,IACpB,EACAitD,MAAO,QACPgC,QAAS,SAAiBjvD,EAAQvqC,GAC9B,OAAOuqC,EAAS,IAAMvqC,EAAM,GAChC,EACA0wD,OAAQ,SAAgBnmB,GACpB,OAAOA,CACX,GAGAxmC,EAAU7I,MAAM6I,QAChBC,EAAO9I,MAAMwM,UAAU1D,KACvBy1F,EAAc,SAAUl+D,EAAKm+D,GAC7B11F,EAAK3D,MAAMk7B,EAAKx3B,EAAQ21F,GAAgBA,EAAe,CAACA,GAC5D,EAEIC,EAAQrgG,KAAKoO,UAAUkyF,YAEvBC,EAAgB9C,EAAiB,QACjCE,EAAW,CACX6C,gBAAgB,EAChB5C,WAAW,EACXI,QAAS,QACTC,iBAAiB,EACjB/mC,UAAW,IACXvE,QAAQ,EACR8tC,QAAS/C,EAAM/qC,OACf+tC,kBAAkB,EAClB9nD,OAAQ2nD,EACR92B,UAAWg0B,EAAQH,WAAWiD,GAE9BL,SAAS,EACTS,cAAe,SAAuBC,GAClC,OAAOP,EAAM3jG,KAAKkkG,EACtB,EACAC,WAAW,EACXrC,oBAAoB,GAWpBsC,EAAW,CAAC,EAEZv1F,EAAY,SAASA,EACrBi2B,EACAyP,EACA8vD,EACAC,EACAxC,EACAqC,EACAJ,EACA/lG,EACAgZ,EACAkqF,EACA+C,EACA/nD,EACA6wB,EACAi3B,EACA1C,EACAiD,GAOA,IALA,IA5BuDzlG,EA4BnD+6B,EAAMiL,EAEN0/D,EAAQD,EACR5/B,EAAO,EACP8/B,GAAW,OAC0B,KAAjCD,EAAQA,EAAM/yF,IAAI2yF,MAAkCK,GAAU,CAElE,IAAI3B,EAAM0B,EAAM/yF,IAAIqzB,GAEpB,GADA6/B,GAAQ,OACW,IAARm+B,EAAqB,CAC5B,GAAIA,IAAQn+B,EACR,MAAM,IAAI8W,WAAW,uBAErBgpB,GAAW,CAEnB,MACmC,IAAxBD,EAAM/yF,IAAI2yF,KACjBz/B,EAAO,EAEf,CAeA,GAbsB,mBAAX3mE,EACP67B,EAAM77B,EAAOu2C,EAAQ1a,GACdA,aAAev2B,KACtBu2B,EAAMoqE,EAAcpqE,GACW,UAAxBwqE,GAAmCt2F,EAAQ8rB,KAClDA,EAAMmnE,EAAM+B,SAASlpE,GAAK,SAAU7wB,GAChC,OAAIA,aAAiB1F,KACV2gG,EAAcj7F,GAElBA,CACX,KAGQ,OAAR6wB,EAAc,CACd,GAAIioE,EACA,OAAOiC,IAAYC,EAAmBD,EAAQxvD,EAAQ0sD,EAAS8C,QAASzC,EAAS,MAAOplD,GAAU3H,EAGtG1a,EAAM,EACV,CAEA,GArEoB,iBADmC/6B,EAsE7B+6B,IApEN,iBAAN/6B,GACM,kBAANA,GACM,iBAANA,GACM,iBAANA,GAiEoBkiG,EAAM3uC,SAASx4B,GAC7C,OAAIkqE,EAEO,CAACh3B,EADOi3B,EAAmBzvD,EAASwvD,EAAQxvD,EAAQ0sD,EAAS8C,QAASzC,EAAS,MAAOplD,IAC/D,IAAM6wB,EAAUg3B,EAAQlqE,EAAKonE,EAAS8C,QAASzC,EAAS,QAASplD,KAE5F,CAAC6wB,EAAUx4B,GAAU,IAAMw4B,EAAUzzE,OAAOugC,KAGvD,IAMI6qE,EANA1/E,EAAS,GAEb,QAAmB,IAAR6U,EACP,OAAO7U,EAIX,GAA4B,UAAxBq/E,GAAmCt2F,EAAQ8rB,GAEvCmqE,GAAoBD,IACpBlqE,EAAMmnE,EAAM+B,SAASlpE,EAAKkqE,IAE9BW,EAAU,CAAC,CAAE17F,MAAO6wB,EAAIh+B,OAAS,EAAIg+B,EAAIriC,KAAK,MAAQ,UAAO,SAC1D,GAAIuW,EAAQ/P,GACf0mG,EAAU1mG,MACP,CACH,IAAI0sB,EAAOvwB,OAAOuwB,KAAKmP,GACvB6qE,EAAU1tF,EAAO0T,EAAK1T,KAAKA,GAAQ0T,CACvC,CAIA,IAFA,IAAIi6E,EAAiBL,GAAkBv2F,EAAQ8rB,IAAuB,IAAfA,EAAIh+B,OAAe04C,EAAS,KAAOA,EAEjFr0C,EAAI,EAAGA,EAAIwkG,EAAQ7oG,SAAUqE,EAAG,CACrC,IAAI8J,EAAM06F,EAAQxkG,GACd8I,EAAuB,iBAARgB,QAAyC,IAAdA,EAAIhB,MAAwBgB,EAAIhB,MAAQ6wB,EAAI7vB,GAE1F,IAAIm6F,GAAuB,OAAVn7F,EAAjB,CAIA,IAAI47F,EAAY72F,EAAQ8rB,GACa,mBAAxBwqE,EAAqCA,EAAoBM,EAAgB36F,GAAO26F,EACvFA,GAAkBzD,EAAY,IAAMl3F,EAAM,IAAMA,EAAM,KAE5Du6F,EAAYltF,IAAIytB,EAAQ6/B,GACxB,IAAIkgC,EAAmBxB,IACvBwB,EAAiBxtF,IAAI+sF,EAAUG,GAC/Bd,EAAYz+E,EAAQnW,EAChB7F,EACA47F,EACAP,EACAC,EACAxC,EACAqC,EACwB,UAAxBE,GAAmCL,GAAoBj2F,EAAQ8rB,GAAO,KAAOkqE,EAC7E/lG,EACAgZ,EACAkqF,EACA+C,EACA/nD,EACA6wB,EACAi3B,EACA1C,EACAuD,GAzBJ,CA2BJ,CAEA,OAAO7/E,CACX,EAiDArtB,EAAOR,QAAU,SAAU2tC,EAAQ5Y,GAC/B,IAGIw4E,EAHA7qE,EAAMiL,EACN35B,EAjDwB,SAAmC+gB,GAC/D,IAAKA,EACD,OAAO+0E,EAGX,GAAqB,OAAjB/0E,EAAK63E,cAA4C,IAAjB73E,EAAK63E,SAAmD,mBAAjB73E,EAAK63E,QAC5E,MAAM,IAAIn+D,UAAU,iCAGxB,IAAI07D,EAAUp1E,EAAKo1E,SAAWL,EAASK,QACvC,QAA4B,IAAjBp1E,EAAKo1E,SAA4C,UAAjBp1E,EAAKo1E,SAAwC,eAAjBp1E,EAAKo1E,QACxE,MAAM,IAAI17D,UAAU,qEAGxB,IAAIsW,EAAS6kD,EAAiB,QAC9B,QAA2B,IAAhB70E,EAAKgwB,OAAwB,CACpC,IAAKroB,EAAI7zB,KAAK+gG,EAAQH,WAAY10E,EAAKgwB,QACnC,MAAM,IAAItW,UAAU,mCAExBsW,EAAShwB,EAAKgwB,MAClB,CACA,IAAI6wB,EAAYg0B,EAAQH,WAAW1kD,GAE/Bl+C,EAASijG,EAASjjG,OAKtB,OAJ2B,mBAAhBkuB,EAAKluB,QAAyB+P,EAAQme,EAAKluB,WAClDA,EAASkuB,EAAKluB,QAGX,CACH8lG,eAA+C,kBAAxB53E,EAAK43E,eAA+B53E,EAAK43E,eAAiB7C,EAAS6C,eAC1F5C,eAAqC,IAAnBh1E,EAAKg1E,UAA4BD,EAASC,YAAch1E,EAAKg1E,UAC/EI,QAASA,EACTC,gBAAiD,kBAAzBr1E,EAAKq1E,gBAAgCr1E,EAAKq1E,gBAAkBN,EAASM,gBAC7F/mC,eAAqC,IAAnBtuC,EAAKsuC,UAA4BymC,EAASzmC,UAAYtuC,EAAKsuC,UAC7EvE,OAA+B,kBAAhB/pC,EAAK+pC,OAAuB/pC,EAAK+pC,OAASgrC,EAAShrC,OAClE8tC,QAAiC,mBAAjB73E,EAAK63E,QAAyB73E,EAAK63E,QAAU9C,EAAS8C,QACtEC,iBAAmD,kBAA1B93E,EAAK83E,iBAAiC93E,EAAK83E,iBAAmB/C,EAAS+C,iBAChGhmG,OAAQA,EACRk+C,OAAQA,EACR6wB,UAAWA,EACXk3B,cAA6C,mBAAvB/3E,EAAK+3E,cAA+B/3E,EAAK+3E,cAAgBhD,EAASgD,cACxFE,UAAqC,kBAAnBj4E,EAAKi4E,UAA0Bj4E,EAAKi4E,UAAYlD,EAASkD,UAC3EntF,KAA2B,mBAAdkV,EAAKlV,KAAsBkV,EAAKlV,KAAO,KACpD8qF,mBAAuD,kBAA5B51E,EAAK41E,mBAAmC51E,EAAK41E,mBAAqBb,EAASa,mBAE9G,CAIkBgD,CAA0B54E,GAKV,mBAAnB/gB,EAAQnN,OAEf67B,GADA77B,EAASmN,EAAQnN,QACJ,GAAI67B,GACV9rB,EAAQ5C,EAAQnN,UAEvB0mG,EADSv5F,EAAQnN,QAIrB,IAMI6uE,EANAniD,EAAO,GAEX,GAAmB,iBAARmP,GAA4B,OAARA,EAC3B,MAAO,GAKPgzC,EADA3gD,GAAQA,EAAK2gD,eAAey2B,EACdp3E,EAAK2gD,YACZ3gD,GAAQ,YAAaA,EACdA,EAAKs3E,QAAU,UAAY,SAE3B,UAGlB,IAAIa,EAAsBf,EAAsBz2B,GAChD,GAAI3gD,GAAQ,mBAAoBA,GAAuC,kBAAxBA,EAAKo4E,eAChD,MAAM,IAAI1+D,UAAU,iDAExB,IAAI0+D,EAAyC,UAAxBD,GAAmCn4E,GAAQA,EAAKo4E,eAEhEI,IACDA,EAAUvqG,OAAOuwB,KAAKmP,IAGtB1uB,EAAQ6L,MACR0tF,EAAQ1tF,KAAK7L,EAAQ6L,MAIzB,IADA,IAAIutF,EAAclB,IACTnrG,EAAI,EAAGA,EAAIwsG,EAAQ7oG,SAAU3D,EAAG,CACrC,IAAI8R,EAAM06F,EAAQxsG,GAEdiT,EAAQg5F,WAA0B,OAAbtqE,EAAI7vB,IAG7By5F,EAAY/4E,EAAM7b,EACdgrB,EAAI7vB,GACJA,EACAq6F,EACAC,EACAn5F,EAAQ22F,mBACR32F,EAAQg5F,UACRh5F,EAAQ8qD,OAAS9qD,EAAQ44F,QAAU,KACnC54F,EAAQnN,OACRmN,EAAQ6L,KACR7L,EAAQ+1F,UACR/1F,EAAQ84F,cACR94F,EAAQ+wC,OACR/wC,EAAQ4hE,UACR5hE,EAAQ64F,iBACR74F,EAAQm2F,QACRiD,GAER,CAEA,IAAIQ,EAASr6E,EAAKlzB,KAAK2T,EAAQqvD,WAC3BjmB,GAAoC,IAA3BppC,EAAQ24F,eAA0B,IAAM,GAYrD,OAVI34F,EAAQo2F,kBACgB,eAApBp2F,EAAQm2F,QAER/sD,GAAU,uBAGVA,GAAU,mBAIXwwD,EAAOlpG,OAAS,EAAI04C,EAASwwD,EAAS,EACjD,gCC7TA,IAAIhE,EAAU,EAAQ,OAElBltE,EAAM15B,OAAOuX,UAAUC,eACvB5D,EAAU7I,MAAM6I,QAEhBi3F,EAAY,WAEZ,IADA,IAAI3O,EAAQ,GACHn+F,EAAI,EAAGA,EAAI,MAAOA,EACvBm+F,EAAMroF,KAAK,MAAQ9V,EAAI,GAAK,IAAM,IAAMA,EAAEkJ,SAAS,KAAK0uD,eAG5D,OAAOumC,CACX,CAPe,GA4BX4O,EAAgB,SAAuB5iF,EAAQlX,GAE/C,IADA,IAAI0uB,EAAM1uB,GAAWA,EAAQ02F,aAAe1nG,OAAOsiE,OAAO,MAAQ,CAAC,EAC1DvkE,EAAI,EAAGA,EAAImqB,EAAOxmB,SAAU3D,OACR,IAAdmqB,EAAOnqB,KACd2hC,EAAI3hC,GAAKmqB,EAAOnqB,IAIxB,OAAO2hC,CACX,EAoMAliC,EAAOR,QAAU,CACb8tG,cAAeA,EACf/2F,OA3IS,SAA4BxR,EAAQ2lB,GAC7C,OAAOloB,OAAOuwB,KAAKrI,GAAQpL,QAAO,SAAUqpB,EAAKt2B,GAE7C,OADAs2B,EAAIt2B,GAAOqY,EAAOrY,GACXs2B,CACX,GAAG5jC,EACP,EAuIIumG,QAlBU,SAAiBprG,EAAGkH,GAC9B,MAAO,GAAGlE,OAAOhD,EAAGkH,EACxB,EAiBIqkG,QAvDU,SAAiBp6F,GAI3B,IAHA,IAAI07D,EAAQ,CAAC,CAAE7qC,IAAK,CAAE5hC,EAAG+Q,GAASsa,KAAM,MACpC4hF,EAAO,GAEFhtG,EAAI,EAAGA,EAAIwsE,EAAM7oE,SAAU3D,EAKhC,IAJA,IAAIkxB,EAAOs7C,EAAMxsE,GACb2hC,EAAMzQ,EAAKyQ,IAAIzQ,EAAK9F,MAEpBoH,EAAOvwB,OAAOuwB,KAAKmP,GACd35B,EAAI,EAAGA,EAAIwqB,EAAK7uB,SAAUqE,EAAG,CAClC,IAAI8J,EAAM0gB,EAAKxqB,GACXw2D,EAAM78B,EAAI7vB,GACK,iBAAR0sD,GAA4B,OAARA,IAAuC,IAAvBwuC,EAAKzrG,QAAQi9D,KACxDgO,EAAM12D,KAAK,CAAE6rB,IAAKA,EAAKvW,KAAMtZ,IAC7Bk7F,EAAKl3F,KAAK0oD,GAElB,CAKJ,OAlMe,SAAsBgO,GACrC,KAAOA,EAAM7oE,OAAS,GAAG,CACrB,IAAIutB,EAAOs7C,EAAM1gD,MACb6V,EAAMzQ,EAAKyQ,IAAIzQ,EAAK9F,MAExB,GAAIvV,EAAQ8rB,GAAM,CAGd,IAFA,IAAIsrE,EAAY,GAEPjlG,EAAI,EAAGA,EAAI25B,EAAIh+B,SAAUqE,OACR,IAAX25B,EAAI35B,IACXilG,EAAUn3F,KAAK6rB,EAAI35B,IAI3BkpB,EAAKyQ,IAAIzQ,EAAK9F,MAAQ6hF,CAC1B,CACJ,CACJ,CA+KIC,CAAa1gC,GAEN17D,CACX,EAkCIktD,OAvIS,SAAU5c,EAAKirC,EAAS+c,GACjC,IAAI+D,EAAiB/rD,EAAIxrC,QAAQ,MAAO,KACxC,GAAgB,eAAZwzF,EAEA,OAAO+D,EAAev3F,QAAQ,iBAAkBa,UAGpD,IACI,OAAOwnD,mBAAmBkvC,EAC9B,CAAE,MAAO5tG,GACL,OAAO4tG,CACX,CACJ,EA4HIpvC,OA1HS,SAAgB3c,EAAKgsD,EAAgBhE,EAASiE,EAAMrpD,GAG7D,GAAmB,IAAf5C,EAAIz9C,OACJ,OAAOy9C,EAGX,IAAImM,EAASnM,EAOb,GANmB,iBAARA,EACPmM,EAAS7zC,OAAOF,UAAUtQ,SAASpB,KAAKs5C,GAClB,iBAARA,IACdmM,EAASnsD,OAAOggD,IAGJ,eAAZgoD,EACA,OAAOkE,OAAO//C,GAAQ33C,QAAQ,mBAAmB,SAAUi0F,GACvD,MAAO,SAAW/9D,SAAS+9D,EAAGrgG,MAAM,GAAI,IAAM,KAClD,IAIJ,IADA,IAAIkqF,EAAM,GACD1zF,EAAI,EAAGA,EAAIutD,EAAO5pD,SAAU3D,EAAG,CACpC,IAAIK,EAAIktD,EAAOlM,WAAWrhD,GAGhB,KAANK,GACS,KAANA,GACM,KAANA,GACM,MAANA,GACCA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,KAClB2jD,IAAW6kD,EAAQF,UAAkB,KAANtoG,GAAoB,KAANA,GAEjDqzF,GAAOnmC,EAAOqU,OAAO5hE,GAIrBK,EAAI,IACJqzF,GAAYoZ,EAASzsG,GAIrBA,EAAI,KACJqzF,GAAaoZ,EAAS,IAAQzsG,GAAK,GAAMysG,EAAS,IAAY,GAAJzsG,GAI1DA,EAAI,OAAUA,GAAK,MACnBqzF,GAAaoZ,EAAS,IAAQzsG,GAAK,IAAOysG,EAAS,IAASzsG,GAAK,EAAK,IAASysG,EAAS,IAAY,GAAJzsG,IAIpGL,GAAK,EACLK,EAAI,QAAiB,KAAJA,IAAc,GAA8B,KAAvBktD,EAAOlM,WAAWrhD,IAExD0zF,GAAOoZ,EAAS,IAAQzsG,GAAK,IACvBysG,EAAS,IAASzsG,GAAK,GAAM,IAC7BysG,EAAS,IAASzsG,GAAK,EAAK,IAC5BysG,EAAS,IAAY,GAAJzsG,GAC3B,CAEA,OAAOqzF,CACX,EA4DIv5B,SA9BW,SAAkBx4B,GAC7B,SAAKA,GAAsB,iBAARA,KAITA,EAAIzW,aAAeyW,EAAIzW,YAAYivC,UAAYx4B,EAAIzW,YAAYivC,SAASx4B,IACtF,EAyBIg5D,SAnCW,SAAkBh5D,GAC7B,MAA+C,oBAAxC1/B,OAAOuX,UAAUtQ,SAASpB,KAAK65B,EAC1C,EAkCIkpE,SApBW,SAAkBrsC,EAAKzsD,GAClC,GAAI8D,EAAQ2oD,GAAM,CAEd,IADA,IAAI+uC,EAAS,GACJvtG,EAAI,EAAGA,EAAIw+D,EAAI76D,OAAQ3D,GAAK,EACjCutG,EAAOz3F,KAAK/D,EAAGysD,EAAIx+D,KAEvB,OAAOutG,CACX,CACA,OAAOx7F,EAAGysD,EACd,EAYItF,MA5MQ,SAASA,EAAM10D,EAAQ2lB,EAAQlX,GAEvC,IAAKkX,EACD,OAAO3lB,EAGX,GAAsB,iBAAX2lB,EAAqB,CAC5B,GAAItU,EAAQrR,GACRA,EAAOsR,KAAKqU,OACT,KAAI3lB,GAA4B,iBAAXA,EAKxB,MAAO,CAACA,EAAQ2lB,IAJXlX,IAAYA,EAAQ02F,cAAgB12F,EAAQg2F,mBAAsBttE,EAAI7zB,KAAK7F,OAAOuX,UAAW2Q,MAC9F3lB,EAAO2lB,IAAU,EAIzB,CAEA,OAAO3lB,CACX,CAEA,IAAKA,GAA4B,iBAAXA,EAClB,MAAO,CAACA,GAAQ7B,OAAOwnB,GAG3B,IAAIqjF,EAAchpG,EAKlB,OAJIqR,EAAQrR,KAAYqR,EAAQsU,KAC5BqjF,EAAcT,EAAcvoG,EAAQyO,IAGpC4C,EAAQrR,IAAWqR,EAAQsU,IAC3BA,EAAO1V,SAAQ,SAAUyc,EAAMlxB,GAC3B,GAAI27B,EAAI7zB,KAAKtD,EAAQxE,GAAI,CACrB,IAAIytG,EAAajpG,EAAOxE,GACpBytG,GAAoC,iBAAfA,GAA2Bv8E,GAAwB,iBAATA,EAC/D1sB,EAAOxE,GAAKk5D,EAAMu0C,EAAYv8E,EAAMje,GAEpCzO,EAAOsR,KAAKob,EAEpB,MACI1sB,EAAOxE,GAAKkxB,CAEpB,IACO1sB,GAGJvC,OAAOuwB,KAAKrI,GAAQpL,QAAO,SAAUqpB,EAAKt2B,GAC7C,IAAIhB,EAAQqZ,EAAOrY,GAOnB,OALI6pB,EAAI7zB,KAAKsgC,EAAKt2B,GACds2B,EAAIt2B,GAAOonD,EAAM9wB,EAAIt2B,GAAMhB,EAAOmC,GAElCm1B,EAAIt2B,GAAOhB,EAERs3B,CACX,GAAGolE,EACP,gCC5EA,IAAIhQ,EAAW,EAAQ,OAEvB,SAASkQ,IACPlrG,KAAKq4D,SAAW,KAChBr4D,KAAKmrG,QAAU,KACfnrG,KAAKihG,KAAO,KACZjhG,KAAK8rB,KAAO,KACZ9rB,KAAKu/F,KAAO,KACZv/F,KAAKs/F,SAAW,KAChBt/F,KAAK08D,KAAO,KACZ18D,KAAKyqB,OAAS,KACdzqB,KAAKsmB,MAAQ,KACbtmB,KAAKopB,SAAW,KAChBppB,KAAKtD,KAAO,KACZsD,KAAKyD,KAAO,IACd,CAQA,IAAI2nG,EAAkB,oBACpBC,EAAc,WAGdC,EAAoB,oCAWpBC,EAAS,CACP,IAAK,IAAK,IAAK,KAAM,IAAK,KAC1BprG,OAPO,CACP,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,OASvCqrG,EAAa,CAAC,KAAMrrG,OAAOorG,GAO3BE,EAAe,CACb,IAAK,IAAK,IAAK,IAAK,KACpBtrG,OAAOqrG,GACTE,EAAkB,CAChB,IAAK,IAAK,KAGZC,EAAsB,yBACtBC,EAAoB,+BAEpBC,EAAiB,CACfC,YAAY,EACZ,eAAe,GAGjBC,EAAmB,CACjBD,YAAY,EACZ,eAAe,GAGjBE,EAAkB,CAChBvoB,MAAM,EACNC,OAAO,EACPuoB,KAAK,EACLC,QAAQ,EACRl1E,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,GAEXm1E,EAAc,EAAQ,OAExB,SAASC,EAASjjF,EAAKkjF,EAAkBC,GACvC,GAAInjF,GAAsB,iBAARA,GAAoBA,aAAe+hF,EAAO,OAAO/hF,EAEnE,IAAIrrB,EAAI,IAAIotG,EAEZ,OADAptG,EAAEmxB,MAAM9F,EAAKkjF,EAAkBC,GACxBxuG,CACT,CAEAotG,EAAIl0F,UAAUiY,MAAQ,SAAU9F,EAAKkjF,EAAkBC,GACrD,GAAmB,iBAARnjF,EACT,MAAM,IAAI+hB,UAAU,gDAAkD/hB,GAQxE,IAAIu5C,EAAav5C,EAAIpqB,QAAQ,KAC3BwtG,GAA2B,IAAhB7pC,GAAqBA,EAAav5C,EAAIpqB,QAAQ,KAAO,IAAM,IACtEytG,EAASrjF,EAAIxsB,MAAM4vG,GAErBC,EAAO,GAAKA,EAAO,GAAGp5F,QADP,MAC2B,KAG1C,IAAIq5F,EAFJtjF,EAAMqjF,EAAO1vG,KAAKyvG,GAUlB,GAFAE,EAAOA,EAAKpnG,QAEPinG,GAA+C,IAA1BnjF,EAAIxsB,MAAM,KAAKwE,OAAc,CAErD,IAAIurG,EAAapB,EAAkBnhF,KAAKsiF,GACxC,GAAIC,EAeF,OAdA1sG,KAAKtD,KAAO+vG,EACZzsG,KAAKyD,KAAOgpG,EACZzsG,KAAKopB,SAAWsjF,EAAW,GACvBA,EAAW,IACb1sG,KAAKyqB,OAASiiF,EAAW,GAEvB1sG,KAAKsmB,MADH+lF,EACWF,EAAYl9E,MAAMjvB,KAAKyqB,OAAO62C,OAAO,IAErCthE,KAAKyqB,OAAO62C,OAAO,IAEzB+qC,IACTrsG,KAAKyqB,OAAS,GACdzqB,KAAKsmB,MAAQ,CAAC,GAETtmB,IAEX,CAEA,IAAIw2D,EAAQ40C,EAAgBjhF,KAAKsiF,GACjC,GAAIj2C,EAAO,CAET,IAAIm2C,GADJn2C,EAAQA,EAAM,IACSviC,cACvBj0B,KAAKq4D,SAAWs0C,EAChBF,EAAOA,EAAKnrC,OAAO9K,EAAMr1D,OAC3B,CAQA,GAAImrG,GAAqB91C,GAASi2C,EAAK5kF,MAAM,sBAAuB,CAClE,IAAIsjF,EAAgC,OAAtBsB,EAAKnrC,OAAO,EAAG,IACzB6pC,GAAa30C,GAASu1C,EAAiBv1C,KACzCi2C,EAAOA,EAAKnrC,OAAO,GACnBthE,KAAKmrG,SAAU,EAEnB,CAEA,IAAKY,EAAiBv1C,KAAW20C,GAAY30C,IAAUw1C,EAAgBx1C,IAAU,CAuB/E,IADA,IAUIyqC,EAAM2L,EAVNC,GAAW,EACNrvG,EAAI,EAAGA,EAAIkuG,EAAgBvqG,OAAQ3D,KAE7B,KADTsvG,EAAML,EAAK1tG,QAAQ2sG,EAAgBluG,QACP,IAAbqvG,GAAkBC,EAAMD,KAAYA,EAAUC,GA+BnE,KARgB,KAbdF,GAFe,IAAbC,EAEOJ,EAAK3P,YAAY,KAMjB2P,EAAK3P,YAAY,IAAK+P,MAQ/B5L,EAAOwL,EAAKzlG,MAAM,EAAG4lG,GACrBH,EAAOA,EAAKzlG,MAAM4lG,EAAS,GAC3B5sG,KAAKihG,KAAOxlC,mBAAmBwlC,IAIjC4L,GAAW,EACFrvG,EAAI,EAAGA,EAAIiuG,EAAatqG,OAAQ3D,IAAK,CAC5C,IAAIsvG,GACS,KADTA,EAAML,EAAK1tG,QAAQ0sG,EAAajuG,QACJ,IAAbqvG,GAAkBC,EAAMD,KAAYA,EAAUC,EACnE,EAEiB,IAAbD,IAAkBA,EAAUJ,EAAKtrG,QAErCnB,KAAK8rB,KAAO2gF,EAAKzlG,MAAM,EAAG6lG,GAC1BJ,EAAOA,EAAKzlG,MAAM6lG,GAGlB7sG,KAAK+sG,YAML/sG,KAAKs/F,SAAWt/F,KAAKs/F,UAAY,GAMjC,IAAI0N,EAAoC,MAArBhtG,KAAKs/F,SAAS,IAA0D,MAA5Ct/F,KAAKs/F,SAASt/F,KAAKs/F,SAASn+F,OAAS,GAGpF,IAAK6rG,EAEH,IADA,IAAIC,EAAYjtG,KAAKs/F,SAAS3iG,MAAM,MACpBiB,GAAPJ,EAAI,EAAOyvG,EAAU9rG,QAAQ3D,EAAII,EAAGJ,IAAK,CAChD,IAAIulF,EAAOkqB,EAAUzvG,GACrB,GAAKulF,IACAA,EAAKl7D,MAAM8jF,GAAsB,CAEpC,IADA,IAAIuB,EAAU,GACL1nG,EAAI,EAAGf,EAAIs+E,EAAK5hF,OAAQqE,EAAIf,EAAGe,IAClCu9E,EAAKlkC,WAAWr5C,GAAK,IAMvB0nG,GAAW,IAEXA,GAAWnqB,EAAKv9E,GAIpB,IAAK0nG,EAAQrlF,MAAM8jF,GAAsB,CACvC,IAAIwB,EAAaF,EAAUjmG,MAAM,EAAGxJ,GAChC4vG,EAAUH,EAAUjmG,MAAMxJ,EAAI,GAC9B6vG,EAAMtqB,EAAKl7D,MAAM+jF,GACjByB,IACFF,EAAW75F,KAAK+5F,EAAI,IACpBD,EAAQl0E,QAAQm0E,EAAI,KAElBD,EAAQjsG,SACVsrG,EAAO,IAAMW,EAAQtwG,KAAK,KAAO2vG,GAEnCzsG,KAAKs/F,SAAW6N,EAAWrwG,KAAK,KAChC,KACF,CACF,CACF,CAGEkD,KAAKs/F,SAASn+F,OAjOH,IAkObnB,KAAKs/F,SAAW,GAGhBt/F,KAAKs/F,SAAWt/F,KAAKs/F,SAASrrE,cAG3B+4E,IAOHhtG,KAAKs/F,SAAWtE,EAASsS,QAAQttG,KAAKs/F,WAGxC,IAAIvhG,EAAIiC,KAAKu/F,KAAO,IAAMv/F,KAAKu/F,KAAO,GAClCr7F,EAAIlE,KAAKs/F,UAAY,GACzBt/F,KAAK8rB,KAAO5nB,EAAInG,EAChBiC,KAAKyD,MAAQzD,KAAK8rB,KAMdkhF,IACFhtG,KAAKs/F,SAAWt/F,KAAKs/F,SAASh+B,OAAO,EAAGthE,KAAKs/F,SAASn+F,OAAS,GAC/C,MAAZsrG,EAAK,KACPA,EAAO,IAAMA,GAGnB,CAMA,IAAKZ,EAAec,GAOlB,IAASnvG,EAAI,EAAGI,EAAI4tG,EAAWrqG,OAAQ3D,EAAII,EAAGJ,IAAK,CACjD,IAAI+vG,EAAK/B,EAAWhuG,GACpB,IAA0B,IAAtBivG,EAAK1tG,QAAQwuG,GAAjB,CACA,IAAIC,EAAM3wG,mBAAmB0wG,GACzBC,IAAQD,IACVC,EAAM1C,OAAOyC,IAEfd,EAAOA,EAAK9vG,MAAM4wG,GAAIzwG,KAAK0wG,EALc,CAM3C,CAIF,IAAI9wC,EAAO+vC,EAAK1tG,QAAQ,MACV,IAAV29D,IAEF18D,KAAK08D,KAAO+vC,EAAKnrC,OAAO5E,GACxB+vC,EAAOA,EAAKzlG,MAAM,EAAG01D,IAEvB,IAAI+wC,EAAKhB,EAAK1tG,QAAQ,KAmBtB,IAlBY,IAAR0uG,GACFztG,KAAKyqB,OAASgiF,EAAKnrC,OAAOmsC,GAC1BztG,KAAKsmB,MAAQmmF,EAAKnrC,OAAOmsC,EAAK,GAC1BpB,IACFrsG,KAAKsmB,MAAQ6lF,EAAYl9E,MAAMjvB,KAAKsmB,QAEtCmmF,EAAOA,EAAKzlG,MAAM,EAAGymG,IACZpB,IAETrsG,KAAKyqB,OAAS,GACdzqB,KAAKsmB,MAAQ,CAAC,GAEZmmF,IAAQzsG,KAAKopB,SAAWqjF,GACxBT,EAAgBW,IAAe3sG,KAAKs/F,WAAat/F,KAAKopB,WACxDppB,KAAKopB,SAAW,KAIdppB,KAAKopB,UAAYppB,KAAKyqB,OAAQ,CAC5B1sB,EAAIiC,KAAKopB,UAAY,GAAzB,IACIzrB,EAAIqC,KAAKyqB,QAAU,GACvBzqB,KAAKtD,KAAOqB,EAAIJ,CAClB,CAIA,OADAqC,KAAKyD,KAAOzD,KAAKwhD,SACVxhD,IACT,EAeAkrG,EAAIl0F,UAAUwqC,OAAS,WACrB,IAAIy/C,EAAOjhG,KAAKihG,MAAQ,GACpBA,IAEFA,GADAA,EAAOpkG,mBAAmBokG,IACd7tF,QAAQ,OAAQ,KAC5B6tF,GAAQ,KAGV,IAAI5oC,EAAWr4D,KAAKq4D,UAAY,GAC9BjvC,EAAWppB,KAAKopB,UAAY,GAC5BszC,EAAO18D,KAAK08D,MAAQ,GACpB5wC,GAAO,EACPxF,EAAQ,GAENtmB,KAAK8rB,KACPA,EAAOm1E,EAAOjhG,KAAK8rB,KACV9rB,KAAKs/F,WACdxzE,EAAOm1E,IAAwC,IAAhCjhG,KAAKs/F,SAASvgG,QAAQ,KAAciB,KAAKs/F,SAAW,IAAMt/F,KAAKs/F,SAAW,KACrFt/F,KAAKu/F,OACPzzE,GAAQ,IAAM9rB,KAAKu/F,OAInBv/F,KAAKsmB,OAA+B,iBAAftmB,KAAKsmB,OAAsB7mB,OAAOuwB,KAAKhwB,KAAKsmB,OAAOnlB,SAC1EmlB,EAAQ6lF,EAAYh4F,UAAUnU,KAAKsmB,QAGrC,IAAImE,EAASzqB,KAAKyqB,QAAWnE,GAAU,IAAMA,GAAW,GAuBxD,OArBI+xC,GAAoC,MAAxBA,EAASiJ,QAAQ,KAAcjJ,GAAY,KAMvDr4D,KAAKmrG,WAAa9yC,GAAY2zC,EAAgB3zC,MAAuB,IAATvsC,GAC9DA,EAAO,MAAQA,GAAQ,IACnB1C,GAAmC,MAAvBA,EAASg2C,OAAO,KAAch2C,EAAW,IAAMA,IACrD0C,IACVA,EAAO,IAGL4wC,GAA2B,MAAnBA,EAAK0C,OAAO,KAAc1C,EAAO,IAAMA,GAC/CjyC,GAA+B,MAArBA,EAAO20C,OAAO,KAAc30C,EAAS,IAAMA,GAOlD4tC,EAAWvsC,GALlB1C,EAAWA,EAAShW,QAAQ,SAAS,SAAUyU,GAC7C,OAAOhrB,mBAAmBgrB,EAC5B,MACA4C,EAASA,EAAOrX,QAAQ,IAAK,QAEgBspD,CAC/C,EAMAwuC,EAAIl0F,UAAUiZ,QAAU,SAAUq/B,GAChC,OAAOtvD,KAAK0tG,cAActB,EAAS98C,GAAU,GAAO,IAAO9N,QAC7D,EAOA0pD,EAAIl0F,UAAU02F,cAAgB,SAAUp+C,GACtC,GAAwB,iBAAbA,EAAuB,CAChC,IAAIhnD,EAAM,IAAI4iG,EACd5iG,EAAI2mB,MAAMqgC,GAAU,GAAO,GAC3BA,EAAWhnD,CACb,CAIA,IAFA,IAAIujB,EAAS,IAAIq/E,EACbyC,EAAQluG,OAAOuwB,KAAKhwB,MACf4tG,EAAK,EAAGA,EAAKD,EAAMxsG,OAAQysG,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACjB/hF,EAAOgiF,GAAQ7tG,KAAK6tG,EACtB,CASA,GAHAhiF,EAAO6wC,KAAOpN,EAASoN,KAGD,KAAlBpN,EAAS7rD,KAEX,OADAooB,EAAOpoB,KAAOooB,EAAO21B,SACd31B,EAIT,GAAIyjC,EAAS67C,UAAY77C,EAAS+I,SAAU,CAG1C,IADA,IAAIy1C,EAAQruG,OAAOuwB,KAAKs/B,GACfy+C,EAAK,EAAGA,EAAKD,EAAM3sG,OAAQ4sG,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACJ,aAATC,IAAuBniF,EAAOmiF,GAAQ1+C,EAAS0+C,GACrD,CASA,OANIhC,EAAgBngF,EAAOwsC,WAAaxsC,EAAOyzE,WAAazzE,EAAOzC,WACjEyC,EAAOzC,SAAW,IAClByC,EAAOnvB,KAAOmvB,EAAOzC,UAGvByC,EAAOpoB,KAAOooB,EAAO21B,SACd31B,CACT,CAEA,GAAIyjC,EAAS+I,UAAY/I,EAAS+I,WAAaxsC,EAAOwsC,SAAU,CAW9D,IAAK2zC,EAAgB18C,EAAS+I,UAAW,CAEvC,IADA,IAAIroC,EAAOvwB,OAAOuwB,KAAKs/B,GACdlrD,EAAI,EAAGA,EAAI4rB,EAAK7uB,OAAQiD,IAAK,CACpC,IAAIK,EAAIurB,EAAK5rB,GACbynB,EAAOpnB,GAAK6qD,EAAS7qD,EACvB,CAEA,OADAonB,EAAOpoB,KAAOooB,EAAO21B,SACd31B,CACT,CAGA,GADAA,EAAOwsC,SAAW/I,EAAS+I,SACtB/I,EAASxjC,MAASigF,EAAiBz8C,EAAS+I,UAS/CxsC,EAAOzC,SAAWkmC,EAASlmC,aAT+B,CAE1D,IADA,IAAI6kF,GAAW3+C,EAASlmC,UAAY,IAAIzsB,MAAM,KACvCsxG,EAAQ9sG,UAAYmuD,EAASxjC,KAAOmiF,EAAQ1xD,WAC9C+S,EAASxjC,OAAQwjC,EAASxjC,KAAO,IACjCwjC,EAASgwC,WAAYhwC,EAASgwC,SAAW,IAC3B,KAAf2O,EAAQ,IAAaA,EAAQ/0E,QAAQ,IACrC+0E,EAAQ9sG,OAAS,GAAK8sG,EAAQ/0E,QAAQ,IAC1CrN,EAAOzC,SAAW6kF,EAAQnxG,KAAK,IACjC,CAUA,GAPA+uB,EAAOpB,OAAS6kC,EAAS7kC,OACzBoB,EAAOvF,MAAQgpC,EAAShpC,MACxBuF,EAAOC,KAAOwjC,EAASxjC,MAAQ,GAC/BD,EAAOo1E,KAAO3xC,EAAS2xC,KACvBp1E,EAAOyzE,SAAWhwC,EAASgwC,UAAYhwC,EAASxjC,KAChDD,EAAO0zE,KAAOjwC,EAASiwC,KAEnB1zE,EAAOzC,UAAYyC,EAAOpB,OAAQ,CACpC,IAAI1sB,EAAI8tB,EAAOzC,UAAY,GACvBzrB,EAAIkuB,EAAOpB,QAAU,GACzBoB,EAAOnvB,KAAOqB,EAAIJ,CACpB,CAGA,OAFAkuB,EAAOs/E,QAAUt/E,EAAOs/E,SAAW77C,EAAS67C,QAC5Ct/E,EAAOpoB,KAAOooB,EAAO21B,SACd31B,CACT,CAEA,IAAIqiF,EAAcriF,EAAOzC,UAA0C,MAA9ByC,EAAOzC,SAASg2C,OAAO,GAC1D+uC,EAAW7+C,EAASxjC,MAAQwjC,EAASlmC,UAA4C,MAAhCkmC,EAASlmC,SAASg2C,OAAO,GAC1EgvC,EAAaD,GAAYD,GAAgBriF,EAAOC,MAAQwjC,EAASlmC,SACjEilF,EAAgBD,EAChBE,EAAUziF,EAAOzC,UAAYyC,EAAOzC,SAASzsB,MAAM,MAAQ,GAE3D4xG,GADAN,EAAU3+C,EAASlmC,UAAYkmC,EAASlmC,SAASzsB,MAAM,MAAQ,GACnDkvB,EAAOwsC,WAAa2zC,EAAgBngF,EAAOwsC,WA2BzD,GAlBIk2C,IACF1iF,EAAOyzE,SAAW,GAClBzzE,EAAO0zE,KAAO,KACV1zE,EAAOC,OACU,KAAfwiF,EAAQ,GAAaA,EAAQ,GAAKziF,EAAOC,KAAewiF,EAAQp1E,QAAQrN,EAAOC,OAErFD,EAAOC,KAAO,GACVwjC,EAAS+I,WACX/I,EAASgwC,SAAW,KACpBhwC,EAASiwC,KAAO,KACZjwC,EAASxjC,OACQ,KAAfmiF,EAAQ,GAAaA,EAAQ,GAAK3+C,EAASxjC,KAAemiF,EAAQ/0E,QAAQo2B,EAASxjC,OAEzFwjC,EAASxjC,KAAO,MAElBsiF,EAAaA,IAA8B,KAAfH,EAAQ,IAA4B,KAAfK,EAAQ,KAGvDH,EAEFtiF,EAAOC,KAAOwjC,EAASxjC,MAA0B,KAAlBwjC,EAASxjC,KAAcwjC,EAASxjC,KAAOD,EAAOC,KAC7ED,EAAOyzE,SAAWhwC,EAASgwC,UAAkC,KAAtBhwC,EAASgwC,SAAkBhwC,EAASgwC,SAAWzzE,EAAOyzE,SAC7FzzE,EAAOpB,OAAS6kC,EAAS7kC,OACzBoB,EAAOvF,MAAQgpC,EAAShpC,MACxBgoF,EAAUL,OAEL,GAAIA,EAAQ9sG,OAKZmtG,IAAWA,EAAU,IAC1BA,EAAQhlF,MACRglF,EAAUA,EAAQnuG,OAAO8tG,GACzBpiF,EAAOpB,OAAS6kC,EAAS7kC,OACzBoB,EAAOvF,MAAQgpC,EAAShpC,WACnB,GAAuB,MAAnBgpC,EAAS7kC,OA4BlB,OAtBI8jF,IACF1iF,EAAOC,KAAOwiF,EAAQ/xD,QACtB1wB,EAAOyzE,SAAWzzE,EAAOC,MAMrB0iF,KAAa3iF,EAAOC,MAAQD,EAAOC,KAAK/sB,QAAQ,KAAO,IAAI8sB,EAAOC,KAAKnvB,MAAM,QAE/EkvB,EAAOo1E,KAAOuN,EAAWjyD,QACzB1wB,EAAOyzE,SAAWkP,EAAWjyD,QAC7B1wB,EAAOC,KAAOD,EAAOyzE,WAGzBzzE,EAAOpB,OAAS6kC,EAAS7kC,OACzBoB,EAAOvF,MAAQgpC,EAAShpC,MAEA,OAApBuF,EAAOzC,UAAuC,OAAlByC,EAAOpB,SACrCoB,EAAOnvB,MAAQmvB,EAAOzC,SAAWyC,EAAOzC,SAAW,KAAOyC,EAAOpB,OAASoB,EAAOpB,OAAS,KAE5FoB,EAAOpoB,KAAOooB,EAAO21B,SACd31B,EAGT,IAAKyiF,EAAQntG,OAaX,OARA0qB,EAAOzC,SAAW,KAEdyC,EAAOpB,OACToB,EAAOnvB,KAAO,IAAMmvB,EAAOpB,OAE3BoB,EAAOnvB,KAAO,KAEhBmvB,EAAOpoB,KAAOooB,EAAO21B,SACd31B,EAgBT,IARA,IAAIy2D,EAAOgsB,EAAQtnG,OAAO,GAAG,GACzBynG,GAAoB5iF,EAAOC,MAAQwjC,EAASxjC,MAAQwiF,EAAQntG,OAAS,KAAgB,MAATmhF,GAAyB,OAATA,IAA2B,KAATA,EAM9GosB,EAAK,EACAlxG,EAAI8wG,EAAQntG,OAAQ3D,GAAK,EAAGA,IAEtB,OADb8kF,EAAOgsB,EAAQ9wG,IAEb8wG,EAAQx5F,OAAOtX,EAAG,GACA,OAAT8kF,GACTgsB,EAAQx5F,OAAOtX,EAAG,GAClBkxG,KACSA,IACTJ,EAAQx5F,OAAOtX,EAAG,GAClBkxG,KAKJ,IAAKN,IAAeC,EAClB,KAAOK,IAAMA,EACXJ,EAAQp1E,QAAQ,OAIhBk1E,GAA6B,KAAfE,EAAQ,IAAeA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAGlvC,OAAO,IACvEkvC,EAAQp1E,QAAQ,IAGdu1E,GAAsD,MAAjCH,EAAQxxG,KAAK,KAAKwkE,QAAQ,IACjDgtC,EAAQh7F,KAAK,IAGf,IAWMk7F,EAXFG,EAA4B,KAAfL,EAAQ,IAAcA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAGlvC,OAAO,GAuCvE,OApCImvC,IACF1iF,EAAOyzE,SAAWqP,EAAa,GAAKL,EAAQntG,OAASmtG,EAAQ/xD,QAAU,GACvE1wB,EAAOC,KAAOD,EAAOyzE,UAMjBkP,KAAa3iF,EAAOC,MAAQD,EAAOC,KAAK/sB,QAAQ,KAAO,IAAI8sB,EAAOC,KAAKnvB,MAAM,QAE/EkvB,EAAOo1E,KAAOuN,EAAWjyD,QACzB1wB,EAAOyzE,SAAWkP,EAAWjyD,QAC7B1wB,EAAOC,KAAOD,EAAOyzE,YAIzB8O,EAAaA,GAAeviF,EAAOC,MAAQwiF,EAAQntG,UAEhCwtG,GACjBL,EAAQp1E,QAAQ,IAGdo1E,EAAQntG,OAAS,EACnB0qB,EAAOzC,SAAWklF,EAAQxxG,KAAK,MAE/B+uB,EAAOzC,SAAW,KAClByC,EAAOnvB,KAAO,MAIQ,OAApBmvB,EAAOzC,UAAuC,OAAlByC,EAAOpB,SACrCoB,EAAOnvB,MAAQmvB,EAAOzC,SAAWyC,EAAOzC,SAAW,KAAOyC,EAAOpB,OAASoB,EAAOpB,OAAS,KAE5FoB,EAAOo1E,KAAO3xC,EAAS2xC,MAAQp1E,EAAOo1E,KACtCp1E,EAAOs/E,QAAUt/E,EAAOs/E,SAAW77C,EAAS67C,QAC5Ct/E,EAAOpoB,KAAOooB,EAAO21B,SACd31B,CACT,EAEAq/E,EAAIl0F,UAAU+1F,UAAY,WACxB,IAAIjhF,EAAO9rB,KAAK8rB,KACZyzE,EAAO8L,EAAYlhF,KAAK2B,GACxByzE,IAEW,OADbA,EAAOA,EAAK,MAEVv/F,KAAKu/F,KAAOA,EAAKj+B,OAAO,IAE1Bx1C,EAAOA,EAAKw1C,OAAO,EAAGx1C,EAAK3qB,OAASo+F,EAAKp+F,SAEvC2qB,IAAQ9rB,KAAKs/F,SAAWxzE,EAC9B,EAEArvB,EAAQwyB,MAAQm9E,EAChB3vG,EAAQwzB,QA/SR,SAAoBtI,EAAQ2nC,GAC1B,OAAO88C,EAASzkF,GAAQ,GAAO,GAAMsI,QAAQq/B,EAC/C,EA8SA7yD,EAAQixG,cAxSR,SAA0B/lF,EAAQ2nC,GAChC,OAAK3nC,EACEykF,EAASzkF,GAAQ,GAAO,GAAM+lF,cAAcp+C,GAD7BA,CAExB,EAsSA7yD,EAAQ+kD,OAlXR,SAAmBriB,GAQjB,MADmB,iBAARA,IAAoBA,EAAMitE,EAASjtE,IACxCA,aAAe+rE,EACd/rE,EAAIqiB,SADyB0pD,EAAIl0F,UAAUwqC,OAAOl8C,KAAK65B,EAEhE,EA0WA1iC,EAAQyuG,IAAMA,kCC5sBd,SAASl9D,EAAQhwC,GAEf,IACE,IAAK,EAAAmG,EAAO4qB,aAAc,OAAO,CACnC,CAAE,MAAOrnB,GACP,OAAO,CACT,CACA,IAAIs0D,EAAM,EAAA73D,EAAO4qB,aAAa/wB,GAC9B,OAAI,MAAQg+D,GACyB,SAA9Bp9D,OAAOo9D,GAAK/nC,aACrB,CA7DAh3B,EAAOR,QAoBP,SAAoB8S,EAAIk9D,GACtB,GAAIz+B,EAAO,iBACT,OAAOz+B,EAGT,IAAI6sE,GAAS,EAeb,OAdA,WACE,IAAKA,EAAQ,CACX,GAAIpuC,EAAO,oBACT,MAAM,IAAI74B,MAAMs3D,GACPz+B,EAAO,oBAChB/lC,EAAQ2mG,MAAMniC,GAEdxkE,EAAQlE,KAAK0oE,GAEf2P,GAAS,CACX,CACA,OAAO7sE,EAAGI,MAAM3P,KAAMkB,UACxB,CAGF,wFC5BA,SAXgB,cACd,IACA,IACA,KACA,EACA,KACA,KACA,MAI8B,mBClBhCjE,EAAOR,QAIP,WAGI,IAFA,IAAIuF,EAAS,CAAC,EAELxE,EAAI,EAAGA,EAAI0D,UAAUC,OAAQ3D,IAAK,CACvC,IAAImqB,EAASzmB,UAAU1D,GAEvB,IAAK,IAAI8R,KAAOqY,EACR1Q,EAAe3R,KAAKqiB,EAAQrY,KAC5BtN,EAAOsN,GAAOqY,EAAOrY,GAGjC,CAEA,OAAOtN,CACX,EAhBA,IAAIiV,EAAiBxX,OAAOuX,UAAUC,kFCDlC43F,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBpnG,IAAjBqnG,EACH,OAAOA,EAAavyG,QAGrB,IAAIQ,EAAS4xG,EAAyBE,GAAY,CACjDjoG,GAAIioG,EACJE,QAAQ,EACRxyG,QAAS,CAAC,GAUX,OANAyyG,EAAoBH,GAAUzpG,KAAKrI,EAAOR,QAASQ,EAAQA,EAAOR,QAASqyG,GAG3E7xG,EAAOgyG,QAAS,EAGThyG,EAAOR,OACf,CAGAqyG,EAAoB7qG,EAAIirG,E7Q5BpB1yG,EAAW,GACfsyG,EAAoBphG,EAAI,CAACme,EAAQsjF,EAAU5/F,EAAI6/F,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAe9X,IACnB,IAAS/5F,EAAI,EAAGA,EAAIhB,EAAS2E,OAAQ3D,IAAK,CACrC2xG,EAAW3yG,EAASgB,GAAG,GACvB+R,EAAK/S,EAASgB,GAAG,GACjB4xG,EAAW5yG,EAASgB,GAAG,GAE3B,IAJA,IAGI8xG,GAAY,EACP9pG,EAAI,EAAGA,EAAI2pG,EAAShuG,OAAQqE,MACpB,EAAX4pG,GAAsBC,GAAgBD,IAAa3vG,OAAOuwB,KAAK8+E,EAAoBphG,GAAGnK,OAAO+L,GAASw/F,EAAoBphG,EAAE4B,GAAK6/F,EAAS3pG,MAC9I2pG,EAASr6F,OAAOtP,IAAK,IAErB8pG,GAAY,EACTF,EAAWC,IAAcA,EAAeD,IAG7C,GAAGE,EAAW,CACb9yG,EAASsY,OAAOtX,IAAK,GACrB,IAAIE,EAAI6R,SACE5H,IAANjK,IAAiBmuB,EAASnuB,EAC/B,CACD,CACA,OAAOmuB,CArBP,CAJCujF,EAAWA,GAAY,EACvB,IAAI,IAAI5xG,EAAIhB,EAAS2E,OAAQ3D,EAAI,GAAKhB,EAASgB,EAAI,GAAG,GAAK4xG,EAAU5xG,IAAKhB,EAASgB,GAAKhB,EAASgB,EAAI,GACrGhB,EAASgB,GAAK,CAAC2xG,EAAU5/F,EAAI6/F,EAuBjB,E8Q3BdN,EAAoBrxG,EAAKR,IACxB,IAAIsyG,EAAStyG,GAAUA,EAAO2Z,WAC7B,IAAO3Z,EAAiB,QACxB,IAAM,EAEP,OADA6xG,EAAoB1xG,EAAEmyG,EAAQ,CAAEpyG,EAAGoyG,IAC5BA,CAAM,ECLdT,EAAoB1xG,EAAI,CAACX,EAAS+yG,KACjC,IAAI,IAAIlgG,KAAOkgG,EACXV,EAAoBvxG,EAAEiyG,EAAYlgG,KAASw/F,EAAoBvxG,EAAEd,EAAS6S,IAC5E7P,OAAOoX,eAAepa,EAAS6S,EAAK,CAAEwH,YAAY,EAAMC,IAAKy4F,EAAWlgG,IAE1E,ECNDw/F,EAAoB3qG,EAAI,WACvB,GAA0B,iBAAfotB,WAAyB,OAAOA,WAC3C,IACC,OAAOvxB,MAAQ,IAAI++C,SAAS,cAAb,EAChB,CAAE,MAAOhiD,GACR,GAAsB,iBAAX4G,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBmrG,EAAoBvxG,EAAI,CAAC4hC,EAAKvW,IAAUnpB,OAAOuX,UAAUC,eAAe3R,KAAK65B,EAAKvW,GCClFkmF,EAAoBpxG,EAAKjB,IACH,oBAAXya,QAA0BA,OAAOC,aAC1C1X,OAAOoX,eAAepa,EAASya,OAAOC,YAAa,CAAE7I,MAAO,WAE7D7O,OAAOoX,eAAepa,EAAS,aAAc,CAAE6R,OAAO,GAAO,ECL9DwgG,EAAoBW,IAAOxyG,IAC1BA,EAAOmpC,MAAQ,GACVnpC,EAAOkI,WAAUlI,EAAOkI,SAAW,IACjClI,GCHR6xG,EAAoBtpG,EAAI,WCAxBspG,EAAoBzqG,EAAI/E,SAASowG,SAAWxyG,KAAK0G,SAASH,KAK1D,IAAIksG,EAAkB,CACrB,KAAM,GAaPb,EAAoBphG,EAAElI,EAAKoqG,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4BhwG,KACvD,IAKIivG,EAAUa,EALVT,EAAWrvG,EAAK,GAChBiwG,EAAcjwG,EAAK,GACnBkwG,EAAUlwG,EAAK,GAGItC,EAAI,EAC3B,GAAG2xG,EAAS9iF,MAAMvlB,GAAgC,IAAxB6oG,EAAgB7oG,KAAa,CACtD,IAAIioG,KAAYgB,EACZjB,EAAoBvxG,EAAEwyG,EAAahB,KACrCD,EAAoB7qG,EAAE8qG,GAAYgB,EAAYhB,IAGhD,GAAGiB,EAAS,IAAInkF,EAASmkF,EAAQlB,EAClC,CAEA,IADGgB,GAA4BA,EAA2BhwG,GACrDtC,EAAI2xG,EAAShuG,OAAQ3D,IACzBoyG,EAAUT,EAAS3xG,GAChBsxG,EAAoBvxG,EAAEoyG,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOd,EAAoBphG,EAAEme,EAAO,EAGjCokF,EAAqB/yG,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1F+yG,EAAmBh+F,QAAQ49F,EAAqBzoG,KAAK,KAAM,IAC3D6oG,EAAmB38F,KAAOu8F,EAAqBzoG,KAAK,KAAM6oG,EAAmB38F,KAAKlM,KAAK6oG,QClDvFnB,EAAoBx5F,QAAK3N,ECGzB,IAAIuoG,EAAsBpB,EAAoBphG,OAAE/F,EAAW,CAAC,OAAO,IAAOmnG,EAAoB,SAC9FoB,EAAsBpB,EAAoBphG,EAAEwiG","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/paths/dist/index.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcAppSettingsDialog.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcAppSettingsSection.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcBreadcrumb.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcBreadcrumbs.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcIconSvgWrapper.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcInputField.js","webpack:///nextcloud/apps/files/src/utils/davUtils.js","webpack:///nextcloud/apps/files/src/utils/fileUtils.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?9ec4","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?81db","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?c414","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/services/Templates.js","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?9ada","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?afd8","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?1f7b","webpack:///nextcloud/apps/files/src/templates.js","webpack:///nextcloud/apps/files/src/legacy/filelistSearch.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.esm.js","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files/src/actions/deleteAction.ts","webpack:///nextcloud/apps/files/src/actions/downloadAction.ts","webpack:///nextcloud/apps/files/src/actions/editLocallyAction.ts","webpack:///nextcloud/apps/files/src/actions/favoriteAction.ts","webpack:///nextcloud/apps/files/src/actions/openFolderAction.ts","webpack:///nextcloud/apps/files/src/actions/renameAction.ts","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/apps/files/src/actions/viewInFolderAction.ts","webpack:///nextcloud/node_modules/pinia/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/node_modules/@vue/devtools-api/lib/esm/env.js","webpack:///nextcloud/node_modules/@vue/devtools-api/lib/esm/const.js","webpack:///nextcloud/node_modules/@vue/devtools-api/lib/esm/time.js","webpack:///nextcloud/node_modules/@vue/devtools-api/lib/esm/proxy.js","webpack:///nextcloud/node_modules/@vue/devtools-api/lib/esm/index.js","webpack:///nextcloud/node_modules/pinia/dist/pinia.mjs","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack:///nextcloud/node_modules/natural-orderby/dist/index.js","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/store/viewConfig.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/Home.vue?vue&type=script&lang=js&","webpack:///nextcloud/node_modules/vue-material-design-icons/Home.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Home.vue?e73b","webpack:///nextcloud/node_modules/vue-material-design-icons/Home.vue?vue&type=template&id=69a49b0f&","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?e59f","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?e906","webpack:///nextcloud/node_modules/vue-virtual-scroller/node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///nextcloud/node_modules/vue-virtual-scroller/node_modules/vue-observe-visibility/dist/vue-observe-visibility.esm.js","webpack:///nextcloud/node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.esm.js","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/node_modules/vue-frag/dist/frag.esm.js","webpack:///nextcloud/node_modules/@vueuse/shared/index.mjs","webpack:///nextcloud/node_modules/@vueuse/components/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/node_modules/@vueuse/shared/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/node_modules/@vueuse/components/index.mjs","webpack:///nextcloud/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/node_modules/@vueuse/core/index.mjs","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue?vue&type=script&lang=js&","webpack://nextcloud/./node_modules/vue-material-design-icons/File.vue?245d","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue?vue&type=template&id=5c8d96c6&","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?2c34","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?6bea","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?5641","webpack:///nextcloud/apps/files/src/components/FavoriteIcon.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/FavoriteIcon.vue","webpack://nextcloud/./apps/files/src/components/FavoriteIcon.vue?1f40","webpack://nextcloud/./apps/files/src/components/FavoriteIcon.vue?cf70","webpack://nextcloud/./apps/files/src/components/FavoriteIcon.vue?344a","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack:///nextcloud/apps/files/src/store/renaming.ts","webpack:///nextcloud/apps/files/src/services/PreviewService.ts","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?c992","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?12db","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?e51a","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?80db","webpack:///nextcloud/apps/files/src/mixins/filesListWidth.ts","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?993d","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?9823","webpack:///nextcloud/node_modules/vue-material-design-icons/MenuDown.vue?vue&type=script&lang=js&","webpack:///nextcloud/node_modules/vue-material-design-icons/MenuDown.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/MenuDown.vue?7f4a","webpack:///nextcloud/node_modules/vue-material-design-icons/MenuDown.vue?vue&type=template&id=49c08fbe&","webpack:///nextcloud/node_modules/vue-material-design-icons/MenuUp.vue?vue&type=script&lang=js&","webpack:///nextcloud/node_modules/vue-material-design-icons/MenuUp.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/MenuUp.vue?1ade","webpack:///nextcloud/node_modules/vue-material-design-icons/MenuUp.vue?vue&type=template&id=52b567ec&","webpack:///nextcloud/apps/files/src/mixins/filesSorting.ts","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?d900","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?5686","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?a8b8","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?feaf","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack:///nextcloud/apps/files/src/services/Navigation.ts","webpack:///nextcloud/node_modules/is-svg/index.js","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/views/FilesList.vue?35b3","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack://nextcloud/./apps/files/src/views/Navigation.vue?8122","webpack://nextcloud/./node_modules/vue-material-design-icons/Cog.vue?4d6d","webpack:///nextcloud/node_modules/throttle-debounce/esm/index.js","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue?vue&type=script&lang=js&","webpack://nextcloud/./node_modules/vue-material-design-icons/ChartPie.vue?421f","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue?vue&type=template&id=44de6464&","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?ff39","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack://nextcloud/./apps/files/src/views/Settings.vue?84f7","webpack:///nextcloud/node_modules/vue-material-design-icons/Clipboard.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Clipboard.vue?vue&type=script&lang=js&","webpack://nextcloud/./node_modules/vue-material-design-icons/Clipboard.vue?68c7","webpack:///nextcloud/node_modules/vue-material-design-icons/Clipboard.vue?vue&type=template&id=0e008e34&","webpack:///nextcloud/apps/files/src/components/Setting.vue","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/Setting.vue?98ea","webpack://nextcloud/./apps/files/src/components/Setting.vue?8d57","webpack:///nextcloud/apps/files/src/views/Settings.vue","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Settings.vue?2c9e","webpack://nextcloud/./apps/files/src/views/Settings.vue?b81b","webpack:///nextcloud/apps/files/src/views/Navigation.vue","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Navigation.vue?e9dc","webpack://nextcloud/./apps/files/src/views/Navigation.vue?74b9","webpack:///nextcloud/apps/files/src/legacy/navigationMapper.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/services/DavProperties.ts","webpack:///nextcloud/apps/files/src/services/Favorites.ts","webpack:///nextcloud/apps/files/src/views/favorites.ts","webpack:///nextcloud/node_modules/vue-router/dist/vue-router.esm.js","webpack:///nextcloud/node_modules/decode-uri-component/index.js","webpack:///nextcloud/node_modules/split-on-first/index.js","webpack:///nextcloud/node_modules/query-string/node_modules/filter-obj/index.js","webpack:///nextcloud/node_modules/query-string/base.js","webpack:///nextcloud/node_modules/query-string/index.js","webpack:///nextcloud/apps/files/src/router/router.js","webpack:///nextcloud/apps/files/src/main.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.js","webpack:///nextcloud/apps/files/src/services/ServiceWorker.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/call-bind/callBound.js","webpack:///nextcloud/node_modules/call-bind/index.js","webpack:///nextcloud/node_modules/cancelable-promise/umd/CancelablePromise.js","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FavoriteIcon.vue?vue&type=style&index=0&id=324501a3&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=style&index=0&id=5c58a5a9&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue?vue&type=style&index=0&id=2201dce1&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=style&index=0&id=3e864709&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=e796f704&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=7a51ec30&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=style&index=0&id=0626eaac&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=style&index=1&id=5c58a5a9&prod&lang=css&","webpack:///nextcloud/node_modules/events/events.js","webpack:///nextcloud/node_modules/function-bind/implementation.js","webpack:///nextcloud/node_modules/function-bind/index.js","webpack:///nextcloud/node_modules/get-intrinsic/index.js","webpack:///nextcloud/node_modules/has-proto/index.js","webpack:///nextcloud/node_modules/has-symbols/index.js","webpack:///nextcloud/node_modules/has-symbols/shams.js","webpack:///nextcloud/node_modules/has/src/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/inherits/inherits_browser.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/events/events.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/index.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/node-polyfill-webpack-plugin/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/safe-buffer/index.js","webpack:///nextcloud/node_modules/scrollparent/scrollparent.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/string_decoder/lib/string_decoder.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util-deprecate/browser.js","webpack://nextcloud/./node_modules/vue-material-design-icons/Folder.vue?b60e","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encodePath = encodePath;\nexports.basename = basename;\nexports.dirname = dirname;\nexports.joinPaths = joinPaths;\nexports.isSamePath = isSamePath;\n\nrequire(\"core-js/modules/es.array.map.js\");\n\nrequire(\"core-js/modules/es.regexp.exec.js\");\n\nrequire(\"core-js/modules/es.string.split.js\");\n\nrequire(\"core-js/modules/es.string.replace.js\");\n\nrequire(\"core-js/modules/es.array.filter.js\");\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nrequire(\"core-js/modules/es.array.concat.js\");\n\n/**\n * URI-Encodes a file path but keep the path slashes.\n */\nfunction encodePath(path) {\n if (!path) {\n return path;\n }\n\n return path.split('/').map(encodeURIComponent).join('/');\n}\n/**\n * Returns the base name of the given path.\n * For example for \"/abc/somefile.txt\" it will return \"somefile.txt\"\n */\n\n\nfunction basename(path) {\n return path.replace(/\\\\/g, '/').replace(/.*\\//, '');\n}\n/**\n * Returns the dir name of the given path.\n * For example for \"/abc/somefile.txt\" it will return \"/abc\"\n */\n\n\nfunction dirname(path) {\n return path.replace(/\\\\/g, '/').replace(/\\/[^\\/]*$/, '');\n}\n/**\n * Join path sections\n */\n\n\nfunction joinPaths() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (arguments.length < 1) {\n return '';\n } // discard empty arguments\n\n\n var nonEmptyArgs = args.filter(function (arg) {\n return arg.length > 0;\n });\n\n if (nonEmptyArgs.length < 1) {\n return '';\n }\n\n var lastArg = nonEmptyArgs[nonEmptyArgs.length - 1];\n var leadingSlash = nonEmptyArgs[0].charAt(0) === '/';\n var trailingSlash = lastArg.charAt(lastArg.length - 1) === '/';\n var sections = nonEmptyArgs.reduce(function (acc, section) {\n return acc.concat(section.split('/'));\n }, []);\n var first = !leadingSlash;\n var path = sections.reduce(function (acc, section) {\n if (section === '') {\n return acc;\n }\n\n if (first) {\n first = false;\n return acc + section;\n }\n\n return acc + '/' + section;\n }, '');\n\n if (trailingSlash) {\n // add it back\n return path + '/';\n }\n\n return path;\n}\n/**\n * Returns whether the given paths are the same, without\n * leading, trailing or doubled slashes and also removing\n * the dot sections.\n */\n\n\nfunction isSamePath(path1, path2) {\n var pathSections1 = (path1 || '').split('/').filter(function (p) {\n return p !== '.';\n });\n var pathSections2 = (path2 || '').split('/').filter(function (p) {\n return p !== '.';\n });\n path1 = joinPaths.apply(undefined, pathSections1);\n path2 = joinPaths.apply(undefined, pathSections2);\n return path1 === path2;\n}\n//# sourceMappingURL=index.js.map","/*! For license information please see NcAppSettingsDialog.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"NextcloudVue\",[],t):\"object\"==typeof exports?exports.NextcloudVue=t():(e.NextcloudVue=e.NextcloudVue||{},e.NextcloudVue[\"Components/NcAppSettingsDialog\"]=t())}(self,(()=>(()=>{var e={644:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>T});var o=a(1631),i=a(2297),n=a(1205),r=a(932),s=a(2734),l=a.n(s),c=a(1441),d=a.n(c);const u=\".focusable\",p={name:\"NcActions\",components:{NcButton:o.default,DotsHorizontal:d(),NcPopover:i.default},props:{open:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},forceTitle:{type:Boolean,default:!1},menuTitle:{type:String,default:null},primary:{type:Boolean,default:!1},type:{type:String,validator:e=>-1!==[\"primary\",\"secondary\",\"tertiary\",\"tertiary-no-background\",\"tertiary-on-primary\",\"error\",\"warning\",\"success\"].indexOf(e),default:null},defaultIcon:{type:String,default:\"\"},ariaLabel:{type:String,default:(0,r.t)(\"Actions\")},ariaHidden:{type:Boolean,default:null},placement:{type:String,default:\"bottom\"},boundariesElement:{type:Element,default:()=>document.querySelector(\"body\")},container:{type:[String,Object,Element,Boolean],default:\"body\"},disabled:{type:Boolean,default:!1},inline:{type:Number,default:0}},emits:[\"update:open\",\"open\",\"update:open\",\"close\",\"focus\",\"blur\"],data(){return{opened:this.open,focusIndex:0,randomId:\"menu-\".concat((0,n.Z)())}},computed:{triggerBtnType(){return this.type||(this.primary?\"primary\":this.menuTitle?\"secondary\":\"tertiary\")}},watch:{open(e){e!==this.opened&&(this.opened=e)}},methods:{isValidSingleAction(e){var t,a,o,i,n;const r=null!==(t=null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(i=o.extendOptions)||void 0===i?void 0:i.name)&&void 0!==t?t:null==e||null===(n=e.componentOptions)||void 0===n?void 0:n.tag;return[\"NcActionButton\",\"NcActionLink\",\"NcActionRouter\"].includes(r)},openMenu(e){this.opened||(this.opened=!0,this.$emit(\"update:open\",!0),this.$emit(\"open\"))},closeMenu(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.opened&&(this.opened=!1,this.$refs.popover.clearFocusTrap({returnFocus:e}),this.$emit(\"update:open\",!1),this.$emit(\"close\"),this.opened=!1,this.focusIndex=0,this.$refs.menuButton.$el.focus())},onOpen(e){this.$nextTick((()=>{this.focusFirstAction(e)}))},onMouseFocusAction(e){if(document.activeElement===e.target)return;const t=e.target.closest(\"li\");if(t){const e=t.querySelector(u);if(e){const t=[...this.$refs.menu.querySelectorAll(u)].indexOf(e);t>-1&&(this.focusIndex=t,this.focusAction())}}},onKeydown(e){(38===e.keyCode||9===e.keyCode&&e.shiftKey)&&this.focusPreviousAction(e),(40===e.keyCode||9===e.keyCode&&!e.shiftKey)&&this.focusNextAction(e),33===e.keyCode&&this.focusFirstAction(e),34===e.keyCode&&this.focusLastAction(e),27===e.keyCode&&(this.closeMenu(),e.preventDefault())},removeCurrentActive(){const e=this.$refs.menu.querySelector(\"li.active\");e&&e.classList.remove(\"active\")},focusAction(){const e=this.$refs.menu.querySelectorAll(u)[this.focusIndex];if(e){this.removeCurrentActive();const t=e.closest(\"li.action\");e.focus(),t&&t.classList.add(\"active\")}},focusPreviousAction(e){this.opened&&(0===this.focusIndex?this.closeMenu():(this.preventIfEvent(e),this.focusIndex=this.focusIndex-1),this.focusAction())},focusNextAction(e){if(this.opened){const t=this.$refs.menu.querySelectorAll(u).length-1;this.focusIndex===t?this.closeMenu():(this.preventIfEvent(e),this.focusIndex=this.focusIndex+1),this.focusAction()}},focusFirstAction(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=0,this.focusAction())},focusLastAction(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=this.$refs.menu.querySelectorAll(u).length-1,this.focusAction())},preventIfEvent(e){e&&(e.preventDefault(),e.stopPropagation())},onFocus(e){this.$emit(\"focus\",e)},onBlur(e){this.$emit(\"blur\",e)}},render(e){const t=(this.$slots.default||[]).filter((e=>{var t,a,o,i;return(null==e||null===(t=e.componentOptions)||void 0===t?void 0:t.tag)||(null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(i=o.extendOptions)||void 0===i?void 0:i.name)})),a=t.every((e=>{var t,a,o,i,n,r,s,l;return\"NcActionLink\"===(null!==(t=null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(i=o.extendOptions)||void 0===i?void 0:i.name)&&void 0!==t?t:null==e||null===(n=e.componentOptions)||void 0===n?void 0:n.tag)&&(null==e||null===(r=e.componentOptions)||void 0===r||null===(s=r.propsData)||void 0===s||null===(l=s.href)||void 0===l?void 0:l.startsWith(window.location.origin))}));let o=t.filter(this.isValidSingleAction);if(this.forceMenu&&o.length>0&&this.inline>0&&(l().util.warn(\"Specifying forceMenu will ignore any inline actions rendering.\"),o=[]),0===t.length)return;const i=t=>{var a,o,i,n,r,s,l,c,d,u,p,A,m,h,g,v,b,C,f,y,k,w;const S=(null==t||null===(a=t.data)||void 0===a||null===(o=a.scopedSlots)||void 0===o||null===(i=o.icon())||void 0===i?void 0:i[0])||e(\"span\",{class:[\"icon\",null==t||null===(n=t.componentOptions)||void 0===n||null===(r=n.propsData)||void 0===r?void 0:r.icon]}),x=null==t||null===(s=t.componentOptions)||void 0===s||null===(l=s.listeners)||void 0===l?void 0:l.click,z=null==t||null===(c=t.componentOptions)||void 0===c||null===(d=c.children)||void 0===d||null===(u=d[0])||void 0===u||null===(p=u.text)||void 0===p||null===(A=p.trim)||void 0===A?void 0:A.call(p),N=(null==t||null===(m=t.componentOptions)||void 0===m||null===(h=m.propsData)||void 0===h?void 0:h.ariaLabel)||z,j=this.forceTitle?z:\"\";let P=null==t||null===(g=t.componentOptions)||void 0===g||null===(v=g.propsData)||void 0===v?void 0:v.title;return this.forceTitle||P||(P=z),e(\"NcButton\",{class:[\"action-item action-item--single\",null==t||null===(b=t.data)||void 0===b?void 0:b.staticClass,null==t||null===(C=t.data)||void 0===C?void 0:C.class],attrs:{\"aria-label\":N,title:P},ref:null==t||null===(f=t.data)||void 0===f?void 0:f.ref,props:{type:this.type||(j?\"secondary\":\"tertiary\"),disabled:this.disabled||(null==t||null===(y=t.componentOptions)||void 0===y||null===(k=y.propsData)||void 0===k?void 0:k.disabled),ariaHidden:this.ariaHidden,...null==t||null===(w=t.componentOptions)||void 0===w?void 0:w.propsData},on:{focus:this.onFocus,blur:this.onBlur,...!!x&&{click:e=>{x&&x(e)}}}},[e(\"template\",{slot:\"icon\"},[S]),j])},n=t=>{var o,i;const n=(null===(o=this.$slots.icon)||void 0===o?void 0:o[0])||(this.defaultIcon?e(\"span\",{class:[\"icon\",this.defaultIcon]}):e(\"DotsHorizontal\",{props:{size:20}}));return e(\"NcPopover\",{ref:\"popover\",props:{delay:0,handleResize:!0,shown:this.opened,placement:this.placement,boundary:this.boundariesElement,container:this.container,popoverBaseClass:\"action-item__popper\",setReturnFocus:null===(i=this.$refs.menuButton)||void 0===i?void 0:i.$el},attrs:{delay:0,handleResize:!0,shown:this.opened,placement:this.placement,boundary:this.boundariesElement,container:this.container,popoverBaseClass:\"action-item__popper\"},on:{show:this.openMenu,\"after-show\":this.onOpen,hide:this.closeMenu}},[e(\"NcButton\",{class:\"action-item__menutoggle\",props:{type:this.triggerBtnType,disabled:this.disabled,ariaHidden:this.ariaHidden},slot:\"trigger\",ref:\"menuButton\",attrs:{\"aria-haspopup\":a?null:\"menu\",\"aria-label\":this.ariaLabel,\"aria-controls\":this.opened?this.randomId:null,\"aria-expanded\":this.opened.toString()},on:{focus:this.onFocus,blur:this.onBlur}},[e(\"template\",{slot:\"icon\"},[n]),this.menuTitle]),e(\"div\",{class:{open:this.opened},attrs:{tabindex:\"-1\"},on:{keydown:this.onKeydown,mousemove:this.onMouseFocusAction},ref:\"menu\"},[e(\"ul\",{attrs:{id:this.randomId,tabindex:\"-1\",role:a?null:\"menu\"}},[t])])])};if(1===t.length&&1===o.length&&!this.forceMenu)return i(o[0]);if(o.length>0&&this.inline>0){const a=o.slice(0,this.inline),r=t.filter((e=>!a.includes(e)));return e(\"div\",{class:[\"action-items\",\"action-item--\".concat(this.triggerBtnType)]},[...a.map(i),r.length>0?e(\"div\",{class:[\"action-item\",{\"action-item--open\":this.opened}]},[n(r)]):null])}return e(\"div\",{class:[\"action-item action-item--default-popover\",\"action-item--\".concat(this.triggerBtnType),{\"action-item--open\":this.opened}]},[n(t)])}};var A=a(3379),m=a.n(A),h=a(7795),g=a.n(h),v=a(569),b=a.n(v),C=a(3565),f=a.n(C),y=a(9216),k=a.n(y),w=a(4589),S=a.n(w),x=a(8827),z={};z.styleTagTransform=S(),z.setAttributes=f(),z.insert=b().bind(null,\"head\"),z.domAPI=g(),z.insertStyleElement=k();m()(x.Z,z);x.Z&&x.Z.locals&&x.Z.locals;var N=a(5565),j={};j.styleTagTransform=S(),j.setAttributes=f(),j.insert=b().bind(null,\"head\"),j.domAPI=g(),j.insertStyleElement=k();m()(N.Z,j);N.Z&&N.Z.locals&&N.Z.locals;var P=a(1900),E=a(5727),B=a.n(E),_=(0,P.Z)(p,undefined,undefined,!1,null,\"20a3e950\",null);\"function\"==typeof B()&&B()(_);const T=_.exports},1631:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>k});const o={name:\"NcButton\",props:{disabled:{type:Boolean,default:!1},type:{type:String,validator:e=>-1!==[\"primary\",\"secondary\",\"tertiary\",\"tertiary-no-background\",\"tertiary-on-primary\",\"error\",\"warning\",\"success\"].indexOf(e),default:\"secondary\"},nativeType:{type:String,validator:e=>-1!==[\"submit\",\"reset\",\"button\"].indexOf(e),default:\"button\"},wide:{type:Boolean,default:!1},ariaLabel:{type:String,default:null},href:{type:String,default:null},download:{type:String,default:null},to:{type:[String,Object],default:null},exact:{type:Boolean,default:!1},ariaHidden:{type:Boolean,default:null}},render(e){var t,a,o,i,n,r=this;const s=null===(t=this.$slots.default)||void 0===t||null===(a=t[0])||void 0===a||null===(o=a.text)||void 0===o||null===(i=o.trim)||void 0===i?void 0:i.call(o),l=!!s,c=null===(n=this.$slots)||void 0===n?void 0:n.icon;s||this.ariaLabel||console.warn(\"You need to fill either the text or the ariaLabel props in the button component.\",{text:s,ariaLabel:this.ariaLabel},this);const d=function(){let{navigate:t,isActive:a,isExactActive:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(r.to||!r.href?\"button\":\"a\",{class:[\"button-vue\",{\"button-vue--icon-only\":c&&!l,\"button-vue--text-only\":l&&!c,\"button-vue--icon-and-text\":c&&l,[\"button-vue--vue-\".concat(r.type)]:r.type,\"button-vue--wide\":r.wide,active:a,\"router-link-exact-active\":o}],attrs:{\"aria-label\":r.ariaLabel,disabled:r.disabled,type:r.href?null:r.nativeType,role:r.href?\"button\":null,href:!r.to&&r.href?r.href:null,target:!r.to&&r.href?\"_self\":null,rel:!r.to&&r.href?\"nofollow noreferrer noopener\":null,download:!r.to&&r.href&&r.download?r.download:null,...r.$attrs},on:{...r.$listeners,click:e=>{var a,o;null===(a=r.$listeners)||void 0===a||null===(o=a.click)||void 0===o||o.call(a,e),null==t||t(e)}}},[e(\"span\",{class:\"button-vue__wrapper\"},[c?e(\"span\",{class:\"button-vue__icon\",attrs:{\"aria-hidden\":r.ariaHidden}},[r.$slots.icon]):null,l?e(\"span\",{class:\"button-vue__text\"},[s]):null])])};return this.to?e(\"router-link\",{props:{custom:!0,to:this.to,exact:this.exact},scopedSlots:{default:d}}):d()}};var i=a(3379),n=a.n(i),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),d=a(3565),u=a.n(d),p=a(9216),A=a.n(p),m=a(4589),h=a.n(m),g=a(7233),v={};v.styleTagTransform=h(),v.setAttributes=u(),v.insert=c().bind(null,\"head\"),v.domAPI=s(),v.insertStyleElement=A();n()(g.Z,v);g.Z&&g.Z.locals&&g.Z.locals;var b=a(1900),C=a(2102),f=a.n(C),y=(0,b.Z)(o,undefined,undefined,!1,null,\"488fcfba\",null);\"function\"==typeof f()&&f()(y);const k=y.exports},5202:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>W});var o=a(7645),i=a(1206),n=a(932),r=a(1205),s=a(3648),l=a(644),c=a(1631);function d(e,t){let a,o,i,n=t;this.start=function(){i=!0,o=new Date,a=setTimeout(e,n)},this.pause=function(){i=!1,clearTimeout(a),n-=new Date-o},this.clear=function(){i=!1,clearTimeout(a),n=0},this.getTimeLeft=function(){return i&&(this.pause(),this.start()),n},this.getStateRunning=function(){return i},this.start()}var u=a(336);const p=require(\"vue-material-design-icons/ChevronLeft.vue\");var A=a.n(p),m=a(9044),h=a.n(m),g=a(8618),v=a.n(g);const b=require(\"vue-material-design-icons/Pause.vue\");var C=a.n(b);const f=require(\"vue-material-design-icons/Play.vue\");var y=a.n(f),k=a(4505),w=a(2640),S=a.n(w);const x={name:\"NcModal\",components:{NcActions:l.default,ChevronLeft:A(),ChevronRight:h(),Close:v(),Pause:C(),Play:y(),NcButton:c.default},directives:{tooltip:u.default},mixins:[s.Z],props:{title:{type:String,default:\"\"},hasPrevious:{type:Boolean,default:!1},hasNext:{type:Boolean,default:!1},outTransition:{type:Boolean,default:!1},enableSlideshow:{type:Boolean,default:!1},slideshowDelay:{type:Number,default:5e3},slideshowPaused:{type:Boolean,default:!1},enableSwipe:{type:Boolean,default:!0},spreadNavigation:{type:Boolean,default:!1},size:{type:String,default:\"normal\",validator:e=>[\"small\",\"normal\",\"large\",\"full\"].includes(e)},canClose:{type:Boolean,default:!0},dark:{type:Boolean,default:!1},container:{type:[String,null],default:\"body\"},closeButtonContained:{type:Boolean,default:!0},additionalTrapElements:{type:Array,default:()=>[]},inlineActions:{type:Number,default:0},show:{type:Boolean,default:void 0}},emits:[\"previous\",\"next\",\"close\",\"update:show\"],data:()=>({mc:null,playing:!1,slideshowTimeout:null,iconSize:24,focusTrap:null,randId:(0,r.Z)(),internalShow:!0}),computed:{showModal(){return void 0===this.show?this.internalShow:this.show},modalTransitionName(){return\"modal-\".concat(this.outTransition?\"out\":\"in\")},playPauseTitle(){return this.playing?(0,n.t)(\"Pause slideshow\"):(0,n.t)(\"Start slideshow\")},cssVariables(){return{\"--slideshow-duration\":this.slideshowDelay+\"ms\",\"--icon-size\":this.iconSize+\"px\"}},closeButtonAriaLabel:()=>(0,n.t)(\"Close modal\"),prevButtonAriaLabel:()=>(0,n.t)(\"Previous\"),nextButtonAriaLabel:()=>(0,n.t)(\"Next\")},watch:{slideshowPaused(e){this.slideshowTimeout&&(e?this.slideshowTimeout.pause():this.slideshowTimeout.start())},additionalTrapElements(e){if(this.focusTrap){const t=this.$refs.mask;this.focusTrap.updateContainerElements([t,...e])}}},beforeMount(){window.addEventListener(\"keydown\",this.handleKeydown)},beforeDestroy(){window.removeEventListener(\"keydown\",this.handleKeydown),this.mc.off(\"swipeleft swiperight\"),this.mc.destroy()},mounted(){if(this.useFocusTrap(),this.mc=new(S())(this.$refs.mask),this.mc.on(\"swipeleft swiperight\",(e=>{this.handleSwipe(e)})),this.container)if(\"body\"===this.container)document.body.insertBefore(this.$el,document.body.lastChild);else{document.querySelector(this.container).appendChild(this.$el)}},destroyed(){this.clearFocusTrap(),this.$el.remove()},methods:{previous(e){this.hasPrevious&&(e&&this.resetSlideshow(),this.$emit(\"previous\",e))},next(e){this.hasNext&&(e&&this.resetSlideshow(),this.$emit(\"next\",e))},close(e){this.canClose&&(this.internalShow=!1,this.$emit(\"update:show\",!1),setTimeout((()=>{this.$emit(\"close\",e)}),300))},handleKeydown(e){switch(e.keyCode){case 37:this.previous(e);break;case 39:this.next(e);break;case 27:this.close(e)}},handleSwipe(e){this.enableSwipe&&(\"swipeleft\"===e.type?this.next(e):\"swiperight\"===e.type&&this.previous(e))},togglePlayPause(){this.playing=!this.playing,this.playing?this.handleSlideshow():this.clearSlideshowTimeout()},resetSlideshow(){this.playing=!this.playing,this.clearSlideshowTimeout(),this.$nextTick((function(){this.togglePlayPause()}))},handleSlideshow(){this.playing=!0,this.hasNext?this.slideshowTimeout=new d((()=>{this.next(),this.handleSlideshow()}),this.slideshowDelay):(this.playing=!1,this.clearSlideshowTimeout())},clearSlideshowTimeout(){this.slideshowTimeout&&this.slideshowTimeout.clear()},async useFocusTrap(){if(!this.showModal||this.focusTrap)return;const e=this.$refs.mask;await this.$nextTick();const t={allowOutsideClick:!0,fallbackFocus:e,trapStack:(0,i.L)()};this.focusTrap=(0,k.createFocusTrap)(e,t),this.focusTrap.activate()},clearFocusTrap(){var e;this.focusTrap&&(null===(e=this.focusTrap)||void 0===e||e.deactivate(),this.focusTrap=null)}}},z=x;var N=a(3379),j=a.n(N),P=a(7795),E=a.n(P),B=a(569),_=a.n(B),T=a(3565),D=a.n(T),F=a(9216),O=a.n(F),G=a(4589),$=a.n(G),M=a(4274),I={};I.styleTagTransform=$(),I.setAttributes=D(),I.insert=_().bind(null,\"head\"),I.domAPI=E(),I.insertStyleElement=O();j()(M.Z,I);M.Z&&M.Z.locals&&M.Z.locals;var U=a(1900),L=a(9989),R=a.n(L),q=(0,U.Z)(z,(function(){var e=this,t=e._self._c;return t(\"transition\",{attrs:{name:\"fade\",appear:\"\"},on:{\"after-enter\":e.useFocusTrap,\"before-leave\":e.clearFocusTrap}},[t(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showModal,expression:\"showModal\"}],ref:\"mask\",staticClass:\"modal-mask\",class:{\"modal-mask--dark\":e.dark},style:e.cssVariables,attrs:{role:\"dialog\",\"aria-modal\":\"true\",\"aria-labelledby\":\"modal-title-\"+e.randId,\"aria-describedby\":\"modal-description-\"+e.randId,tabindex:\"-1\"}},[t(\"transition\",{attrs:{name:\"fade-visibility\",appear:\"\"}},[t(\"div\",{staticClass:\"modal-header\"},[\"\"!==e.title.trim()?t(\"h2\",{staticClass:\"modal-title\",attrs:{id:\"modal-title-\"+e.randId}},[e._v(\"\\n\\t\\t\\t\\t\\t\"+e._s(e.title)+\"\\n\\t\\t\\t\\t\")]):e._e(),e._v(\" \"),t(\"div\",{staticClass:\"icons-menu\"},[e.hasNext&&e.enableSlideshow?t(\"button\",{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:e.playPauseTitle,expression:\"playPauseTitle\",modifiers:{auto:!0}}],staticClass:\"play-pause-icons\",class:{\"play-pause-icons--paused\":e.slideshowPaused},attrs:{type:\"button\"},on:{click:e.togglePlayPause}},[e.playing?t(\"Pause\",{staticClass:\"play-pause-icons__pause\",attrs:{size:e.iconSize}}):t(\"Play\",{staticClass:\"play-pause-icons__play\",attrs:{size:e.iconSize}}),e._v(\" \"),t(\"span\",{staticClass:\"hidden-visually\"},[e._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+e._s(e.playPauseTitle)+\"\\n\\t\\t\\t\\t\\t\\t\")]),e._v(\" \"),e.playing?t(\"svg\",{staticClass:\"progress-ring\",attrs:{height:\"50\",width:\"50\"}},[t(\"circle\",{staticClass:\"progress-ring__circle\",attrs:{stroke:\"white\",\"stroke-width\":\"2\",fill:\"transparent\",r:\"15\",cx:\"25\",cy:\"25\"}})]):e._e()],1):e._e(),e._v(\" \"),t(\"NcActions\",{staticClass:\"header-actions\",attrs:{inline:e.inlineActions}},[e._t(\"actions\")],2),e._v(\" \"),e.canClose&&!e.closeButtonContained?t(\"NcButton\",{staticClass:\"header-close\",attrs:{\"aria-label\":e.closeButtonAriaLabel,type:\"tertiary\"},on:{click:e.close},scopedSlots:e._u([{key:\"icon\",fn:function(){return[t(\"Close\",{attrs:{size:e.iconSize}})]},proxy:!0}],null,!1,1841713362)}):e._e()],1)])]),e._v(\" \"),t(\"transition\",{attrs:{name:e.modalTransitionName,appear:\"\"}},[t(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showModal,expression:\"showModal\"}],staticClass:\"modal-wrapper\",class:[\"modal-wrapper--\".concat(e.size),e.spreadNavigation?\"modal-wrapper--spread-navigation\":\"\"],on:{mousedown:function(t){return t.target!==t.currentTarget?null:e.close.apply(null,arguments)}}},[t(\"transition\",{attrs:{name:\"fade-visibility\",appear:\"\"}},[t(\"NcButton\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.hasPrevious,expression:\"hasPrevious\"}],staticClass:\"prev\",class:{invisible:!e.hasPrevious},attrs:{type:\"tertiary-no-background\",\"aria-label\":e.prevButtonAriaLabel},on:{click:e.previous},scopedSlots:e._u([{key:\"icon\",fn:function(){return[t(\"ChevronLeft\",{attrs:{size:40}})]},proxy:!0}])})],1),e._v(\" \"),t(\"div\",{staticClass:\"modal-container\",attrs:{id:\"modal-description-\"+e.randId}},[e._t(\"default\"),e._v(\" \"),e.canClose&&e.closeButtonContained?t(\"NcButton\",{staticClass:\"modal-container__close\",attrs:{type:\"tertiary\",\"aria-label\":e.closeButtonAriaLabel},on:{click:e.close},scopedSlots:e._u([{key:\"icon\",fn:function(){return[t(\"Close\",{attrs:{size:20}})]},proxy:!0}],null,!1,2121748766)}):e._e()],2),e._v(\" \"),t(\"transition\",{attrs:{name:\"fade-visibility\",appear:\"\"}},[t(\"NcButton\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.hasNext,expression:\"hasNext\"}],staticClass:\"next\",class:{invisible:!e.hasNext},attrs:{type:\"tertiary-no-background\",\"aria-label\":e.nextButtonAriaLabel},on:{click:e.next},scopedSlots:e._u([{key:\"icon\",fn:function(){return[t(\"ChevronRight\",{attrs:{size:40}})]},proxy:!0}])})],1)],1)])],1)])}),[],!1,null,\"09b21bad\",null);\"function\"==typeof R()&&R()(q);const Z=q.exports;(0,o.Z)(Z);const W=Z},2297:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>z});var o=a(9454),i=a(4505),n=a(1206);const r={name:\"NcPopover\",components:{Dropdown:o.Dropdown},inheritAttrs:!1,props:{popoverBaseClass:{type:String,default:\"\"},focusTrap:{type:Boolean,default:!0},setReturnFocus:{default:void 0,type:[HTMLElement,SVGElement,String,Boolean]}},emits:[\"after-show\",\"after-hide\"],beforeDestroy(){this.clearFocusTrap()},methods:{async useFocusTrap(){var e,t;if(await this.$nextTick(),!this.focusTrap)return;const a=null===(e=this.$refs.popover)||void 0===e||null===(t=e.$refs.popperContent)||void 0===t?void 0:t.$el;a&&(this.$focusTrap=(0,i.createFocusTrap)(a,{escapeDeactivates:!1,allowOutsideClick:!0,setReturnFocus:this.setReturnFocus,trapStack:(0,n.L)()}),this.$focusTrap.activate())},clearFocusTrap(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var t;null===(t=this.$focusTrap)||void 0===t||t.deactivate(e),this.$focusTrap=null}catch(e){console.warn(e)}},afterShow(){this.$nextTick((()=>{this.$emit(\"after-show\"),this.useFocusTrap()}))},afterHide(){this.$emit(\"after-hide\"),this.clearFocusTrap()}}},s=r;var l=a(3379),c=a.n(l),d=a(7795),u=a.n(d),p=a(569),A=a.n(p),m=a(3565),h=a.n(m),g=a(9216),v=a.n(g),b=a(4589),C=a.n(b),f=a(1625),y={};y.styleTagTransform=C(),y.setAttributes=h(),y.insert=A().bind(null,\"head\"),y.domAPI=u(),y.insertStyleElement=v();c()(f.Z,y);f.Z&&f.Z.locals&&f.Z.locals;var k=a(1900),w=a(2405),S=a.n(w),x=(0,k.Z)(s,(function(){var e=this;return(0,e._self._c)(\"Dropdown\",e._g(e._b({ref:\"popover\",attrs:{distance:10,\"arrow-padding\":10,\"no-auto-focus\":!0,\"popper-class\":e.popoverBaseClass},on:{\"apply-show\":e.afterShow,\"apply-hide\":e.afterHide},scopedSlots:e._u([{key:\"popper\",fn:function(){return[e._t(\"default\")]},proxy:!0}],null,!0)},\"Dropdown\",e.$attrs,!1),e.$listeners),[e._t(\"trigger\")],2)}),[],!1,null,null,null);\"function\"==typeof S()&&S()(x);const z=x.exports},336:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>b});var o=a(9454),i=a(3379),n=a.n(i),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),d=a(3565),u=a.n(d),p=a(9216),A=a.n(p),m=a(4589),h=a.n(m),g=a(8384),v={};v.styleTagTransform=h(),v.setAttributes=u(),v.insert=c().bind(null,\"head\"),v.domAPI=s(),v.insertStyleElement=A();n()(g.Z,v);g.Z&&g.Z.locals&&g.Z.locals;o.options.themes.tooltip.html=!1,o.options.themes.tooltip.delay={show:500,hide:200},o.options.themes.tooltip.distance=10,o.options.themes.tooltip[\"arrow-padding\"]=3;const b=o.VTooltip},932:(e,t,a)=>{\"use strict\";a.d(t,{n:()=>r,t:()=>s});var o=a(7931);const i=(0,o.getGettextBuilder)().detectLocale();[{locale:\"ar\",translations:{\"{tag} (invisible)\":\"{tag} (غير مرئي)\",\"{tag} (restricted)\":\"{tag} (مقيد)\",Actions:\"الإجراءات\",Activities:\"النشاطات\",\"Animals & Nature\":\"الحيوانات والطبيعة\",\"Anything shared with the same group of people will show up here\":\"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا\",\"Avatar of {displayName}\":\"صورة {displayName} الرمزية\",\"Avatar of {displayName}, {status}\":\"صورة {displayName} الرمزية، {status}\",\"Cancel changes\":\"إلغاء التغييرات\",\"Change title\":\"تغيير العنوان\",Choose:\"إختيار\",\"Clear text\":\"مسح النص\",Close:\"أغلق\",\"Close modal\":\"قفل الشرط\",\"Close navigation\":\"إغلاق المتصفح\",\"Close sidebar\":\"قفل الشريط الجانبي\",\"Confirm changes\":\"تأكيد التغييرات\",Custom:\"مخصص\",\"Edit item\":\"تعديل عنصر\",\"Error getting related resources\":\"خطأ في تحصيل مصادر ذات صلة\",\"External documentation for {title}\":\"الوثائق الخارجية لـ{title}\",Favorite:\"مفضلة\",Flags:\"الأعلام\",\"Food & Drink\":\"الطعام والشراب\",\"Frequently used\":\"كثيرا ما تستخدم\",Global:\"عالمي\",\"Go back to the list\":\"العودة إلى القائمة\",\"Hide password\":\"إخفاء كلمة السر\",\"Message limit of {count} characters reached\":\"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف\",\"More items …\":\"عناصر أخرى ...\",Next:\"التالي\",\"No emoji found\":\"لم يتم العثور على أي رمز تعبيري\",\"No results\":\"ليس هناك أية نتيجة\",Objects:\"الأشياء\",Open:\"فتح\",'Open link to \"{resourceTitle}\"':'فتح رابط إلى \"{resourceTitle}\"',\"Open navigation\":\"فتح المتصفح\",\"Password is secure\":\"كلمة السر مُؤمّنة\",\"Pause slideshow\":\"إيقاف العرض مؤقتًا\",\"People & Body\":\"الناس والجسم\",\"Pick an emoji\":\"اختر رمزًا تعبيريًا\",\"Please select a time zone:\":\"الرجاء تحديد المنطقة الزمنية:\",Previous:\"السابق\",\"Related resources\":\"مصادر ذات صلة\",Search:\"بحث\",\"Search results\":\"نتائج البحث\",\"Select a tag\":\"اختر علامة\",Settings:\"الإعدادات\",\"Settings navigation\":\"إعدادات المتصفح\",\"Show password\":\"أعرض كلمة السر\",\"Smileys & Emotion\":\"الوجوه و الرموز التعبيرية\",\"Start slideshow\":\"بدء العرض\",Submit:\"إرسال\",Symbols:\"الرموز\",\"Travel & Places\":\"السفر والأماكن\",\"Type to search time zone\":\"اكتب للبحث عن منطقة زمنية\",\"Unable to search the group\":\"تعذر البحث في المجموعة\",\"Undo changes\":\"التراجع عن التغييرات\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ...\"}},{locale:\"br\",translations:{\"{tag} (invisible)\":\"{tag} (diwelus)\",\"{tag} (restricted)\":\"{tag} (bevennet)\",Actions:\"Oberioù\",Activities:\"Oberiantizoù\",\"Animals & Nature\":\"Loened & Natur\",Choose:\"Dibab\",Close:\"Serriñ\",Custom:\"Personelañ\",Flags:\"Bannieloù\",\"Food & Drink\":\"Boued & Evajoù\",\"Frequently used\":\"Implijet alies\",Next:\"Da heul\",\"No emoji found\":\"Emoji ebet kavet\",\"No results\":\"Disoc'h ebet\",Objects:\"Traoù\",\"Pause slideshow\":\"Arsav an diaporama\",\"People & Body\":\"Tud & Korf\",\"Pick an emoji\":\"Choaz un emoji\",Previous:\"A-raok\",Search:\"Klask\",\"Search results\":\"Disoc'hoù an enklask\",\"Select a tag\":\"Choaz ur c'hlav\",Settings:\"Arventennoù\",\"Smileys & Emotion\":\"Smileyioù & Fromoù\",\"Start slideshow\":\"Kregiñ an diaporama\",Symbols:\"Arouezioù\",\"Travel & Places\":\"Beaj & Lec'hioù\",\"Unable to search the group\":\"Dibosupl eo klask ar strollad\"}},{locale:\"ca\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringit)\",Actions:\"Accions\",Activities:\"Activitats\",\"Animals & Nature\":\"Animals i natura\",\"Anything shared with the same group of people will show up here\":\"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancel·la els canvis\",\"Change title\":\"Canviar títol\",Choose:\"Tria\",\"Clear text\":\"Netejar text\",Close:\"Tanca\",\"Close modal\":\"Tancar el mode\",\"Close navigation\":\"Tanca la navegació\",\"Close sidebar\":\"Tancar la barra lateral\",\"Confirm changes\":\"Confirmeu els canvis\",Custom:\"Personalitzat\",\"Edit item\":\"Edita l'element\",\"Error getting related resources\":\"Error obtenint els recursos relacionats\",\"Error parsing svg\":\"Error en l'anàlisi del svg\",\"External documentation for {title}\":\"Documentació externa per a {title}\",Favorite:\"Preferit\",Flags:\"Marques\",\"Food & Drink\":\"Menjar i begudes\",\"Frequently used\":\"Utilitzats recentment\",Global:\"Global\",\"Go back to the list\":\"Torna a la llista\",\"Hide password\":\"Amagar contrasenya\",\"Message limit of {count} characters reached\":\"S'ha arribat al límit de {count} caràcters per missatge\",\"More items …\":\"Més artícles...\",Next:\"Següent\",\"No emoji found\":\"No s'ha trobat cap emoji\",\"No results\":\"Sense resultats\",Objects:\"Objectes\",Open:\"Obrir\",'Open link to \"{resourceTitle}\"':'Obrir enllaç a \"{resourceTitle}\"',\"Open navigation\":\"Obre la navegació\",\"Password is secure\":\"Contrasenya segura
\",\"Pause slideshow\":\"Atura la presentació\",\"People & Body\":\"Persones i cos\",\"Pick an emoji\":\"Trieu un emoji\",\"Please select a time zone:\":\"Seleccioneu una zona horària:\",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionats\",Search:\"Cerca\",\"Search results\":\"Resultats de cerca\",\"Select a tag\":\"Seleccioneu una etiqueta\",Settings:\"Paràmetres\",\"Settings navigation\":\"Navegació d'opcions\",\"Show password\":\"Mostrar contrasenya\",\"Smileys & Emotion\":\"Cares i emocions\",\"Start slideshow\":\"Inicia la presentació\",Submit:\"Envia\",Symbols:\"Símbols\",\"Travel & Places\":\"Viatges i llocs\",\"Type to search time zone\":\"Escriviu per cercar la zona horària\",\"Unable to search the group\":\"No es pot cercar el grup\",\"Undo changes\":\"Desfés els canvis\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escriu missatge, fes servir \"@\" per esmentar algú, fes servir \":\" per autocompletar emojis...'}},{locale:\"cs_CZ\",translations:{\"{tag} (invisible)\":\"{tag} (neviditelné)\",\"{tag} (restricted)\":\"{tag} (omezené)\",Actions:\"Akce\",Activities:\"Aktivity\",\"Animals & Nature\":\"Zvířata a příroda\",\"Anything shared with the same group of people will show up here\":\"Cokoli nasdíleného stejné skupině lidí se zobrazí zde\",\"Avatar of {displayName}\":\"Zástupný obrázek uživatele {displayName}\",\"Avatar of {displayName}, {status}\":\"Zástupný obrázek uživatele {displayName}, {status}\",\"Cancel changes\":\"Zrušit změny\",\"Change title\":\"Změnit nadpis\",Choose:\"Zvolit\",\"Clear text\":\"Čitelný text\",Close:\"Zavřít\",\"Close modal\":\"Zavřít dialogové okno\",\"Close navigation\":\"Zavřít navigaci\",\"Close sidebar\":\"Zavřít postranní panel\",\"Confirm changes\":\"Potvrdit změny\",Custom:\"Uživatelsky určené\",\"Edit item\":\"Upravit položku\",\"Error getting related resources\":\"Chyba při získávání souvisejících prostředků\",\"Error parsing svg\":\"Chyba při zpracovávání svg\",\"External documentation for {title}\":\"Externí dokumentace k {title}\",Favorite:\"Oblíbené\",Flags:\"Příznaky\",\"Food & Drink\":\"Jídlo a pití\",\"Frequently used\":\"Často používané\",Global:\"Globální\",\"Go back to the list\":\"Jít zpět na seznam\",\"Hide password\":\"Skrýt heslo\",\"Message limit of {count} characters reached\":\"Dosaženo limitu počtu ({count}) znaků zprávy\",\"More items …\":\"Další položky…\",Next:\"Následující\",\"No emoji found\":\"Nenalezeno žádné emoji\",\"No results\":\"Nic nenalezeno\",Objects:\"Objekty\",Open:\"Otevřít\",'Open link to \"{resourceTitle}\"':\"Otevřít odkaz na „{resourceTitle}“\",\"Open navigation\":\"Otevřít navigaci\",\"Password is secure\":\"Heslo je bezpečné\",\"Pause slideshow\":\"Pozastavit prezentaci\",\"People & Body\":\"Lidé a tělo\",\"Pick an emoji\":\"Vybrat emoji\",\"Please select a time zone:\":\"Vyberte časovou zónu:\",Previous:\"Předchozí\",\"Related resources\":\"Související prostředky\",Search:\"Hledat\",\"Search results\":\"Výsledky hledání\",\"Select a tag\":\"Vybrat štítek\",Settings:\"Nastavení\",\"Settings navigation\":\"Pohyb po nastavení\",\"Show password\":\"Zobrazit heslo\",\"Smileys & Emotion\":\"Úsměvy a emoce\",\"Start slideshow\":\"Spustit prezentaci\",Submit:\"Odeslat\",Symbols:\"Symboly\",\"Travel & Places\":\"Cestování a místa\",\"Type to search time zone\":\"Psaním vyhledejte časovou zónu\",\"Unable to search the group\":\"Nedaří se hledat skupinu\",\"Undo changes\":\"Vzít změny zpět\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':\"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…\"}},{locale:\"da\",translations:{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (begrænset)\",Actions:\"Handlinger\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Dyr & Natur\",\"Anything shared with the same group of people will show up here\":\"Alt der deles med samme gruppe af personer vil vises her\",\"Avatar of {displayName}\":\"Avatar af {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar af {displayName}, {status}\",\"Cancel changes\":\"Annuller ændringer\",\"Change title\":\"Ret titel\",Choose:\"Vælg\",\"Clear text\":\"Ryd tekst\",Close:\"Luk\",\"Close modal\":\"Luk vindue\",\"Close navigation\":\"Luk navigation\",\"Close sidebar\":\"Luk sidepanel\",\"Confirm changes\":\"Bekræft ændringer\",Custom:\"Brugerdefineret\",\"Edit item\":\"Rediger emne\",\"Error getting related resources\":\"Kunne ikke hente tilknyttede data\",\"Error parsing svg\":\"Fejl ved analysering af svg\",\"External documentation for {title}\":\"Ekstern dokumentation for {title}\",Favorite:\"Favorit\",Flags:\"Flag\",\"Food & Drink\":\"Mad & Drikke\",\"Frequently used\":\"Ofte brugt\",Global:\"Global\",\"Go back to the list\":\"Tilbage til listen\",\"Hide password\":\"Skjul kodeord\",\"Message limit of {count} characters reached\":\"Begrænsning på {count} tegn er nået\",\"More items …\":\"Mere ...\",Next:\"Videre\",\"No emoji found\":\"Ingen emoji fundet\",\"No results\":\"Ingen resultater\",Objects:\"Objekter\",Open:\"Åbn\",'Open link to \"{resourceTitle}\"':'Åbn link til \"{resourceTitle}\"',\"Open navigation\":\"Åbn navigation\",\"Password is secure\":\"Kodeordet er sikkert\",\"Pause slideshow\":\"Suspender fremvisning\",\"People & Body\":\"Mennesker & Menneskekroppen\",\"Pick an emoji\":\"Vælg en emoji\",\"Please select a time zone:\":\"Vælg venligst en tidszone:\",Previous:\"Forrige\",\"Related resources\":\"Relaterede emner\",Search:\"Søg\",\"Search results\":\"Søgeresultater\",\"Select a tag\":\"Vælg et mærke\",Settings:\"Indstillinger\",\"Settings navigation\":\"Naviger i indstillinger\",\"Show password\":\"Vis kodeord\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start fremvisning\",Submit:\"Send\",Symbols:\"Symboler\",\"Travel & Places\":\"Rejser & Rejsemål\",\"Type to search time zone\":\"Indtast for at søge efter tidszone\",\"Unable to search the group\":\"Kan ikke søge på denne gruppe\",\"Undo changes\":\"Fortryd ændringer\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv besked, brug \"@\" for at nævne nogen, brug \":\" til emoji-autofuldførelse ...'}},{locale:\"de\",translations:{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",Actions:\"Aktionen\",Activities:\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Anything shared with the same group of people will show up here\":\"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt\",\"Avatar of {displayName}\":\"Avatar von {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar von {displayName}, {status}\",\"Cancel changes\":\"Änderungen verwerfen\",\"Change title\":\"Titel ändern\",Choose:\"Auswählen\",\"Clear text\":\"Klartext\",Close:\"Schließen\",\"Close modal\":\"Modal schließen\",\"Close navigation\":\"Navigation schließen\",\"Close sidebar\":\"Seitenleiste schließen\",\"Confirm changes\":\"Änderungen bestätigen\",Custom:\"Benutzerdefiniert\",\"Edit item\":\"Objekt bearbeiten\",\"Error getting related resources\":\"Fehler beim Abrufen verwandter Ressourcen\",\"Error parsing svg\":\"Fehler beim Einlesen der SVG\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",Favorite:\"Favorit\",Flags:\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",Global:\"Global\",\"Go back to the list\":\"Zurück zur Liste\",\"Hide password\":\"Passwort verbergen\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"More items …\":\"Weitere Elemente …\",Next:\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",Objects:\"Gegenstände\",Open:\"Öffnen\",'Open link to \"{resourceTitle}\"':'Link zu \"{resourceTitle}\" öffnen',\"Open navigation\":\"Navigation öffnen\",\"Password is secure\":\"Passwort ist sicher\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Please select a time zone:\":\"Bitte wählen Sie eine Zeitzone:\",Previous:\"Vorherige\",\"Related resources\":\"Verwandte Ressourcen\",Search:\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",Settings:\"Einstellungen\",\"Settings navigation\":\"Einstellungen für die Navigation\",\"Show password\":\"Passwort anzeigen\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",Submit:\"Einreichen\",Symbols:\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Type to search time zone\":\"Tippen, um Zeitzone zu suchen\",\"Unable to search the group\":\"Die Gruppe konnte nicht durchsucht werden\",\"Undo changes\":\"Änderungen rückgängig machen\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Nachricht schreiben, \"@\" um jemanden zu erwähnen, \":\" für die automatische Vervollständigung von Emojis …'}},{locale:\"de_DE\",translations:{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",Actions:\"Aktionen\",Activities:\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Anything shared with the same group of people will show up here\":\"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt\",\"Avatar of {displayName}\":\"Avatar von {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar von {displayName}, {status}\",\"Cancel changes\":\"Änderungen verwerfen\",\"Change title\":\"Titel ändern\",Choose:\"Auswählen\",\"Clear text\":\"Klartext\",Close:\"Schließen\",\"Close modal\":\"Modal schließen\",\"Close navigation\":\"Navigation schließen\",\"Close sidebar\":\"Seitenleiste schließen\",\"Confirm changes\":\"Änderungen bestätigen\",Custom:\"Benutzerdefiniert\",\"Edit item\":\"Objekt bearbeiten\",\"Error getting related resources\":\"Fehler beim Abrufen verwandter Ressourcen\",\"Error parsing svg\":\"Fehler beim Einlesen der SVG\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",Favorite:\"Favorit\",Flags:\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",Global:\"Global\",\"Go back to the list\":\"Zurück zur Liste\",\"Hide password\":\"Passwort verbergen\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"More items …\":\"Weitere Elemente …\",Next:\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",Objects:\"Objekte\",Open:\"Öffnen\",'Open link to \"{resourceTitle}\"':'Link zu \"{resourceTitle}\" öffnen',\"Open navigation\":\"Navigation öffnen\",\"Password is secure\":\"Passwort ist sicher\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Please select a time zone:\":\"Bitte eine Zeitzone auswählen:\",Previous:\"Vorherige\",\"Related resources\":\"Verwandte Ressourcen\",Search:\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",Settings:\"Einstellungen\",\"Settings navigation\":\"Einstellungen für die Navigation\",\"Show password\":\"Passwort anzeigen\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",Submit:\"Einreichen\",Symbols:\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Type to search time zone\":\"Tippen, um eine Zeitzone zu suchen\",\"Unable to search the group\":\"Die Gruppe kann nicht durchsucht werden\",\"Undo changes\":\"Änderungen rückgängig machen\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Nachricht schreiben, \"@\" um jemanden zu erwähnen, \":\" für die automatische Vervollständigung von Emojis …'}},{locale:\"el\",translations:{\"{tag} (invisible)\":\"{tag} (αόρατο)\",\"{tag} (restricted)\":\"{tag} (περιορισμένο)\",Actions:\"Ενέργειες\",Activities:\"Δραστηριότητες\",\"Animals & Nature\":\"Ζώα & Φύση\",\"Anything shared with the same group of people will show up here\":\"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ\",\"Avatar of {displayName}\":\"Άβαταρ του {displayName}\",\"Avatar of {displayName}, {status}\":\"Άβαταρ του {displayName}, {status}\",\"Cancel changes\":\"Ακύρωση αλλαγών\",\"Change title\":\"Αλλαγή τίτλου\",Choose:\"Επιλογή\",\"Clear text\":\"Εκκαθάριση κειμένου\",Close:\"Κλείσιμο\",\"Close modal\":\"Βοηθητικό κλείσιμο\",\"Close navigation\":\"Κλείσιμο πλοήγησης\",\"Close sidebar\":\"Κλείσιμο πλευρικής μπάρας\",\"Confirm changes\":\"Επιβεβαίωση αλλαγών\",Custom:\"Προσαρμογή\",\"Edit item\":\"Επεξεργασία\",\"Error getting related resources\":\"Σφάλμα λήψης σχετικών πόρων\",\"Error parsing svg\":\"Σφάλμα ανάλυσης svg\",\"External documentation for {title}\":\"Εξωτερική τεκμηρίωση για {title}\",Favorite:\"Αγαπημένα\",Flags:\"Σημαίες\",\"Food & Drink\":\"Φαγητό & Ποτό\",\"Frequently used\":\"Συχνά χρησιμοποιούμενο\",Global:\"Καθολικό\",\"Go back to the list\":\"Επιστροφή στην αρχική λίστα \",\"Hide password\":\"Απόκρυψη κωδικού πρόσβασης\",\"Message limit of {count} characters reached\":\"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος\",\"More items …\":\"Περισσότερα στοιχεία …\",Next:\"Επόμενο\",\"No emoji found\":\"Δεν βρέθηκε emoji\",\"No results\":\"Κανένα αποτέλεσμα\",Objects:\"Αντικείμενα\",Open:\"Άνοιγμα\",'Open link to \"{resourceTitle}\"':'Άνοιγμα συνδέσμου στο \"{resourceTitle}\"',\"Open navigation\":\"Άνοιγμα πλοήγησης\",\"Password is secure\":\"Ο κωδικός πρόσβασης είναι ασφαλής\",\"Pause slideshow\":\"Παύση προβολής διαφανειών\",\"People & Body\":\"Άνθρωποι & Σώμα\",\"Pick an emoji\":\"Επιλέξτε ένα emoji\",\"Please select a time zone:\":\"Παρακαλούμε επιλέξτε μια ζώνη ώρας:\",Previous:\"Προηγούμενο\",\"Related resources\":\"Σχετικοί πόροι\",Search:\"Αναζήτηση\",\"Search results\":\"Αποτελέσματα αναζήτησης\",\"Select a tag\":\"Επιλογή ετικέτας\",Settings:\"Ρυθμίσεις\",\"Settings navigation\":\"Πλοήγηση ρυθμίσεων\",\"Show password\":\"Εμφάνιση κωδικού πρόσβασης\",\"Smileys & Emotion\":\"Φατσούλες & Συναίσθημα\",\"Start slideshow\":\"Έναρξη προβολής διαφανειών\",Submit:\"Υποβολή\",Symbols:\"Σύμβολα\",\"Travel & Places\":\"Ταξίδια & Τοποθεσίες\",\"Type to search time zone\":\"Πληκτρολογήστε για αναζήτηση ζώνης ώρας\",\"Unable to search the group\":\"Δεν είναι δυνατή η αναζήτηση της ομάδας\",\"Undo changes\":\"Αναίρεση Αλλαγών\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε \"@\" για να αναφέρετε κάποιον, χρησιμοποιείστε \":\" για αυτόματη συμπλήρωση emoji …'}},{locale:\"en_GB\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restricted)\",Actions:\"Actions\",Activities:\"Activities\",\"Animals & Nature\":\"Animals & Nature\",\"Anything shared with the same group of people will show up here\":\"Anything shared with the same group of people will show up here\",\"Avatar of {displayName}\":\"Avatar of {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar of {displayName}, {status}\",\"Cancel changes\":\"Cancel changes\",\"Change title\":\"Change title\",Choose:\"Choose\",\"Clear text\":\"Clear text\",Close:\"Close\",\"Close modal\":\"Close modal\",\"Close navigation\":\"Close navigation\",\"Close sidebar\":\"Close sidebar\",\"Confirm changes\":\"Confirm changes\",Custom:\"Custom\",\"Edit item\":\"Edit item\",\"Error getting related resources\":\"Error getting related resources\",\"Error parsing svg\":\"Error parsing svg\",\"External documentation for {title}\":\"External documentation for {title}\",Favorite:\"Favourite\",Flags:\"Flags\",\"Food & Drink\":\"Food & Drink\",\"Frequently used\":\"Frequently used\",Global:\"Global\",\"Go back to the list\":\"Go back to the list\",\"Hide password\":\"Hide password\",\"Message limit of {count} characters reached\":\"Message limit of {count} characters reached\",\"More items …\":\"More items …\",Next:\"Next\",\"No emoji found\":\"No emoji found\",\"No results\":\"No results\",Objects:\"Objects\",Open:\"Open\",'Open link to \"{resourceTitle}\"':'Open link to \"{resourceTitle}\"',\"Open navigation\":\"Open navigation\",\"Password is secure\":\"Password is secure\",\"Pause slideshow\":\"Pause slideshow\",\"People & Body\":\"People & Body\",\"Pick an emoji\":\"Pick an emoji\",\"Please select a time zone:\":\"Please select a time zone:\",Previous:\"Previous\",\"Related resources\":\"Related resources\",Search:\"Search\",\"Search results\":\"Search results\",\"Select a tag\":\"Select a tag\",Settings:\"Settings\",\"Settings navigation\":\"Settings navigation\",\"Show password\":\"Show password\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start slideshow\",Submit:\"Submit\",Symbols:\"Symbols\",\"Travel & Places\":\"Travel & Places\",\"Type to search time zone\":\"Type to search time zone\",\"Unable to search the group\":\"Unable to search the group\",\"Undo changes\":\"Undo changes\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …'}},{locale:\"eo\",translations:{\"{tag} (invisible)\":\"{tag} (kaŝita)\",\"{tag} (restricted)\":\"{tag} (limigita)\",Actions:\"Agoj\",Activities:\"Aktiveco\",\"Animals & Nature\":\"Bestoj & Naturo\",Choose:\"Elektu\",Close:\"Fermu\",Custom:\"Propra\",Flags:\"Flagoj\",\"Food & Drink\":\"Manĝaĵo & Trinkaĵo\",\"Frequently used\":\"Ofte uzataj\",\"Message limit of {count} characters reached\":\"La limo je {count} da literoj atingita\",Next:\"Sekva\",\"No emoji found\":\"La emoĝio forestas\",\"No results\":\"La rezulto forestas\",Objects:\"Objektoj\",\"Pause slideshow\":\"Payzi bildprezenton\",\"People & Body\":\"Homoj & Korpo\",\"Pick an emoji\":\"Elekti emoĝion \",Previous:\"Antaŭa\",Search:\"Serĉi\",\"Search results\":\"Serĉrezultoj\",\"Select a tag\":\"Elektu etikedon\",Settings:\"Agordo\",\"Settings navigation\":\"Agorda navigado\",\"Smileys & Emotion\":\"Ridoj kaj Emocioj\",\"Start slideshow\":\"Komenci bildprezenton\",Symbols:\"Signoj\",\"Travel & Places\":\"Vojaĵoj & Lokoj\",\"Unable to search the group\":\"Ne eblas serĉi en la grupo\",\"Write message, @ to mention someone …\":\"Mesaĝi, uzu @ por mencii iun ...\"}},{locale:\"es\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringido)\",Actions:\"Acciones\",Activities:\"Actividades\",\"Animals & Nature\":\"Animales y naturaleza\",\"Anything shared with the same group of people will show up here\":\"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancelar cambios\",\"Change title\":\"Cambiar título\",Choose:\"Elegir\",\"Clear text\":\"Limpiar texto\",Close:\"Cerrar\",\"Close modal\":\"Cerrar modal\",\"Close navigation\":\"Cerrar navegación\",\"Close sidebar\":\"Cerrar barra lateral\",\"Confirm changes\":\"Confirmar cambios\",Custom:\"Personalizado\",\"Edit item\":\"Editar elemento\",\"Error getting related resources\":\"Se encontró un error al obtener los recursos relacionados\",\"Error parsing svg\":\"Error procesando svg\",\"External documentation for {title}\":\"Documentacion externa de {title}\",Favorite:\"Favorito\",Flags:\"Banderas\",\"Food & Drink\":\"Comida y bebida\",\"Frequently used\":\"Usado con frecuenca\",Global:\"Global\",\"Go back to the list\":\"Volver a la lista\",\"Hide password\":\"Ocultar contraseña\",\"Message limit of {count} characters reached\":\"El mensaje ha alcanzado el límite de {count} caracteres\",\"More items …\":\"Más ítems...\",Next:\"Siguiente\",\"No emoji found\":\"No hay ningún emoji\",\"No results\":\" Ningún resultado\",Objects:\"Objetos\",Open:\"Abrir\",'Open link to \"{resourceTitle}\"':'Abrir enlace a \"{resourceTitle}\"',\"Open navigation\":\"Abrir navegación\",\"Password is secure\":\"La contraseña es segura\",\"Pause slideshow\":\"Pausar la presentación \",\"People & Body\":\"Personas y cuerpos\",\"Pick an emoji\":\"Elegir un emoji\",\"Please select a time zone:\":\"Por favor elige un huso de horario:\",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionados\",Search:\"Buscar\",\"Search results\":\"Resultados de la búsqueda\",\"Select a tag\":\"Seleccione una etiqueta\",Settings:\"Ajustes\",\"Settings navigation\":\"Navegación por ajustes\",\"Show password\":\"Mostrar contraseña\",\"Smileys & Emotion\":\"Smileys y emoticonos\",\"Start slideshow\":\"Iniciar la presentación\",Submit:\"Enviar\",Symbols:\"Símbolos\",\"Travel & Places\":\"Viajes y lugares\",\"Type to search time zone\":\"Escribe para buscar un huso de horario\",\"Unable to search the group\":\"No es posible buscar en el grupo\",\"Undo changes\":\"Deshacer cambios\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escribir mensaje, utilice \"@\" para mencionar a alguien, utilice \":\" para autocompletado de emojis ...'}},{locale:\"eu\",translations:{\"{tag} (invisible)\":\"{tag} (ikusezina)\",\"{tag} (restricted)\":\"{tag} (mugatua)\",Actions:\"Ekintzak\",Activities:\"Jarduerak\",\"Animals & Nature\":\"Animaliak eta Natura\",\"Anything shared with the same group of people will show up here\":\"Pertsona-talde berarekin partekatutako edozer agertuko da hemen\",\"Avatar of {displayName}\":\"{displayName}-(e)n irudia\",\"Avatar of {displayName}, {status}\":\"{displayName} -(e)n irudia, {status}\",\"Cancel changes\":\"Ezeztatu aldaketak\",\"Change title\":\"Aldatu titulua\",Choose:\"Aukeratu\",\"Clear text\":\"Garbitu testua\",Close:\"Itxi\",\"Close modal\":\"Itxi modala\",\"Close navigation\":\"Itxi nabigazioa\",\"Close sidebar\":\"Itxi albo-barra\",\"Confirm changes\":\"Baieztatu aldaketak\",Custom:\"Pertsonalizatua\",\"Edit item\":\"Editatu elementua\",\"Error getting related resources\":\"Errorea erlazionatutako baliabideak lortzerakoan\",\"Error parsing svg\":\"Errore bat gertatu da svg-a analizatzean\",\"External documentation for {title}\":\"Kanpoko dokumentazioa {title}(r)entzat\",Favorite:\"Gogokoa\",Flags:\"Banderak\",\"Food & Drink\":\"Janaria eta edariak\",\"Frequently used\":\"Askotan erabilia\",Global:\"Globala\",\"Go back to the list\":\"Bueltatu zerrendara\",\"Hide password\":\"Ezkutatu pasahitza\",\"Message limit of {count} characters reached\":\"Mezuaren {count} karaketere-limitera heldu zara\",\"More items …\":\"Elementu gehiago …\",Next:\"Hurrengoa\",\"No emoji found\":\"Ez da emojirik aurkitu\",\"No results\":\"Emaitzarik ez\",Objects:\"Objektuak\",Open:\"Ireki\",'Open link to \"{resourceTitle}\"':'Ireki esteka: \"{resourceTitle}\"',\"Open navigation\":\"Ireki nabigazioa\",\"Password is secure\":\"Pasahitza segurua da\",\"Pause slideshow\":\"Pausatu diaporama\",\"People & Body\":\"Jendea eta gorputza\",\"Pick an emoji\":\"Hautatu emoji bat\",\"Please select a time zone:\":\"Mesedez hautatu ordu-zona bat:\",Previous:\"Aurrekoa\",\"Related resources\":\"Erlazionatutako baliabideak\",Search:\"Bilatu\",\"Search results\":\"Bilaketa emaitzak\",\"Select a tag\":\"Hautatu etiketa bat\",Settings:\"Ezarpenak\",\"Settings navigation\":\"Nabigazio ezarpenak\",\"Show password\":\"Erakutsi pasahitza\",\"Smileys & Emotion\":\"Smileyak eta emozioa\",\"Start slideshow\":\"Hasi diaporama\",Submit:\"Bidali\",Symbols:\"Sinboloak\",\"Travel & Places\":\"Bidaiak eta lekuak\",\"Type to search time zone\":\"Idatzi ordu-zona bat bilatzeko\",\"Unable to search the group\":\"Ezin izan da taldea bilatu\",\"Undo changes\":\"Aldaketak desegin\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Idatzi mezua, erabili \"@\" norbait aipatzeko, erabili \":\" emojiak automatikoki osatzeko...'}},{locale:\"fi_FI\",translations:{\"{tag} (invisible)\":\"{tag} (näkymätön)\",\"{tag} (restricted)\":\"{tag} (rajoitettu)\",Actions:\"Toiminnot\",Activities:\"Aktiviteetit\",\"Animals & Nature\":\"Eläimet & luonto\",\"Avatar of {displayName}\":\"Käyttäjän {displayName} avatar\",\"Avatar of {displayName}, {status}\":\"Käyttäjän {displayName} avatar, {status}\",\"Cancel changes\":\"Peruuta muutokset\",Choose:\"Valitse\",Close:\"Sulje\",\"Close navigation\":\"Sulje navigaatio\",\"Confirm changes\":\"Vahvista muutokset\",Custom:\"Mukautettu\",\"Edit item\":\"Muokkaa kohdetta\",\"External documentation for {title}\":\"Ulkoinen dokumentaatio kohteelle {title}\",Flags:\"Liput\",\"Food & Drink\":\"Ruoka & juoma\",\"Frequently used\":\"Usein käytetyt\",Global:\"Yleinen\",\"Go back to the list\":\"Siirry takaisin listaan\",\"Message limit of {count} characters reached\":\"Viestin merkken enimmäisimäärä {count} täynnä \",Next:\"Seuraava\",\"No emoji found\":\"Emojia ei löytynyt\",\"No results\":\"Ei tuloksia\",Objects:\"Esineet & asiat\",\"Open navigation\":\"Avaa navigaatio\",\"Pause slideshow\":\"Keskeytä diaesitys\",\"People & Body\":\"Ihmiset & keho\",\"Pick an emoji\":\"Valitse emoji\",\"Please select a time zone:\":\"Valitse aikavyöhyke:\",Previous:\"Edellinen\",Search:\"Etsi\",\"Search results\":\"Hakutulokset\",\"Select a tag\":\"Valitse tagi\",Settings:\"Asetukset\",\"Settings navigation\":\"Asetusnavigaatio\",\"Smileys & Emotion\":\"Hymiöt & tunteet\",\"Start slideshow\":\"Aloita diaesitys\",Submit:\"Lähetä\",Symbols:\"Symbolit\",\"Travel & Places\":\"Matkustus & kohteet\",\"Type to search time zone\":\"Kirjoita etsiäksesi aikavyöhyke\",\"Unable to search the group\":\"Ryhmää ei voi hakea\",\"Undo changes\":\"Kumoa muutokset\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…\"}},{locale:\"fr\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restreint)\",Actions:\"Actions\",Activities:\"Activités\",\"Animals & Nature\":\"Animaux & Nature\",\"Anything shared with the same group of people will show up here\":\"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Annuler les modifications\",\"Change title\":\"Modifier le titre\",Choose:\"Choisir\",\"Clear text\":\"Effacer le texte\",Close:\"Fermer\",\"Close modal\":\"Fermer la fenêtre\",\"Close navigation\":\"Fermer la navigation\",\"Close sidebar\":\"Fermer la barre latérale\",\"Confirm changes\":\"Confirmer les modifications\",Custom:\"Personnalisé\",\"Edit item\":\"Éditer l'élément\",\"Error getting related resources\":\"Erreur à la récupération des ressources liées\",\"Error parsing svg\":\"Erreur d'analyse SVG\",\"External documentation for {title}\":\"Documentation externe pour {title}\",Favorite:\"Favori\",Flags:\"Drapeaux\",\"Food & Drink\":\"Nourriture & Boissons\",\"Frequently used\":\"Utilisés fréquemment\",Global:\"Global\",\"Go back to the list\":\"Retourner à la liste\",\"Hide password\":\"Cacher le mot de passe\",\"Message limit of {count} characters reached\":\"Limite de messages de {count} caractères atteinte\",\"More items …\":\"Plus d'éléments...\",Next:\"Suivant\",\"No emoji found\":\"Pas d’émoji trouvé\",\"No results\":\"Aucun résultat\",Objects:\"Objets\",Open:\"Ouvrir\",'Open link to \"{resourceTitle}\"':'Ouvrir le lien vers \"{resourceTitle}\"',\"Open navigation\":\"Ouvrir la navigation\",\"Password is secure\":\"Le mot de passe est sécurisé\",\"Pause slideshow\":\"Mettre le diaporama en pause\",\"People & Body\":\"Personnes & Corps\",\"Pick an emoji\":\"Choisissez un émoji\",\"Please select a time zone:\":\"Sélectionnez un fuseau horaire : \",Previous:\"Précédent\",\"Related resources\":\"Ressources liées\",Search:\"Chercher\",\"Search results\":\"Résultats de recherche\",\"Select a tag\":\"Sélectionnez une balise\",Settings:\"Paramètres\",\"Settings navigation\":\"Navigation dans les paramètres\",\"Show password\":\"Afficher le mot de passe\",\"Smileys & Emotion\":\"Smileys & Émotions\",\"Start slideshow\":\"Démarrer le diaporama\",Submit:\"Valider\",Symbols:\"Symboles\",\"Travel & Places\":\"Voyage & Lieux\",\"Type to search time zone\":\"Saisissez les premiers lettres pour rechercher un fuseau horaire\",\"Unable to search the group\":\"Impossible de chercher le groupe\",\"Undo changes\":\"Annuler les changements\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Écrire un message, utiliser \"@\" pour mentionner une personne, \":\" pour l\\'autocomplétion des émojis...'}},{locale:\"gl\",translations:{\"{tag} (invisible)\":\"{tag} (invisíbel)\",\"{tag} (restricted)\":\"{tag} (restrinxido)\",Actions:\"Accións\",Activities:\"Actividades\",\"Animals & Nature\":\"Animais e natureza\",\"Cancel changes\":\"Cancelar os cambios\",Choose:\"Escoller\",Close:\"Pechar\",\"Confirm changes\":\"Confirma os cambios\",Custom:\"Personalizado\",\"External documentation for {title}\":\"Documentación externa para {title}\",Flags:\"Bandeiras\",\"Food & Drink\":\"Comida e bebida\",\"Frequently used\":\"Usado con frecuencia\",\"Message limit of {count} characters reached\":\"Acadouse o límite de {count} caracteres por mensaxe\",Next:\"Seguinte\",\"No emoji found\":\"Non se atopou ningún «emoji»\",\"No results\":\"Sen resultados\",Objects:\"Obxectos\",\"Pause slideshow\":\"Pausar o diaporama\",\"People & Body\":\"Persoas e corpo\",\"Pick an emoji\":\"Escolla un «emoji»\",Previous:\"Anterir\",Search:\"Buscar\",\"Search results\":\"Resultados da busca\",\"Select a tag\":\"Seleccione unha etiqueta\",Settings:\"Axustes\",\"Settings navigation\":\"Navegación polos axustes\",\"Smileys & Emotion\":\"Sorrisos e emocións\",\"Start slideshow\":\"Iniciar o diaporama\",Submit:\"Enviar\",Symbols:\"Símbolos\",\"Travel & Places\":\"Viaxes e lugares\",\"Unable to search the group\":\"Non foi posíbel buscar o grupo\",\"Write message, @ to mention someone …\":\"Escriba a mensaxe, @ para mencionar a alguén…\"}},{locale:\"he\",translations:{\"{tag} (invisible)\":\"{tag} (נסתר)\",\"{tag} (restricted)\":\"{tag} (מוגבל)\",Actions:\"פעולות\",Activities:\"פעילויות\",\"Animals & Nature\":\"חיות וטבע\",Choose:\"בחירה\",Close:\"סגירה\",Custom:\"בהתאמה אישית\",Flags:\"דגלים\",\"Food & Drink\":\"מזון ומשקאות\",\"Frequently used\":\"בשימוש תדיר\",Next:\"הבא\",\"No emoji found\":\"לא נמצא אמוג׳י\",\"No results\":\"אין תוצאות\",Objects:\"חפצים\",\"Pause slideshow\":\"השהיית מצגת\",\"People & Body\":\"אנשים וגוף\",\"Pick an emoji\":\"נא לבחור אמוג׳י\",Previous:\"הקודם\",Search:\"חיפוש\",\"Search results\":\"תוצאות חיפוש\",\"Select a tag\":\"בחירת תגית\",Settings:\"הגדרות\",\"Smileys & Emotion\":\"חייכנים ורגשונים\",\"Start slideshow\":\"התחלת המצגת\",Symbols:\"סמלים\",\"Travel & Places\":\"טיולים ומקומות\",\"Unable to search the group\":\"לא ניתן לחפש בקבוצה\"}},{locale:\"hu_HU\",translations:{\"{tag} (invisible)\":\"{tag} (láthatatlan)\",\"{tag} (restricted)\":\"{tag} (korlátozott)\",Actions:\"Műveletek\",Activities:\"Tevékenységek\",\"Animals & Nature\":\"Állatok és természet\",\"Anything shared with the same group of people will show up here\":\"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni\",\"Avatar of {displayName}\":\"{displayName} profilképe\",\"Avatar of {displayName}, {status}\":\"{displayName} profilképe, {status}\",\"Cancel changes\":\"Változtatások elvetése\",\"Change title\":\"Cím megváltoztatása\",Choose:\"Válassszon\",\"Clear text\":\"Szöveg törlése\",Close:\"Bezárás\",\"Close modal\":\"Ablak bezárása\",\"Close navigation\":\"Navigáció bezárása\",\"Close sidebar\":\"Oldalsáv bezárása\",\"Confirm changes\":\"Változtatások megerősítése\",Custom:\"Egyéni\",\"Edit item\":\"Elem szerkesztése\",\"Error getting related resources\":\"Hiba a kapcsolódó erőforrások lekérésekor\",\"Error parsing svg\":\"Hiba az SVG feldolgozásakor\",\"External documentation for {title}\":\"Külső dokumentáció ehhez: {title}\",Favorite:\"Kedvenc\",Flags:\"Zászlók\",\"Food & Drink\":\"Étel és ital\",\"Frequently used\":\"Gyakran használt\",Global:\"Globális\",\"Go back to the list\":\"Ugrás vissza a listához\",\"Hide password\":\"Jelszó elrejtése\",\"Message limit of {count} characters reached\":\"{count} karakteres üzenetkorlát elérve\",\"More items …\":\"További elemek...\",Next:\"Következő\",\"No emoji found\":\"Nem található emodzsi\",\"No results\":\"Nincs találat\",Objects:\"Tárgyak\",Open:\"Megnyitás\",'Open link to \"{resourceTitle}\"':\"A(z) „{resourceTitle}” hivatkozásának megnyitása\",\"Open navigation\":\"Navigáció megnyitása\",\"Password is secure\":\"A jelszó biztonságos\",\"Pause slideshow\":\"Diavetítés szüneteltetése\",\"People & Body\":\"Emberek és test\",\"Pick an emoji\":\"Válasszon egy emodzsit\",\"Please select a time zone:\":\"Válasszon időzónát:\",Previous:\"Előző\",\"Related resources\":\"Kapcsolódó erőforrások\",Search:\"Keresés\",\"Search results\":\"Találatok\",\"Select a tag\":\"Válasszon címkét\",Settings:\"Beállítások\",\"Settings navigation\":\"Navigáció a beállításokban\",\"Show password\":\"Jelszó megjelenítése\",\"Smileys & Emotion\":\"Mosolyok és érzelmek\",\"Start slideshow\":\"Diavetítés indítása\",Submit:\"Beküldés\",Symbols:\"Szimbólumok\",\"Travel & Places\":\"Utazás és helyek\",\"Type to search time zone\":\"Gépeljen az időzóna kereséséhez\",\"Unable to search the group\":\"A csoport nem kereshető\",\"Undo changes\":\"Változtatások visszavonása\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':\"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…\"}},{locale:\"is\",translations:{\"{tag} (invisible)\":\"{tag} (ósýnilegt)\",\"{tag} (restricted)\":\"{tag} (takmarkað)\",Actions:\"Aðgerðir\",Activities:\"Aðgerðir\",\"Animals & Nature\":\"Dýr og náttúra\",Choose:\"Velja\",Close:\"Loka\",Custom:\"Sérsniðið\",Flags:\"Flögg\",\"Food & Drink\":\"Matur og drykkur\",\"Frequently used\":\"Oftast notað\",Next:\"Næsta\",\"No emoji found\":\"Ekkert tjáningartákn fannst\",\"No results\":\"Engar niðurstöður\",Objects:\"Hlutir\",\"Pause slideshow\":\"Gera hlé á skyggnusýningu\",\"People & Body\":\"Fólk og líkami\",\"Pick an emoji\":\"Veldu tjáningartákn\",Previous:\"Fyrri\",Search:\"Leita\",\"Search results\":\"Leitarniðurstöður\",\"Select a tag\":\"Veldu merki\",Settings:\"Stillingar\",\"Smileys & Emotion\":\"Broskallar og tilfinningar\",\"Start slideshow\":\"Byrja skyggnusýningu\",Symbols:\"Tákn\",\"Travel & Places\":\"Staðir og ferðalög\",\"Unable to search the group\":\"Get ekki leitað í hópnum\"}},{locale:\"it\",translations:{\"{tag} (invisible)\":\"{tag} (invisibile)\",\"{tag} (restricted)\":\"{tag} (limitato)\",Actions:\"Azioni\",Activities:\"Attività\",\"Animals & Nature\":\"Animali e natura\",\"Anything shared with the same group of people will show up here\":\"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui\",\"Avatar of {displayName}\":\"Avatar di {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar di {displayName}, {status}\",\"Cancel changes\":\"Annulla modifiche\",\"Change title\":\"Modifica il titolo\",Choose:\"Scegli\",\"Clear text\":\"Cancella il testo\",Close:\"Chiudi\",\"Close modal\":\"Chiudi il messaggio modale\",\"Close navigation\":\"Chiudi la navigazione\",\"Close sidebar\":\"Chiudi la barra laterale\",\"Confirm changes\":\"Conferma modifiche\",Custom:\"Personalizzato\",\"Edit item\":\"Modifica l'elemento\",\"Error getting related resources\":\"Errore nell'ottenere risorse correlate\",\"Error parsing svg\":\"Errore nell'analizzare l'svg\",\"External documentation for {title}\":\"Documentazione esterna per {title}\",Favorite:\"Preferito\",Flags:\"Bandiere\",\"Food & Drink\":\"Cibo e bevande\",\"Frequently used\":\"Usati di frequente\",Global:\"Globale\",\"Go back to the list\":\"Torna all'elenco\",\"Hide password\":\"Nascondi la password\",\"Message limit of {count} characters reached\":\"Limite dei messaggi di {count} caratteri raggiunto\",\"More items …\":\"Più elementi ...\",Next:\"Successivo\",\"No emoji found\":\"Nessun emoji trovato\",\"No results\":\"Nessun risultato\",Objects:\"Oggetti\",Open:\"Apri\",'Open link to \"{resourceTitle}\"':'Apri il link a \"{resourceTitle}\"',\"Open navigation\":\"Apri la navigazione\",\"Password is secure\":\"La password è sicura\",\"Pause slideshow\":\"Presentazione in pausa\",\"People & Body\":\"Persone e corpo\",\"Pick an emoji\":\"Scegli un emoji\",\"Please select a time zone:\":\"Si prega di selezionare un fuso orario:\",Previous:\"Precedente\",\"Related resources\":\"Risorse correlate\",Search:\"Cerca\",\"Search results\":\"Risultati di ricerca\",\"Select a tag\":\"Seleziona un'etichetta\",Settings:\"Impostazioni\",\"Settings navigation\":\"Navigazione delle impostazioni\",\"Show password\":\"Mostra la password\",\"Smileys & Emotion\":\"Faccine ed emozioni\",\"Start slideshow\":\"Avvia presentazione\",Submit:\"Invia\",Symbols:\"Simboli\",\"Travel & Places\":\"Viaggi e luoghi\",\"Type to search time zone\":\"Digita per cercare un fuso orario\",\"Unable to search the group\":\"Impossibile cercare il gruppo\",\"Undo changes\":\"Cancella i cambiamenti\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Scrivi un messaggio, \"@\" per menzionare qualcuno, \":\" per il completamento automatico delle emoji ...'}},{locale:\"ja_JP\",translations:{\"{tag} (invisible)\":\"{タグ} (不可視)\",\"{tag} (restricted)\":\"{タグ} (制限付)\",Actions:\"操作\",Activities:\"アクティビティ\",\"Animals & Nature\":\"動物と自然\",\"Anything shared with the same group of people will show up here\":\"同じグループで共有しているものは、全てここに表示されます\",\"Avatar of {displayName}\":\"{displayName} のアバター\",\"Avatar of {displayName}, {status}\":\"{displayName}, {status} のアバター\",\"Cancel changes\":\"変更をキャンセル\",\"Change title\":\"タイトルを変更\",Choose:\"選択\",\"Clear text\":\"テキストをクリア\",Close:\"閉じる\",\"Close modal\":\"モーダルを閉じる\",\"Close navigation\":\"ナビゲーションを閉じる\",\"Close sidebar\":\"サイドバーを閉じる\",\"Confirm changes\":\"変更を承認\",Custom:\"カスタム\",\"Edit item\":\"編集\",\"Error getting related resources\":\"関連リソースの取得エラー\",\"Error parsing svg\":\"svgの解析エラー\",\"External documentation for {title}\":\"{title} のための添付文書\",Favorite:\"お気に入り\",Flags:\"国旗\",\"Food & Drink\":\"食べ物と飲み物\",\"Frequently used\":\"よく使うもの\",Global:\"全体\",\"Go back to the list\":\"リストに戻る\",\"Hide password\":\"パスワードを非表示\",\"Message limit of {count} characters reached\":\"{count} 文字のメッセージ上限に達しています\",\"More items …\":\"他のアイテム\",Next:\"次\",\"No emoji found\":\"絵文字が見つかりません\",\"No results\":\"なし\",Objects:\"物\",Open:\"開く\",'Open link to \"{resourceTitle}\"':'\"{resourceTitle}\"のリンクを開く',\"Open navigation\":\"ナビゲーションを開く\",\"Password is secure\":\"パスワードは保護されています\",\"Pause slideshow\":\"スライドショーを一時停止\",\"People & Body\":\"様々な人と体の部位\",\"Pick an emoji\":\"絵文字を選択\",\"Please select a time zone:\":\"タイムゾーンを選んで下さい:\",Previous:\"前\",\"Related resources\":\"関連リソース\",Search:\"検索\",\"Search results\":\"検索結果\",\"Select a tag\":\"タグを選択\",Settings:\"設定\",\"Settings navigation\":\"ナビゲーション設定\",\"Show password\":\"パスワードを表示\",\"Smileys & Emotion\":\"感情表現\",\"Start slideshow\":\"スライドショーを開始\",Submit:\"提出\",Symbols:\"記号\",\"Travel & Places\":\"旅行と場所\",\"Type to search time zone\":\"タイムゾーン検索のため入力してください\",\"Unable to search the group\":\"グループを検索できません\",\"Undo changes\":\"変更を取り消し\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'メッセージを記入、\"@\"でメンション、\":\"で絵文字の自動補完 ...'}},{locale:\"lt_LT\",translations:{\"{tag} (invisible)\":\"{tag} (nematoma)\",\"{tag} (restricted)\":\"{tag} (apribota)\",Actions:\"Veiksmai\",Activities:\"Veiklos\",\"Animals & Nature\":\"Gyvūnai ir gamta\",Choose:\"Pasirinkti\",Close:\"Užverti\",Custom:\"Tinkinti\",\"External documentation for {title}\":\"Išorinė {title} dokumentacija\",Flags:\"Vėliavos\",\"Food & Drink\":\"Maistas ir gėrimai\",\"Frequently used\":\"Dažniausiai naudoti\",\"Message limit of {count} characters reached\":\"Pasiekta {count} simbolių žinutės riba\",Next:\"Kitas\",\"No emoji found\":\"Nerasta jaustukų\",\"No results\":\"Nėra rezultatų\",Objects:\"Objektai\",\"Pause slideshow\":\"Pristabdyti skaidrių rodymą\",\"People & Body\":\"Žmonės ir kūnas\",\"Pick an emoji\":\"Pasirinkti jaustuką\",Previous:\"Ankstesnis\",Search:\"Ieškoti\",\"Search results\":\"Paieškos rezultatai\",\"Select a tag\":\"Pasirinkti žymę\",Settings:\"Nustatymai\",\"Settings navigation\":\"Naršymas nustatymuose\",\"Smileys & Emotion\":\"Šypsenos ir emocijos\",\"Start slideshow\":\"Pradėti skaidrių rodymą\",Submit:\"Pateikti\",Symbols:\"Simboliai\",\"Travel & Places\":\"Kelionės ir vietos\",\"Unable to search the group\":\"Nepavyko atlikti paiešką grupėje\",\"Write message, @ to mention someone …\":\"Rašykite žinutę, naudokite @ norėdami kažką paminėti…\"}},{locale:\"lv\",translations:{\"{tag} (invisible)\":\"{tag} (neredzams)\",\"{tag} (restricted)\":\"{tag} (ierobežots)\",Choose:\"Izvēlēties\",Close:\"Aizvērt\",Next:\"Nākamais\",\"No results\":\"Nav rezultātu\",\"Pause slideshow\":\"Pauzēt slaidrādi\",Previous:\"Iepriekšējais\",\"Select a tag\":\"Izvēlēties birku\",Settings:\"Iestatījumi\",\"Start slideshow\":\"Sākt slaidrādi\"}},{locale:\"mk\",translations:{\"{tag} (invisible)\":\"{tag} (невидливо)\",\"{tag} (restricted)\":\"{tag} (ограничено)\",Actions:\"Акции\",Activities:\"Активности\",\"Animals & Nature\":\"Животни & Природа\",\"Avatar of {displayName}\":\"Аватар на {displayName}\",\"Avatar of {displayName}, {status}\":\"Аватар на {displayName}, {status}\",\"Cancel changes\":\"Откажи ги промените\",\"Change title\":\"Промени наслов\",Choose:\"Избери\",Close:\"Затвори\",\"Close modal\":\"Затвори модал\",\"Close navigation\":\"Затвори навигација\",\"Confirm changes\":\"Потврди ги промените\",Custom:\"Прилагодени\",\"Edit item\":\"Уреди\",\"External documentation for {title}\":\"Надворешна документација за {title}\",Favorite:\"Фаворити\",Flags:\"Знамиња\",\"Food & Drink\":\"Храна & Пијалоци\",\"Frequently used\":\"Најчесто користени\",Global:\"Глобално\",\"Go back to the list\":\"Врати се на листата\",items:\"ставки\",\"Message limit of {count} characters reached\":\"Ограничувањето на должината на пораката од {count} карактери е надминато\",\"More {dashboardItemType} …\":\"Повеќе {dashboardItemType} …\",Next:\"Следно\",\"No emoji found\":\"Не се пронајдени емотикони\",\"No results\":\"Нема резултати\",Objects:\"Објекти\",Open:\"Отвори\",\"Open navigation\":\"Отвори навигација\",\"Pause slideshow\":\"Пузирај слајдшоу\",\"People & Body\":\"Луѓе & Тело\",\"Pick an emoji\":\"Избери емотикон\",\"Please select a time zone:\":\"Изберете временска зона:\",Previous:\"Предходно\",Search:\"Барај\",\"Search results\":\"Резултати од барувањето\",\"Select a tag\":\"Избери ознака\",Settings:\"Параметри\",\"Settings navigation\":\"Параметри за навигација\",\"Smileys & Emotion\":\"Смешковци & Емотикони\",\"Start slideshow\":\"Стартувај слајдшоу\",Submit:\"Испрати\",Symbols:\"Симболи\",\"Travel & Places\":\"Патувања & Места\",\"Type to search time zone\":\"Напишете за да пребарате временска зона\",\"Unable to search the group\":\"Неможе да се принајде групата\",\"Undo changes\":\"Врати ги промените\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ...\"}},{locale:\"my\",translations:{\"{tag} (invisible)\":\"{tag} (ကွယ်ဝှက်ထား)\",\"{tag} (restricted)\":\"{tag} (ကန့်သတ်)\",Actions:\"လုပ်ဆောင်ချက်များ\",Activities:\"ပြုလုပ်ဆောင်တာများ\",\"Animals & Nature\":\"တိရစ္ဆာန်များနှင့် သဘာဝ\",\"Avatar of {displayName}\":\"{displayName} ၏ ကိုယ်ပွား\",\"Cancel changes\":\"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်\",Choose:\"ရွေးချယ်ရန်\",Close:\"ပိတ်ရန်\",\"Confirm changes\":\"ပြောင်းလဲမှုများ အတည်ပြုရန်\",Custom:\"အလိုကျချိန်ညှိမှု\",\"External documentation for {title}\":\"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း\",Flags:\"အလံများ\",\"Food & Drink\":\"အစားအသောက်\",\"Frequently used\":\"မကြာခဏအသုံးပြုသော\",Global:\"ကမ္ဘာလုံးဆိုင်ရာ\",\"Message limit of {count} characters reached\":\"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ\",Next:\"နောက်သို့ဆက်ရန်\",\"No emoji found\":\"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ\",\"No results\":\"ရလဒ်မရှိပါ\",Objects:\"အရာဝတ္ထုများ\",\"Pause slideshow\":\"စလိုက်ရှိုး ခေတ္တရပ်ရန်\",\"People & Body\":\"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်\",\"Pick an emoji\":\"အီမိုဂျီရွေးရန်\",\"Please select a time zone:\":\"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ\",Previous:\"ယခင်\",Search:\"ရှာဖွေရန်\",\"Search results\":\"ရှာဖွေမှု ရလဒ်များ\",\"Select a tag\":\"tag ရွေးချယ်ရန်\",Settings:\"ချိန်ညှိချက်များ\",\"Settings navigation\":\"ချိန်ညှိချက်အညွှန်း\",\"Smileys & Emotion\":\"စမိုင်လီများနှင့် အီမိုရှင်း\",\"Start slideshow\":\"စလိုက်ရှိုးအား စတင်ရန်\",Submit:\"တင်သွင်းရန်\",Symbols:\"သင်္ကေတများ\",\"Travel & Places\":\"ခရီးသွားလာခြင်းနှင့် နေရာများ\",\"Type to search time zone\":\"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ\",\"Unable to search the group\":\"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ\",\"Write message, @ to mention someone …\":\"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်...\"}},{locale:\"nb_NO\",translations:{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (beskyttet)\",Actions:\"Handlinger\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Dyr og natur\",\"Anything shared with the same group of people will show up here\":\"Alt som er delt med den samme gruppen vil vises her\",\"Avatar of {displayName}\":\"Avataren til {displayName}\",\"Avatar of {displayName}, {status}\":\"{displayName}'s avatar, {status}\",\"Cancel changes\":\"Avbryt endringer\",\"Change title\":\"Endre tittel\",Choose:\"Velg\",\"Clear text\":\"Fjern tekst\",Close:\"Lukk\",\"Close modal\":\"Lukk modal\",\"Close navigation\":\"Lukk navigasjon\",\"Close sidebar\":\"Lukk sidepanel\",\"Confirm changes\":\"Bekreft endringer\",Custom:\"Tilpasset\",\"Edit item\":\"Rediger\",\"Error getting related resources\":\"Feil ved henting av relaterte ressurser\",\"Error parsing svg\":\"Feil ved parsing av svg\",\"External documentation for {title}\":\"Ekstern dokumentasjon for {title}\",Favorite:\"Favoritt\",Flags:\"Flagg\",\"Food & Drink\":\"Mat og drikke\",\"Frequently used\":\"Ofte brukt\",Global:\"Global\",\"Go back to the list\":\"Gå tilbake til listen\",\"Hide password\":\"Skjul passord\",\"Message limit of {count} characters reached\":\"Karakter begrensing {count} nådd i melding\",\"More items …\":\"Flere gjenstander...\",Next:\"Neste\",\"No emoji found\":\"Fant ingen emoji\",\"No results\":\"Ingen resultater\",Objects:\"Objekter\",Open:\"Åpne\",'Open link to \"{resourceTitle}\"':'Åpne link til \"{resourceTitle}\"',\"Open navigation\":\"Åpne navigasjon\",\"Password is secure\":\"Passordet er sikkert\",\"Pause slideshow\":\"Pause lysbildefremvisning\",\"People & Body\":\"Mennesker og kropp\",\"Pick an emoji\":\"Velg en emoji\",\"Please select a time zone:\":\"Vennligst velg tidssone\",Previous:\"Forrige\",\"Related resources\":\"Relaterte ressurser\",Search:\"Søk\",\"Search results\":\"Søkeresultater\",\"Select a tag\":\"Velg en merkelapp\",Settings:\"Innstillinger\",\"Settings navigation\":\"Navigasjonsinstillinger\",\"Show password\":\"Vis passord\",\"Smileys & Emotion\":\"Smilefjes og følelser\",\"Start slideshow\":\"Start lysbildefremvisning\",Submit:\"Send\",Symbols:\"Symboler\",\"Travel & Places\":\"Reise og steder\",\"Type to search time zone\":\"Tast for å søke etter tidssone\",\"Unable to search the group\":\"Kunne ikke søke i gruppen\",\"Undo changes\":\"Tilbakestill endringer\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv melding, bruk \"@\" for å nevne noen, bruk \":\" for autofullføring av emoji...'}},{locale:\"nl\",translations:{\"{tag} (invisible)\":\"{tag} (onzichtbaar)\",\"{tag} (restricted)\":\"{tag} (beperkt)\",Actions:\"Acties\",Activities:\"Activiteiten\",\"Animals & Nature\":\"Dieren & Natuur\",\"Avatar of {displayName}\":\"Avatar van {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar van {displayName}, {status}\",\"Cancel changes\":\"Wijzigingen annuleren\",Choose:\"Kies\",Close:\"Sluiten\",\"Close navigation\":\"Navigatie sluiten\",\"Confirm changes\":\"Wijzigingen bevestigen\",Custom:\"Aangepast\",\"Edit item\":\"Item bewerken\",\"External documentation for {title}\":\"Externe documentatie voor {title}\",Flags:\"Vlaggen\",\"Food & Drink\":\"Eten & Drinken\",\"Frequently used\":\"Vaak gebruikt\",Global:\"Globaal\",\"Go back to the list\":\"Ga terug naar de lijst\",\"Message limit of {count} characters reached\":\"Berichtlimiet van {count} karakters bereikt\",Next:\"Volgende\",\"No emoji found\":\"Geen emoji gevonden\",\"No results\":\"Geen resultaten\",Objects:\"Objecten\",\"Open navigation\":\"Navigatie openen\",\"Pause slideshow\":\"Pauzeer diavoorstelling\",\"People & Body\":\"Mensen & Lichaam\",\"Pick an emoji\":\"Kies een emoji\",\"Please select a time zone:\":\"Selecteer een tijdzone:\",Previous:\"Vorige\",Search:\"Zoeken\",\"Search results\":\"Zoekresultaten\",\"Select a tag\":\"Selecteer een label\",Settings:\"Instellingen\",\"Settings navigation\":\"Instellingen navigatie\",\"Smileys & Emotion\":\"Smileys & Emotie\",\"Start slideshow\":\"Start diavoorstelling\",Submit:\"Verwerken\",Symbols:\"Symbolen\",\"Travel & Places\":\"Reizen & Plaatsen\",\"Type to search time zone\":\"Type om de tijdzone te zoeken\",\"Unable to search the group\":\"Kan niet in de groep zoeken\",\"Undo changes\":\"Wijzigingen ongedaan maken\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ...\"}},{locale:\"oc\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (limit)\",Actions:\"Accions\",Choose:\"Causir\",Close:\"Tampar\",Next:\"Seguent\",\"No results\":\"Cap de resultat\",\"Pause slideshow\":\"Metre en pausa lo diaporama\",Previous:\"Precedent\",\"Select a tag\":\"Seleccionar una etiqueta\",Settings:\"Paramètres\",\"Start slideshow\":\"Lançar lo diaporama\"}},{locale:\"pl\",translations:{\"{tag} (invisible)\":\"{tag} (niewidoczna)\",\"{tag} (restricted)\":\"{tag} (ograniczona)\",Actions:\"Działania\",Activities:\"Aktywność\",\"Animals & Nature\":\"Zwierzęta i natura\",\"Anything shared with the same group of people will show up here\":\"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób\",\"Avatar of {displayName}\":\"Awatar {displayName}\",\"Avatar of {displayName}, {status}\":\"Awatar {displayName}, {status}\",\"Cancel changes\":\"Anuluj zmiany\",\"Change title\":\"Zmień tytuł\",Choose:\"Wybierz\",\"Clear text\":\"Wyczyść tekst\",Close:\"Zamknij\",\"Close modal\":\"Zamknij modal\",\"Close navigation\":\"Zamknij nawigację\",\"Close sidebar\":\"Zamknij pasek boczny\",\"Confirm changes\":\"Potwierdź zmiany\",Custom:\"Zwyczajne\",\"Edit item\":\"Edytuj element\",\"Error getting related resources\":\"Błąd podczas pobierania powiązanych zasobów\",\"Error parsing svg\":\"Błąd podczas analizowania svg\",\"External documentation for {title}\":\"Dokumentacja zewnętrzna dla {title}\",Favorite:\"Ulubiony\",Flags:\"Flagi\",\"Food & Drink\":\"Jedzenie i picie\",\"Frequently used\":\"Często używane\",Global:\"Globalnie\",\"Go back to the list\":\"Powrót do listy\",\"Hide password\":\"Ukryj hasło\",\"Message limit of {count} characters reached\":\"Przekroczono limit wiadomości wynoszący {count} znaków\",\"More items …\":\"Więcej pozycji…\",Next:\"Następny\",\"No emoji found\":\"Nie znaleziono emoji\",\"No results\":\"Brak wyników\",Objects:\"Obiekty\",Open:\"Otwórz\",'Open link to \"{resourceTitle}\"':'Otwórz link do \"{resourceTitle}\"',\"Open navigation\":\"Otwórz nawigację\",\"Password is secure\":\"Hasło jest bezpieczne\",\"Pause slideshow\":\"Wstrzymaj pokaz slajdów\",\"People & Body\":\"Ludzie i ciało\",\"Pick an emoji\":\"Wybierz emoji\",\"Please select a time zone:\":\"Wybierz strefę czasową:\",Previous:\"Poprzedni\",\"Related resources\":\"Powiązane zasoby\",Search:\"Szukaj\",\"Search results\":\"Wyniki wyszukiwania\",\"Select a tag\":\"Wybierz etykietę\",Settings:\"Ustawienia\",\"Settings navigation\":\"Ustawienia nawigacji\",\"Show password\":\"Pokaż hasło\",\"Smileys & Emotion\":\"Buźki i emotikony\",\"Start slideshow\":\"Rozpocznij pokaz slajdów\",Submit:\"Wyślij\",Symbols:\"Symbole\",\"Travel & Places\":\"Podróże i miejsca\",\"Type to search time zone\":\"Wpisz, aby wyszukać strefę czasową\",\"Unable to search the group\":\"Nie można przeszukać grupy\",\"Undo changes\":\"Cofnij zmiany\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Napisz wiadomość, \"@\" aby o kimś wspomnieć, \":\" dla autouzupełniania emoji…'}},{locale:\"pt_BR\",translations:{\"{tag} (invisible)\":\"{tag} (invisível)\",\"{tag} (restricted)\":\"{tag} (restrito) \",Actions:\"Ações\",Activities:\"Atividades\",\"Animals & Nature\":\"Animais & Natureza\",\"Anything shared with the same group of people will show up here\":\"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancelar alterações\",\"Change title\":\"Alterar título\",Choose:\"Escolher\",\"Clear text\":\"Limpar texto\",Close:\"Fechar\",\"Close modal\":\"Fechar modal\",\"Close navigation\":\"Fechar navegação\",\"Close sidebar\":\"Fechar barra lateral\",\"Confirm changes\":\"Confirmar alterações\",Custom:\"Personalizado\",\"Edit item\":\"Editar item\",\"Error getting related resources\":\"Erro ao obter recursos relacionados\",\"Error parsing svg\":\"Erro ao analisar svg\",\"External documentation for {title}\":\"Documentação externa para {title}\",Favorite:\"Favorito\",Flags:\"Bandeiras\",\"Food & Drink\":\"Comida & Bebida\",\"Frequently used\":\"Mais usados\",Global:\"Global\",\"Go back to the list\":\"Volte para a lista\",\"Hide password\":\"Ocultar a senha\",\"Message limit of {count} characters reached\":\"Limite de mensagem de {count} caracteres atingido\",\"More items …\":\"Mais itens …\",Next:\"Próximo\",\"No emoji found\":\"Nenhum emoji encontrado\",\"No results\":\"Sem resultados\",Objects:\"Objetos\",Open:\"Aberto\",'Open link to \"{resourceTitle}\"':'Abrir link para \"{resourceTitle}\"',\"Open navigation\":\"Abrir navegação\",\"Password is secure\":\"A senha é segura\",\"Pause slideshow\":\"Pausar apresentação de slides\",\"People & Body\":\"Pessoas & Corpo\",\"Pick an emoji\":\"Escolha um emoji\",\"Please select a time zone:\":\"Selecione um fuso horário: \",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionados\",Search:\"Pesquisar\",\"Search results\":\"Resultados da pesquisa\",\"Select a tag\":\"Selecionar uma tag\",Settings:\"Configurações\",\"Settings navigation\":\"Navegação de configurações\",\"Show password\":\"Mostrar senha\",\"Smileys & Emotion\":\"Smiles & Emoções\",\"Start slideshow\":\"Iniciar apresentação de slides\",Submit:\"Enviar\",Symbols:\"Símbolo\",\"Travel & Places\":\"Viagem & Lugares\",\"Type to search time zone\":\"Digite para pesquisar o fuso horário \",\"Unable to search the group\":\"Não foi possível pesquisar o grupo\",\"Undo changes\":\"Desfazer modificações\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escreva mensagens, use \"@\" para mencionar algum, use \":\" for autocompletar emoji …'}},{locale:\"pt_PT\",translations:{\"{tag} (invisible)\":\"{tag} (invisivel)\",\"{tag} (restricted)\":\"{tag} (restrito)\",Actions:\"Ações\",Choose:\"Escolher\",Close:\"Fechar\",Next:\"Seguinte\",\"No results\":\"Sem resultados\",\"Pause slideshow\":\"Pausar diaporama\",Previous:\"Anterior\",\"Select a tag\":\"Selecionar uma etiqueta\",Settings:\"Definições\",\"Start slideshow\":\"Iniciar diaporama\",\"Unable to search the group\":\"Não é possível pesquisar o grupo\"}},{locale:\"ro\",translations:{\"{tag} (invisible)\":\"{tag} (invizibil)\",\"{tag} (restricted)\":\"{tag} (restricționat)\",Actions:\"Acțiuni\",Activities:\"Activități\",\"Animals & Nature\":\"Animale și natură\",\"Anything shared with the same group of people will show up here\":\"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici\",\"Avatar of {displayName}\":\"Avatarul lui {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatarul lui {displayName}, {status}\",\"Cancel changes\":\"Anulează modificările\",\"Change title\":\"Modificați titlul\",Choose:\"Alegeți\",\"Clear text\":\"Șterge textul\",Close:\"Închideți\",\"Close modal\":\"Închideți modulul\",\"Close navigation\":\"Închideți navigarea\",\"Close sidebar\":\"Închide bara laterală\",\"Confirm changes\":\"Confirmați modificările\",Custom:\"Personalizat\",\"Edit item\":\"Editați elementul\",\"Error getting related resources\":\" Eroare la returnarea resurselor legate\",\"Error parsing svg\":\"Eroare de analizare a svg\",\"External documentation for {title}\":\"Documentație externă pentru {title}\",Favorite:\"Favorit\",Flags:\"Marcaje\",\"Food & Drink\":\"Alimente și băuturi\",\"Frequently used\":\"Utilizate frecvent\",Global:\"Global\",\"Go back to the list\":\"Întoarceți-vă la listă\",\"Hide password\":\"Ascunde parola\",\"Message limit of {count} characters reached\":\"Limita mesajului de {count} caractere a fost atinsă\",\"More items …\":\"Mai multe articole ...\",Next:\"Următorul\",\"No emoji found\":\"Nu s-a găsit niciun emoji\",\"No results\":\"Nu există rezultate\",Objects:\"Obiecte\",Open:\"Deschideți\",'Open link to \"{resourceTitle}\"':'Deschide legătura la \"{resourceTitle}\"',\"Open navigation\":\"Deschideți navigația\",\"Password is secure\":\"Parola este sigură\",\"Pause slideshow\":\"Pauză prezentare de diapozitive\",\"People & Body\":\"Oameni și corp\",\"Pick an emoji\":\"Alege un emoji\",\"Please select a time zone:\":\"Vă rugăm să selectați un fus orar:\",Previous:\"Anterior\",\"Related resources\":\"Resurse legate\",Search:\"Căutare\",\"Search results\":\"Rezultatele căutării\",\"Select a tag\":\"Selectați o etichetă\",Settings:\"Setări\",\"Settings navigation\":\"Navigare setări\",\"Show password\":\"Arată parola\",\"Smileys & Emotion\":\"Zâmbete și emoții\",\"Start slideshow\":\"Începeți prezentarea de diapozitive\",Submit:\"Trimiteți\",Symbols:\"Simboluri\",\"Travel & Places\":\"Călătorii și locuri\",\"Type to search time zone\":\"Tastați pentru a căuta fusul orar\",\"Unable to search the group\":\"Imposibilitatea de a căuta în grup\",\"Undo changes\":\"Anularea modificărilor\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Scrie un mesaj, folosește \"@\" pentru a menționa pe cineva, folosește \":\" pentru autocompletarea cu emoji ...'}},{locale:\"ru\",translations:{\"{tag} (invisible)\":\"{tag} (невидимое)\",\"{tag} (restricted)\":\"{tag} (ограниченное)\",Actions:\"Действия \",Activities:\"События\",\"Animals & Nature\":\"Животные и природа \",\"Avatar of {displayName}\":\"Аватар {displayName}\",\"Avatar of {displayName}, {status}\":\"Фотография {displayName}, {status}\",\"Cancel changes\":\"Отменить изменения\",Choose:\"Выберите\",Close:\"Закрыть\",\"Close modal\":\"Закрыть модальное окно\",\"Close navigation\":\"Закрыть навигацию\",\"Confirm changes\":\"Подтвердить изменения\",Custom:\"Пользовательское\",\"Edit item\":\"Изменить элемент\",\"External documentation for {title}\":\"Внешняя документация для {title}\",Flags:\"Флаги\",\"Food & Drink\":\"Еда, напиток\",\"Frequently used\":\"Часто используемый\",Global:\"Глобальный\",\"Go back to the list\":\"Вернуться к списку\",items:\"элементов\",\"Message limit of {count} characters reached\":\"Достигнуто ограничение на количество символов в {count}\",\"More {dashboardItemType} …\":\"Больше {dashboardItemType} …\",Next:\"Следующее\",\"No emoji found\":\"Эмодзи не найдено\",\"No results\":\"Результаты отсуствуют\",Objects:\"Объекты\",Open:\"Открыть\",\"Open navigation\":\"Открыть навигацию\",\"Pause slideshow\":\"Приостановить показ слйдов\",\"People & Body\":\"Люди и тело\",\"Pick an emoji\":\"Выберите эмодзи\",\"Please select a time zone:\":\"Пожалуйста, выберите часовой пояс:\",Previous:\"Предыдущее\",Search:\"Поиск\",\"Search results\":\"Результаты поиска\",\"Select a tag\":\"Выберите метку\",Settings:\"Параметры\",\"Settings navigation\":\"Навигация по настройкам\",\"Smileys & Emotion\":\"Смайлики и эмоции\",\"Start slideshow\":\"Начать показ слайдов\",Submit:\"Утвердить\",Symbols:\"Символы\",\"Travel & Places\":\"Путешествия и места\",\"Type to search time zone\":\"Введите для поиска часового пояса\",\"Unable to search the group\":\"Невозможно найти группу\",\"Undo changes\":\"Отменить изменения\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …\"}},{locale:\"sk_SK\",translations:{\"{tag} (invisible)\":\"{tag} (neviditeľný)\",\"{tag} (restricted)\":\"{tag} (obmedzený)\",Actions:\"Akcie\",Activities:\"Aktivity\",\"Animals & Nature\":\"Zvieratá a príroda\",\"Avatar of {displayName}\":\"Avatar {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar {displayName}, {status}\",\"Cancel changes\":\"Zrušiť zmeny\",Choose:\"Vybrať\",Close:\"Zatvoriť\",\"Close navigation\":\"Zavrieť navigáciu\",\"Confirm changes\":\"Potvrdiť zmeny\",Custom:\"Zvyk\",\"Edit item\":\"Upraviť položku\",\"External documentation for {title}\":\"Externá dokumentácia pre {title}\",Flags:\"Vlajky\",\"Food & Drink\":\"Jedlo a nápoje\",\"Frequently used\":\"Často používané\",Global:\"Globálne\",\"Go back to the list\":\"Naspäť na zoznam\",\"Message limit of {count} characters reached\":\"Limit správy na {count} znakov dosiahnutý\",Next:\"Ďalší\",\"No emoji found\":\"Nenašli sa žiadne emodži\",\"No results\":\"Žiadne výsledky\",Objects:\"Objekty\",\"Open navigation\":\"Otvoriť navigáciu\",\"Pause slideshow\":\"Pozastaviť prezentáciu\",\"People & Body\":\"Ľudia a telo\",\"Pick an emoji\":\"Vyberte si emodži\",\"Please select a time zone:\":\"Prosím vyberte časovú zónu:\",Previous:\"Predchádzajúci\",Search:\"Hľadať\",\"Search results\":\"Výsledky vyhľadávania\",\"Select a tag\":\"Vybrať štítok\",Settings:\"Nastavenia\",\"Settings navigation\":\"Navigácia v nastaveniach\",\"Smileys & Emotion\":\"Smajlíky a emócie\",\"Start slideshow\":\"Začať prezentáciu\",Submit:\"Odoslať\",Symbols:\"Symboly\",\"Travel & Places\":\"Cestovanie a miesta\",\"Type to search time zone\":\"Začníte písať pre vyhľadávanie časovej zóny\",\"Unable to search the group\":\"Skupinu sa nepodarilo nájsť\",\"Undo changes\":\"Vrátiť zmeny\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…\"}},{locale:\"sl\",translations:{\"{tag} (invisible)\":\"{tag} (nevidno)\",\"{tag} (restricted)\":\"{tag} (omejeno)\",Actions:\"Dejanja\",Activities:\"Dejavnosti\",\"Animals & Nature\":\"Živali in Narava\",\"Avatar of {displayName}\":\"Podoba {displayName}\",\"Avatar of {displayName}, {status}\":\"Prikazna slika {displayName}, {status}\",\"Cancel changes\":\"Prekliči spremembe\",\"Change title\":\"Spremeni naziv\",Choose:\"Izbor\",\"Clear text\":\"Počisti besedilo\",Close:\"Zapri\",\"Close modal\":\"Zapri pojavno okno\",\"Close navigation\":\"Zapri krmarjenje\",\"Close sidebar\":\"Zapri stransko vrstico\",\"Confirm changes\":\"Potrdi spremembe\",Custom:\"Po meri\",\"Edit item\":\"Uredi predmet\",\"Error getting related resources\":\"Napaka pridobivanja povezanih virov\",\"External documentation for {title}\":\"Zunanja dokumentacija za {title}\",Favorite:\"Priljubljeno\",Flags:\"Zastavice\",\"Food & Drink\":\"Hrana in Pijača\",\"Frequently used\":\"Pogostost uporabe\",Global:\"Splošno\",\"Go back to the list\":\"Vrni se na seznam\",\"Hide password\":\"Skrij geslo\",\"Message limit of {count} characters reached\":\"Dosežena omejitev {count} znakov na sporočilo.\",\"More items …\":\"Več predmetov ...\",Next:\"Naslednji\",\"No emoji found\":\"Ni najdenih izraznih ikon\",\"No results\":\"Ni zadetkov\",Objects:\"Predmeti\",Open:\"Odpri\",'Open link to \"{resourceTitle}\"':\"Odpri povezavo do »{resourceTitle}«\",\"Open navigation\":\"Odpri krmarjenje\",\"Password is secure\":\"Geslo je varno\",\"Pause slideshow\":\"Ustavi predstavitev\",\"People & Body\":\"Ljudje in Telo\",\"Pick a date\":\"Izbor datuma\",\"Pick a date and a time\":\"Izbor datuma in časa\",\"Pick a month\":\"Izbor meseca\",\"Pick a time\":\"Izbor časa\",\"Pick a week\":\"Izbor tedna\",\"Pick a year\":\"Izbor leta\",\"Pick an emoji\":\"Izbor izrazne ikone\",\"Please select a time zone:\":\"Izbor časovnega pasu:\",Previous:\"Predhodni\",\"Related resources\":\"Povezani viri\",Search:\"Iskanje\",\"Search results\":\"Zadetki iskanja\",\"Select a tag\":\"Izbor oznake\",Settings:\"Nastavitve\",\"Settings navigation\":\"Krmarjenje nastavitev\",\"Show password\":\"Pokaži geslo\",\"Smileys & Emotion\":\"Izrazne ikone\",\"Start slideshow\":\"Začni predstavitev\",Submit:\"Pošlji\",Symbols:\"Simboli\",\"Travel & Places\":\"Potovanja in Kraji\",\"Type to search time zone\":\"Vpišite niz za iskanje časovnega pasu\",\"Unable to search the group\":\"Ni mogoče iskati po skupini\",\"Undo changes\":\"Razveljavi spremembe\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …\"}},{locale:\"sr\",translations:{\"{tag} (invisible)\":\"{tag} (nevidljivo)\",\"{tag} (restricted)\":\"{tag} (ograničeno)\",Actions:\"Radnje\",Activities:\"Aktivnosti\",\"Animals & Nature\":\"Životinje i Priroda\",\"Avatar of {displayName}\":\"Avatar za {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar za {displayName}, {status}\",\"Cancel changes\":\"Otkaži izmene\",\"Change title\":\"Izmeni naziv\",Choose:\"Изаберите\",Close:\"Затвори\",\"Close modal\":\"Zatvori modal\",\"Close navigation\":\"Zatvori navigaciju\",\"Close sidebar\":\"Zatvori bočnu traku\",\"Confirm changes\":\"Potvrdite promene\",Custom:\"Po meri\",\"Edit item\":\"Uredi stavku\",\"External documentation for {title}\":\"Eksterna dokumentacija za {title}\",Favorite:\"Omiljeni\",Flags:\"Zastave\",\"Food & Drink\":\"Hrana i Piće\",\"Frequently used\":\"Često korišćeno\",Global:\"Globalno\",\"Go back to the list\":\"Natrag na listu\",items:\"stavke\",\"Message limit of {count} characters reached\":\"Dostignuto je ograničenje za poruke od {count} znakova\",\"More {dashboardItemType} …\":\"Više {dashboardItemType} …\",Next:\"Следеће\",\"No emoji found\":\"Nije pronađen nijedan emodži\",\"No results\":\"Нема резултата\",Objects:\"Objekti\",Open:\"Otvori\",\"Open navigation\":\"Otvori navigaciju\",\"Pause slideshow\":\"Паузирај слајд шоу\",\"People & Body\":\"Ljudi i Telo\",\"Pick an emoji\":\"Izaberi emodži\",\"Please select a time zone:\":\"Molimo izaberite vremensku zonu:\",Previous:\"Претходно\",Search:\"Pretraži\",\"Search results\":\"Rezultati pretrage\",\"Select a tag\":\"Изаберите ознаку\",Settings:\"Поставке\",\"Settings navigation\":\"Navigacija u podešavanjima\",\"Smileys & Emotion\":\"Smajli i Emocije\",\"Start slideshow\":\"Покрени слајд шоу\",Submit:\"Prihvati\",Symbols:\"Simboli\",\"Travel & Places\":\"Putovanja i Mesta\",\"Type to search time zone\":\"Ukucaj da pretražiš vremenske zone\",\"Unable to search the group\":\"Nije moguće pretražiti grupu\",\"Undo changes\":\"Poništi promene\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…\"}},{locale:\"sv\",translations:{\"{tag} (invisible)\":\"{tag} (osynlig)\",\"{tag} (restricted)\":\"{tag} (begränsad)\",Actions:\"Åtgärder\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Djur & Natur\",\"Anything shared with the same group of people will show up here\":\"Något som delats med samma grupp av personer kommer att visas här\",\"Avatar of {displayName}\":\"{displayName}s avatar\",\"Avatar of {displayName}, {status}\":\"{displayName}s avatar, {status}\",\"Cancel changes\":\"Avbryt ändringar\",\"Change title\":\"Ändra titel\",Choose:\"Välj\",\"Clear text\":\"Ta bort text\",Close:\"Stäng\",\"Close modal\":\"Stäng modal\",\"Close navigation\":\"Stäng navigering\",\"Close sidebar\":\"Stäng sidopanel\",\"Confirm changes\":\"Bekräfta ändringar\",Custom:\"Anpassad\",\"Edit item\":\"Ändra\",\"Error getting related resources\":\"Problem att hämta relaterade resurser\",\"Error parsing svg\":\"Fel vid inläsning av svg\",\"External documentation for {title}\":\"Extern dokumentation för {title}\",Favorite:\"Favorit\",Flags:\"Flaggor\",\"Food & Drink\":\"Mat & Dryck\",\"Frequently used\":\"Används ofta\",Global:\"Global\",\"Go back to the list\":\"Gå tillbaka till listan\",\"Hide password\":\"Göm lössenordet\",\"Message limit of {count} characters reached\":\"Meddelandegräns {count} tecken används\",\"More items …\":\"Fler objekt\",Next:\"Nästa\",\"No emoji found\":\"Hittade inga emojis\",\"No results\":\"Inga resultat\",Objects:\"Objekt\",Open:\"Öppna\",'Open link to \"{resourceTitle}\"':'Öppna länk till \"{resourceTitle}\"',\"Open navigation\":\"Öppna navigering\",\"Password is secure\":\"Lössenordet är säkert\",\"Pause slideshow\":\"Pausa bildspelet\",\"People & Body\":\"Kropp & Själ\",\"Pick an emoji\":\"Välj en emoji\",\"Please select a time zone:\":\"Välj tidszon:\",Previous:\"Föregående\",\"Related resources\":\"Relaterade resurser\",Search:\"Sök\",\"Search results\":\"Sökresultat\",\"Select a tag\":\"Välj en tag\",Settings:\"Inställningar\",\"Settings navigation\":\"Inställningsmeny\",\"Show password\":\"Visa lössenordet\",\"Smileys & Emotion\":\"Selfies & Känslor\",\"Start slideshow\":\"Starta bildspelet\",Submit:\"Skicka\",Symbols:\"Symboler\",\"Travel & Places\":\"Resor & Sevärdigheter\",\"Type to search time zone\":\"Skriv för att välja tidszon\",\"Unable to search the group\":\"Kunde inte söka i gruppen\",\"Undo changes\":\"Ångra ändringar\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv meddelande, använd \"@\" för att nämna någon, använd \":\" för automatiska emojiförslag ...'}},{locale:\"tr\",translations:{\"{tag} (invisible)\":\"{tag} (görünmez)\",\"{tag} (restricted)\":\"{tag} (kısıtlı)\",Actions:\"İşlemler\",Activities:\"Etkinlikler\",\"Animals & Nature\":\"Hayvanlar ve Doğa\",\"Anything shared with the same group of people will show up here\":\"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir\",\"Avatar of {displayName}\":\"{displayName} avatarı\",\"Avatar of {displayName}, {status}\":\"{displayName}, {status} avatarı\",\"Cancel changes\":\"Değişiklikleri iptal et\",\"Change title\":\"Başlığı değiştir\",Choose:\"Seçin\",\"Clear text\":\"Metni temizle\",Close:\"Kapat\",\"Close modal\":\"Üste açılan pencereyi kapat\",\"Close navigation\":\"Gezinmeyi kapat\",\"Close sidebar\":\"Yan çubuğu kapat\",\"Confirm changes\":\"Değişiklikleri onayla\",Custom:\"Özel\",\"Edit item\":\"Ögeyi düzenle\",\"Error getting related resources\":\"İlgili kaynaklar alınırken sorun çıktı\",\"Error parsing svg\":\"svg işlenirken sorun çıktı\",\"External documentation for {title}\":\"{title} için dış belgeler\",Favorite:\"Sık kullanılanlara ekle\",Flags:\"Bayraklar\",\"Food & Drink\":\"Yeme ve İçme\",\"Frequently used\":\"Sık kullanılanlar\",Global:\"Evrensel\",\"Go back to the list\":\"Listeye dön\",\"Hide password\":\"Parolayı gizle\",\"Message limit of {count} characters reached\":\"{count} karakter ileti sınırına ulaşıldı\",\"More items …\":\"Diğer ögeler…\",Next:\"Sonraki\",\"No emoji found\":\"Herhangi bir emoji bulunamadı\",\"No results\":\"Herhangi bir sonuç bulunamadı\",Objects:\"Nesneler\",Open:\"Aç\",'Open link to \"{resourceTitle}\"':'\"{resourceTitle}\" bağlantısını aç',\"Open navigation\":\"Gezinmeyi aç\",\"Password is secure\":\"Parola güvenli\",\"Pause slideshow\":\"Slayt sunumunu duraklat\",\"People & Body\":\"İnsanlar ve Beden\",\"Pick an emoji\":\"Bir emoji seçin\",\"Please select a time zone:\":\"Lütfen bir saat dilimi seçin:\",Previous:\"Önceki\",\"Related resources\":\"İlgili kaynaklar\",Search:\"Arama\",\"Search results\":\"Arama sonuçları\",\"Select a tag\":\"Bir etiket seçin\",Settings:\"Ayarlar\",\"Settings navigation\":\"Gezinme ayarları\",\"Show password\":\"Parolayı görüntüle\",\"Smileys & Emotion\":\"İfadeler ve Duygular\",\"Start slideshow\":\"Slayt sunumunu başlat\",Submit:\"Gönder\",Symbols:\"Simgeler\",\"Travel & Places\":\"Gezi ve Yerler\",\"Type to search time zone\":\"Saat dilimi aramak için yazmaya başlayın\",\"Unable to search the group\":\"Grupta arama yapılamadı\",\"Undo changes\":\"Değişiklikleri geri al\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için \":\" kullanın…'}},{locale:\"uk\",translations:{\"{tag} (invisible)\":\"{tag} (невидимий)\",\"{tag} (restricted)\":\"{tag} (обмежений)\",Actions:\"Дії\",Activities:\"Діяльність\",\"Animals & Nature\":\"Тварини та природа\",\"Avatar of {displayName}\":\"Аватар {displayName}\",\"Avatar of {displayName}, {status}\":\"Аватар {displayName}, {status}\",\"Cancel changes\":\"Скасувати зміни\",\"Change title\":\"Змінити назву\",Choose:\"ВиберітьВиберіть\",\"Clear text\":\"Очистити текст\",Close:\"Закрити\",\"Close modal\":\"Закрити модаль\",\"Close navigation\":\"Закрити навігацію\",\"Close sidebar\":\"Закрити бічну панель\",\"Confirm changes\":\"Підтвердити зміни\",Custom:\"Власне\",\"Edit item\":\"Редагувати елемент\",\"External documentation for {title}\":\"Зовнішня документація для {title}\",Favorite:\"Улюблений\",Flags:\"Прапори\",\"Food & Drink\":\"Їжа та напої\",\"Frequently used\":\"Найчастіші\",Global:\"Глобальний\",\"Go back to the list\":\"Повернутися до списку\",\"Hide password\":\"Приховати пароль\",items:\"елементи\",\"Message limit of {count} characters reached\":\"Вичерпано ліміт у {count} символів для повідомлення\",\"More {dashboardItemType} …\":\"Більше {dashboardItemType}…\",Next:\"Вперед\",\"No emoji found\":\"Емоційки відсутні\",\"No results\":\"Відсутні результати\",Objects:\"Об'єкти\",Open:\"Відкрити\",\"Open navigation\":\"Відкрити навігацію\",\"Password is secure\":\"Пароль безпечний\",\"Pause slideshow\":\"Пауза у показі слайдів\",\"People & Body\":\"Люди та жести\",\"Pick an emoji\":\"Виберіть емоційку\",\"Please select a time zone:\":\"Виберіть часовий пояс:\",Previous:\"Назад\",Search:\"Пошук\",\"Search results\":\"Результати пошуку\",\"Select a tag\":\"Виберіть позначку\",Settings:\"Налаштування\",\"Settings navigation\":\"Навігація у налаштуваннях\",\"Show password\":\"Показати пароль\",\"Smileys & Emotion\":\"Смайли та емоції\",\"Start slideshow\":\"Почати показ слайдів\",Submit:\"Надіслати\",Symbols:\"Символи\",\"Travel & Places\":\"Поїздки та місця\",\"Type to search time zone\":\"Введіть для пошуку часовий пояс\",\"Unable to search the group\":\"Неможливо шукати в групі\",\"Undo changes\":\"Скасувати зміни\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…\"}},{locale:\"zh_CN\",translations:{\"{tag} (invisible)\":\"{tag} (不可见)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"行为\",Activities:\"活动\",\"Animals & Nature\":\"动物 & 自然\",\"Anything shared with the same group of people will show up here\":\"与同组用户分享的所有内容都会显示于此\",\"Avatar of {displayName}\":\"{displayName}的头像\",\"Avatar of {displayName}, {status}\":\"{displayName}的头像,{status}\",\"Cancel changes\":\"取消更改\",\"Change title\":\"更改标题\",Choose:\"选择\",\"Clear text\":\"清除文本\",Close:\"关闭\",\"Close modal\":\"关闭窗口\",\"Close navigation\":\"关闭导航\",\"Close sidebar\":\"关闭侧边栏\",\"Confirm changes\":\"确认更改\",Custom:\"自定义\",\"Edit item\":\"编辑项目\",\"Error getting related resources\":\"获取相关资源时出错\",\"Error parsing svg\":\"解析 svg 时出错\",\"External documentation for {title}\":\"{title}的外部文档\",Favorite:\"喜爱\",Flags:\"旗帜\",\"Food & Drink\":\"食物 & 饮品\",\"Frequently used\":\"经常使用\",Global:\"全局\",\"Go back to the list\":\"返回至列表\",\"Hide password\":\"隐藏密码\",\"Message limit of {count} characters reached\":\"已达到 {count} 个字符的消息限制\",\"More items …\":\"更多项目…\",Next:\"下一个\",\"No emoji found\":\"表情未找到\",\"No results\":\"无结果\",Objects:\"物体\",Open:\"打开\",'Open link to \"{resourceTitle}\"':'打开\"{resourceTitle}\"的连接',\"Open navigation\":\"开启导航\",\"Password is secure\":\"密码安全\",\"Pause slideshow\":\"暂停幻灯片\",\"People & Body\":\"人 & 身体\",\"Pick an emoji\":\"选择一个表情\",\"Please select a time zone:\":\"请选择一个时区:\",Previous:\"上一个\",\"Related resources\":\"相关资源\",Search:\"搜索\",\"Search results\":\"搜索结果\",\"Select a tag\":\"选择一个标签\",Settings:\"设置\",\"Settings navigation\":\"设置向导\",\"Show password\":\"显示密码\",\"Smileys & Emotion\":\"笑脸 & 情感\",\"Start slideshow\":\"开始幻灯片\",Submit:\"提交\",Symbols:\"符号\",\"Travel & Places\":\"旅游 & 地点\",\"Type to search time zone\":\"打字以搜索时区\",\"Unable to search the group\":\"无法搜索分组\",\"Undo changes\":\"撤销更改\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'写信息,使用\"@\"来提及某人,使用\":\"进行表情符号自动完成 ...'}},{locale:\"zh_HK\",translations:{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"動作\",Activities:\"活動\",\"Animals & Nature\":\"動物與自然\",\"Anything shared with the same group of people will show up here\":\"與同一組人共享的任何內容都會顯示在此處\",\"Avatar of {displayName}\":\"{displayName} 的頭像\",\"Avatar of {displayName}, {status}\":\"{displayName} 的頭像,{status}\",\"Cancel changes\":\"取消更改\",\"Change title\":\"更改標題\",Choose:\"選擇\",\"Clear text\":\"清除文本\",Close:\"關閉\",\"Close modal\":\"關閉模態\",\"Close navigation\":\"關閉導航\",\"Close sidebar\":\"關閉側邊欄\",\"Confirm changes\":\"確認更改\",Custom:\"自定義\",\"Edit item\":\"編輯項目\",\"Error getting related resources\":\"獲取相關資源出錯\",\"Error parsing svg\":\"解析 svg 時出錯\",\"External documentation for {title}\":\"{title} 的外部文檔\",Favorite:\"喜愛\",Flags:\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"經常使用\",Global:\"全球的\",\"Go back to the list\":\"返回清單\",\"Hide password\":\"隱藏密碼\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",\"More items …\":\"更多項目 …\",Next:\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",Objects:\"物件\",Open:\"打開\",'Open link to \"{resourceTitle}\"':\"打開指向 “{resourceTitle}” 的鏈結\",\"Open navigation\":\"開啟導航\",\"Password is secure\":\"密碼是安全的\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",\"Please select a time zone:\":\"請選擇時區:\",Previous:\"上一個\",\"Related resources\":\"相關資源\",Search:\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",Settings:\"設定\",\"Settings navigation\":\"設定值導覽\",\"Show password\":\"顯示密碼\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",Submit:\"提交\",Symbols:\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Type to search time zone\":\"鍵入以搜索時區\",\"Unable to search the group\":\"無法搜尋群組\",\"Undo changes\":\"取消更改\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'寫訊息,使用 \"@\" 來指代某人,使用 \":\" 用於表情符號自動填充 ...'}},{locale:\"zh_TW\",translations:{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"動作\",Activities:\"活動\",\"Animals & Nature\":\"動物與自然\",Choose:\"選擇\",Close:\"關閉\",Custom:\"自定義\",Flags:\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"最近使用\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",Next:\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",Objects:\"物件\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",Previous:\"上一個\",Search:\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",Settings:\"設定\",\"Settings navigation\":\"設定值導覽\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",Symbols:\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Unable to search the group\":\"無法搜尋群組\",\"Write message, @ to mention someone …\":\"輸入訊息時可使用 @ 來標示某人...\"}}].forEach((e=>{const t={};for(const a in e.translations)e.translations[a].pluralId?t[a]={msgid:a,msgid_plural:e.translations[a].pluralId,msgstr:e.translations[a].msgstr}:t[a]={msgid:a,msgstr:[e.translations[a]]};i.addTranslation(e.locale,{translations:{\"\":t}})}));const n=i.build(),r=n.ngettext.bind(n),s=n.gettext.bind(n)},334:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>n});var o=a(2734);const i=new(a.n(o)())({data:()=>({isMobile:!1}),watch:{isMobile(e){this.$emit(\"changed\",e)}},created(){window.addEventListener(\"resize\",this.handleWindowResize),this.handleWindowResize()},beforeDestroy(){window.removeEventListener(\"resize\",this.handleWindowResize)},methods:{handleWindowResize(){this.isMobile=document.documentElement.clientWidth<1024}}}),n={data:()=>({isMobile:!1}),mounted(){i.$on(\"changed\",this.onIsMobileChanged),this.isMobile=i.isMobile},beforeDestroy(){i.$off(\"changed\",this.onIsMobileChanged)},methods:{onIsMobileChanged(e){this.isMobile=e}}}},3648:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>i});var o=a(932);const i={methods:{n:o.n,t:o.t}}},1205:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>o});const o=e=>Math.random().toString(36).replace(/[^a-z]+/g,\"\").slice(0,e||5)},7645:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>o});const o=e=>{e.mounted?Array.isArray(e.mounted)||(e.mounted=[e.mounted]):e.mounted=[],e.mounted.push((function(){this.$el.setAttribute(\"data-v-\".concat(\"cdfec4c\"),\"\")}))}},1206:(e,t,a)=>{\"use strict\";a.d(t,{L:()=>o});a(4505);const o=function(){return Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]}),window._nc_focus_trap}},8384:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.v-popper--theme-tooltip.v-popper__popper{position:absolute;z-index:100000;top:0;right:auto;left:auto;display:block;margin:0;padding:0;text-align:left;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{right:100%;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{left:100%;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity .15s,visibility .15s;opacity:0}.v-popper--theme-tooltip.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity .15s;opacity:1}.v-popper--theme-tooltip .v-popper__inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.v-popper--theme-tooltip .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/directives/Tooltip/index.scss\"],names:[],mappings:\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCSA,0CACC,iBAAA,CACA,cAAA,CACA,KAAA,CACA,UAAA,CACA,SAAA,CACA,aAAA,CACA,QAAA,CACA,SAAA,CACA,eAAA,CACA,gBAAA,CACA,SAAA,CACA,eAAA,CAEA,eAAA,CACA,sDAAA,CAGA,iGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAID,oGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAID,mGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAID,kGACC,SAAA,CACA,oBAAA,CACA,8CAAA,CAID,4DACC,iBAAA,CACA,uCAAA,CACA,SAAA,CAED,6DACC,kBAAA,CACA,uBAAA,CACA,SAAA,CAKF,0CACC,eAAA,CACA,eAAA,CACA,iBAAA,CACA,4BAAA,CACA,kCAAA,CACA,6CAAA,CAID,oDACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBAhFY\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n/**\\n* @copyright Copyright (c) 2016, John Molakvoæ \\n* @copyright Copyright (c) 2016, Robin Appelman \\n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt \\n* @copyright Copyright (c) 2016, Erik Pellikka \\n* @copyright Copyright (c) 2015, Vincent Petry \\n*\\n* Bootstrap (http://getbootstrap.com)\\n* SCSS copied from version 3.3.5\\n* Copyright 2011-2015 Twitter, Inc.\\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n*/\\n\\n$arrow-width: 10px;\\n\\n.v-popper--theme-tooltip {\\n\\t&.v-popper__popper {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 100000;\\n\\t\\ttop: 0;\\n\\t\\tright: auto;\\n\\t\\tleft: auto;\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\ttext-align: left;\\n\\t\\ttext-align: start;\\n\\t\\topacity: 0;\\n\\t\\tline-height: 1.6;\\n\\n\\t\\tline-break: auto;\\n\\t\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t\\t// TOP\\n\\t\\t&[data-popper-placement^='top'] .v-popper__arrow-container {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tborder-bottom-width: 0;\\n\\t\\t\\tborder-top-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// BOTTOM\\n\\t\\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tborder-top-width: 0;\\n\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// RIGHT\\n\\t\\t&[data-popper-placement^='right'] .v-popper__arrow-container {\\n\\t\\t\\tright: 100%;\\n\\t\\t\\tborder-left-width: 0;\\n\\t\\t\\tborder-right-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// LEFT\\n\\t\\t&[data-popper-placement^='left'] .v-popper__arrow-container {\\n\\t\\t\\tleft: 100%;\\n\\t\\t\\tborder-right-width: 0;\\n\\t\\t\\tborder-left-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// HIDDEN / SHOWN\\n\\t\\t&[aria-hidden='true'] {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t\\ttransition: opacity .15s, visibility .15s;\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t\\t&[aria-hidden='false'] {\\n\\t\\t\\tvisibility: visible;\\n\\t\\t\\ttransition: opacity .15s;\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t// CONTENT\\n\\t.v-popper__inner {\\n\\t\\tmax-width: 350px;\\n\\t\\tpadding: 5px 8px;\\n\\t\\ttext-align: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t// ARROW\\n\\t.v-popper__arrow-container {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: 0;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: transparent;\\n\\t\\tborder-width: $arrow-width;\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=r},8827:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon[data-v-20a3e950]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-20a3e950]{display:flex;align-items:center}.action-items>button[data-v-20a3e950]{margin-right:7px}.action-item[data-v-20a3e950]{--open-background-color: var(--color-background-hover, $action-background-hover);position:relative;display:inline-block}.action-item.action-item--primary[data-v-20a3e950]{--open-background-color: var(--color-primary-element-hover)}.action-item.action-item--secondary[data-v-20a3e950]{--open-background-color: var(--color-primary-element-light-hover)}.action-item.action-item--error[data-v-20a3e950]{--open-background-color: var(--color-error-hover)}.action-item.action-item--warning[data-v-20a3e950]{--open-background-color: var(--color-warning-hover)}.action-item.action-item--success[data-v-20a3e950]{--open-background-color: var(--color-success-hover)}.action-item.action-item--tertiary-no-background[data-v-20a3e950]{--open-background-color: transparent}.action-item.action-item--open .action-item__menutoggle[data-v-20a3e950]{background-color:var(--open-background-color)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcActions/NcActions.vue\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,+BACC,YAAA,CACA,kBAAA,CAGA,sCACC,gBAAA,CAIF,8BACC,gFAAA,CACA,iBAAA,CACA,oBAAA,CAEA,mDACC,2DAAA,CAGD,qDACC,iEAAA,CAGD,iDACC,iDAAA,CAGD,mDACC,mDAAA,CAGD,mDACC,mDAAA,CAGD,kEACC,oCAAA,CAGD,yEACC,6CAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n// Inline buttons\\n.action-items {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\n\\t// Spacing between buttons\\n\\t& > button {\\n\\t\\tmargin-right: math.div($icon-margin, 2);\\n\\t}\\n}\\n\\n.action-item {\\n\\t--open-background-color: var(--color-background-hover, $action-background-hover);\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\n\\t&.action-item--primary {\\n\\t\\t--open-background-color: var(--color-primary-element-hover);\\n\\t}\\n\\n\\t&.action-item--secondary {\\n\\t\\t--open-background-color: var(--color-primary-element-light-hover);\\n\\t}\\n\\n\\t&.action-item--error {\\n\\t\\t--open-background-color: var(--color-error-hover);\\n\\t}\\n\\n\\t&.action-item--warning {\\n\\t\\t--open-background-color: var(--color-warning-hover);\\n\\t}\\n\\n\\t&.action-item--success {\\n\\t\\t--open-background-color: var(--color-success-hover);\\n\\t}\\n\\n\\t&.action-item--tertiary-no-background {\\n\\t\\t--open-background-color: transparent;\\n\\t}\\n\\n\\t&.action-item--open .action-item__menutoggle {\\n\\t\\tbackground-color: var(--open-background-color);\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=r},5565:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper{border-radius:var(--border-radius-large);overflow:hidden}.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner{border-radius:var(--border-radius-large);padding:4px;max-height:calc(50vh - 16px);overflow:auto}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcActions/NcActions.vue\"],names:[],mappings:\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCJD,kFACC,wCAAA,CACA,eAAA,CAEA,mGACC,wCAAA,CACA,WAAA,CACA,4BAAA,CACA,aAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n// We overwrote the popover base class, so we can style\\n// the popover__inner for actions only.\\n.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper {\\n\\tborder-radius: var(--border-radius-large);\\n\\toverflow:hidden;\\n\\n\\t.v-popper__inner {\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: 4px;\\n\\t\\tmax-height: calc(50vh - 16px);\\n\\t\\toverflow: auto;\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=r},5223:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon[data-v-549cf324]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings-modal[data-v-549cf324] .modal-wrapper .modal-container{display:flex;overflow:hidden}.app-settings[data-v-549cf324]{width:100%;display:flex;flex-direction:column;min-width:0}.app-settings__title[data-v-549cf324]{min-height:44px;height:44px;line-height:44px;padding-top:4px;text-align:center}.app-settings__wrapper[data-v-549cf324]{display:flex;width:100%;overflow:hidden;height:100%;position:relative}.app-settings__navigation[data-v-549cf324]{min-width:200px;margin-right:20px;overflow-x:hidden;overflow-y:auto;position:relative;height:100%}.app-settings__content[data-v-549cf324]{max-width:100vw;overflow-y:auto;overflow-x:hidden;padding:24px;width:100%}.navigation-list[data-v-549cf324]{height:100%;box-sizing:border-box;overflow-y:auto;padding:12px}.navigation-list__link[data-v-549cf324]{display:block;font-size:16px;height:44px;margin:4px 0;line-height:44px;border-radius:var(--border-radius-pill);font-weight:bold;padding:0 20px;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background-color:rgba(0,0,0,0);border:none}.navigation-list__link[data-v-549cf324]:hover,.navigation-list__link[data-v-549cf324]:focus{background-color:var(--color-background-hover)}.navigation-list__link--active[data-v-549cf324]{background-color:var(--color-primary-element-light) !important}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcAppSettingsDialog/NcAppSettingsDialog.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,qEACC,YAAA,CACA,eAAA,CAGD,+BACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,WAAA,CACA,sCACC,eCWe,CDVf,WCUe,CDTf,gBCSe,CDRf,eAAA,CACA,iBAAA,CAED,wCACC,YAAA,CACA,UAAA,CACA,eAAA,CACA,WAAA,CACA,iBAAA,CAED,2CACC,eAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,WAAA,CAED,wCACC,eAAA,CACA,eAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CAIF,kCACC,WAAA,CACA,qBAAA,CACA,eAAA,CACA,YAAA,CACA,wCACC,aAAA,CACA,cAAA,CACA,WC3Be,CD4Bf,YAAA,CACA,gBC7Be,CD8Bf,uCAAA,CACA,gBAAA,CACA,cAAA,CACA,cAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,8BAAA,CACA,WAAA,CACA,4FAEC,8CAAA,CAED,gDACC,8DAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.app-settings-modal :deep(.modal-wrapper .modal-container) {\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n}\\n\\n.app-settings {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmin-width: 0;\\n\\t&__title {\\n\\t\\tmin-height: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tpadding-top: 4px; // Same as the close button top spacing\\n\\t\\ttext-align: center;\\n\\t}\\n\\t&__wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\toverflow: hidden;\\n\\t\\theight: 100%;\\n\\t\\tposition: relative;\\n\\t}\\n\\t&__navigation {\\n\\t\\tmin-width: 200px;\\n\\t\\tmargin-right: 20px;\\n\\t\\toverflow-x: hidden;\\n\\t\\toverflow-y: auto;\\n\\t\\tposition: relative;\\n\\t\\theight: 100%;\\n\\t}\\n\\t&__content {\\n\\t\\tmax-width: 100vw;\\n\\t\\toverflow-y: auto;\\n\\t\\toverflow-x: hidden;\\n\\t\\tpadding: 24px;\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.navigation-list {\\n\\theight: 100%;\\n\\tbox-sizing: border-box;\\n\\toverflow-y: auto;\\n\\tpadding: 12px;\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-size: 16px;\\n\\t\\theight: $clickable-area;\\n\\t\\tmargin: 4px 0;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: 0 20px;\\n\\t\\tcursor: pointer;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tbackground-color: transparent;\\n\\t\\tborder: none;\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t\\t&--active {\\n\\t\\t\\tbackground-color: var(--color-primary-element-light) !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},7233:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon[data-v-488fcfba]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-488fcfba]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue *[data-v-488fcfba],.button-vue span[data-v-488fcfba]{cursor:pointer}.button-vue[data-v-488fcfba]:focus{outline:none}.button-vue[data-v-488fcfba]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-488fcfba]{cursor:default}.button-vue[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-488fcfba]:active{background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-488fcfba]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue__icon[data-v-488fcfba]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-488fcfba]{font-weight:bold;margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue--icon-only[data-v-488fcfba]{width:44px !important}.button-vue--text-only[data-v-488fcfba]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-488fcfba]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-488fcfba]{padding:0 16px 0 4px}.button-vue--wide[data-v-488fcfba]{width:100%}.button-vue[data-v-488fcfba]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-488fcfba]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.button-vue--vue-primary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-488fcfba]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-488fcfba]{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue--vue-secondary[data-v-488fcfba]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--vue-tertiary[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{color:var(--color-primary-element-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-488fcfba]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-488fcfba]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-488fcfba]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-488fcfba]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-488fcfba]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-488fcfba]:active{background-color:var(--color-error)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcButton/NcButton.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAKA,kBAAA,CACA,uDAAA,CACA,uBAAA,CACA,iCAAA,CAkBA,6CAAA,CACA,mDAAA,CA1BA,iEAEC,cAAA,CAQD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCIiB,CDFjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,yDAAA,CAKD,oCACC,mDAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAGD,mCACC,WCvCe,CDwCf,UCxCe,CDyCf,eCzCe,CD0Cf,cC1Ce,CD2Cf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,mDAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,uCAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,6CAAA,CACA,mDAAA,CACA,iEACC,6CAAA,CACA,yDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,uCAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.button-vue {\\n\\tposition: relative;\\n\\twidth: fit-content;\\n\\toverflow: hidden;\\n\\tborder: 0;\\n\\tpadding: 0;\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\tmin-height: $clickable-area;\\n\\tmin-width: $clickable-area;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\n\\t// Cursor pointer on element and all children\\n\\tcursor: pointer;\\n\\t& *,\\n\\tspan {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\tborder-radius: math.div($clickable-area, 2);\\n\\ttransition-property: color, border-color, background-color;\\n\\ttransition-duration: 0.1s;\\n\\ttransition-timing-function: linear;\\n\\n\\t// No outline feedback for focus. Handled with a toggled class in js (see data)\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&:disabled {\\n\\t\\tcursor: default;\\n\\t\\t& * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t// Gives a wash out effect\\n\\t\\tfilter: saturate($opacity_normal);\\n\\t}\\n\\n\\t// Default button type\\n\\tcolor: var(--color-primary-element-light-text);\\n\\tbackground-color: var(--color-primary-element-light);\\n\\t&:hover:not(:disabled) {\\n\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t}\\n\\n\\t// Back to the default color for this button when active\\n\\t// TODO: add ripple effect\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\theight: $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-height: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__text {\\n\\t\\tfont-weight: bold;\\n\\t\\tmargin-bottom: 1px;\\n\\t\\tpadding: 2px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// Icon-only button\\n\\t&--icon-only {\\n\\t\\twidth: $clickable-area !important;\\n\\t}\\n\\n\\t// Text-only button\\n\\t&--text-only {\\n\\t\\tpadding: 0 12px;\\n\\t\\t& .button-vue__text {\\n\\t\\t\\tmargin-left: 4px;\\n\\t\\t\\tmargin-right: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon and text button\\n\\t&--icon-and-text {\\n\\t\\tpadding: 0 16px 0 4px;\\n\\t}\\n\\n\\t// Wide button spans the whole width of the container\\n\\t&--wide {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t&.button-vue--vue-tertiary-on-primary {\\n\\t\\t\\toutline: 2px solid var(--color-primary-element-text);\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Button types\\n\\n\\t// Primary\\n\\t&--vue-primary {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-primary-element-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t// Secondary\\n\\t&--vue-secondary {\\n\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary\\n\\t&--vue-tertiary {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary, no background\\n\\t&--vue-tertiary-no-background {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary on primary color (like the header)\\n\\t&--vue-tertiary-on-primary {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\tbackground-color: transparent;\\n\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Success\\n\\t&--vue-success {\\n\\t\\tbackground-color: var(--color-success);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-success-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// : add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-success);\\n\\t\\t}\\n\\t}\\n\\n\\t// Warning\\n\\t&--vue-warning {\\n\\t\\tbackground-color: var(--color-warning);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-warning-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-warning);\\n\\t\\t}\\n\\t}\\n\\n\\t// Error\\n\\t&--vue-error {\\n\\t\\tbackground-color: var(--color-error);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-error-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},4274:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,'.material-design-icon[data-v-09b21bad]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.modal-mask[data-v-09b21bad]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,.5)}.modal-mask--dark[data-v-09b21bad]{background-color:rgba(0,0,0,.92)}.modal-header[data-v-09b21bad]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;overflow:hidden;transition:opacity 250ms,visibility 250ms}.modal-header.invisible[style*=\"display:none\"][data-v-09b21bad],.modal-header.invisible[style*=\"display: none\"][data-v-09b21bad]{visibility:hidden}.modal-header .modal-title[data-v-09b21bad]{overflow-x:hidden;box-sizing:border-box;width:100%;padding:0 132px 0 12px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px;margin-bottom:0}@media only screen and (min-width: 1024px){.modal-header .modal-title[data-v-09b21bad]{padding-left:132px;text-align:center}}.modal-header .icons-menu[data-v-09b21bad]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .header-close[data-v-09b21bad]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;margin:3px;padding:0}.modal-header .icons-menu .play-pause-icons[data-v-09b21bad]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;border:none;background-color:rgba(0,0,0,0)}.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__play[data-v-09b21bad],.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__pause[data-v-09b21bad],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__play[data-v-09b21bad],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__pause[data-v-09b21bad]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,.25)}.modal-header .icons-menu .play-pause-icons__play[data-v-09b21bad],.modal-header .icons-menu .play-pause-icons__pause[data-v-09b21bad]{box-sizing:border-box;width:44px;height:44px;margin:3px;cursor:pointer;opacity:.7}.modal-header .icons-menu .header-actions[data-v-09b21bad]{color:#fff}.modal-header .icons-menu[data-v-09b21bad] .action-item{margin:3px}.modal-header .icons-menu[data-v-09b21bad] .action-item--single{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-09b21bad] button{color:#fff}.modal-header .icons-menu[data-v-09b21bad] .action-item__menutoggle{padding:0}.modal-header .icons-menu[data-v-09b21bad] .action-item__menutoggle span,.modal-header .icons-menu[data-v-09b21bad] .action-item__menutoggle svg{width:var(--icon-size);height:var(--icon-size)}.modal-wrapper[data-v-09b21bad]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-09b21bad],.modal-wrapper .next[data-v-09b21bad]{z-index:10000;display:flex !important;height:35vw;position:absolute;transition:opacity 250ms,visibility 250ms;color:var(--color-primary-element-text)}.modal-wrapper .prev[data-v-09b21bad]:focus-visible,.modal-wrapper .next[data-v-09b21bad]:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element-text);background-color:var(--color-box-shadow)}.modal-wrapper .prev.invisible[style*=\"display:none\"][data-v-09b21bad],.modal-wrapper .prev.invisible[style*=\"display: none\"][data-v-09b21bad],.modal-wrapper .next.invisible[style*=\"display:none\"][data-v-09b21bad],.modal-wrapper .next.invisible[style*=\"display: none\"][data-v-09b21bad]{visibility:hidden}.modal-wrapper .prev[data-v-09b21bad]{left:2px}.modal-wrapper .next[data-v-09b21bad]{right:2px}.modal-wrapper .modal-container[data-v-09b21bad]{position:relative;display:block;overflow:auto;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 0 40px rgba(0,0,0,.2)}.modal-wrapper .modal-container__close[data-v-09b21bad]{position:absolute;top:4px;right:4px}.modal-wrapper--small .modal-container[data-v-09b21bad]{width:400px;max-width:90%;max-height:90%}.modal-wrapper--normal .modal-container[data-v-09b21bad]{max-width:90%;width:600px;max-height:90%}.modal-wrapper--large .modal-container[data-v-09b21bad]{max-width:90%;width:900px;max-height:90%}.modal-wrapper--full .modal-container[data-v-09b21bad]{width:100%;height:calc(100% - var(--header-height));position:absolute;top:50px;border-radius:0}@media only screen and (max-width: 512px){.modal-wrapper .modal-container[data-v-09b21bad]{max-width:initial;width:100%;max-height:initial;height:calc(100% - var(--header-height));position:absolute;top:50px;border-radius:0}}.fade-enter-active[data-v-09b21bad],.fade-leave-active[data-v-09b21bad]{transition:opacity 250ms}.fade-enter[data-v-09b21bad],.fade-leave-to[data-v-09b21bad]{opacity:0}.fade-visibility-enter[data-v-09b21bad],.fade-visibility-leave-to[data-v-09b21bad]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-09b21bad],.modal-in-leave-active[data-v-09b21bad],.modal-out-enter-active[data-v-09b21bad],.modal-out-leave-active[data-v-09b21bad]{transition:opacity 250ms}.modal-in-enter[data-v-09b21bad],.modal-in-leave-to[data-v-09b21bad],.modal-out-enter[data-v-09b21bad],.modal-out-leave-to[data-v-09b21bad]{opacity:0}.modal-in-enter .modal-container[data-v-09b21bad],.modal-in-leave-to .modal-container[data-v-09b21bad]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-09b21bad],.modal-out-leave-to .modal-container[data-v-09b21bad]{transform:scale(1.1)}.modal-mask .play-pause-icons .progress-ring[data-v-09b21bad]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause-icons .progress-ring .progress-ring__circle[data-v-09b21bad]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-09b21bad linear var(--slideshow-duration) infinite;stroke-linecap:round;stroke-dashoffset:94.2477796077;stroke-dasharray:94.2477796077}.modal-mask .play-pause-icons--paused .icon-pause[data-v-09b21bad]{animation:breath-09b21bad 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause-icons--paused .progress-ring__circle[data-v-09b21bad]{animation-play-state:paused !important}@keyframes progressring-09b21bad{from{stroke-dashoffset:94.2477796077}to{stroke-dashoffset:0}}@keyframes breath-09b21bad{0%{opacity:1}50%{opacity:0}100%{opacity:1}}',\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcModal/NcModal.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,cAAA,CACA,YAAA,CACA,KAAA,CACA,MAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CACA,+BAAA,CACA,mCACC,gCAAA,CAIF,+BACC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,OAAA,CACA,MAAA,CAGA,uBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WCuBe,CDtBf,eAAA,CACA,yCAAA,CAIA,iIAEC,iBAAA,CAGD,4CACC,iBAAA,CACA,qBAAA,CACA,UAAA,CACA,sBAAA,CACA,6BAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,cChBY,CDiBZ,eAAA,CAID,2CACC,4CACC,kBAAA,CACA,iBAAA,CAAA,CAIF,2CACC,iBAAA,CACA,OAAA,CACA,YAAA,CACA,kBAAA,CACA,wBAAA,CAEA,yDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6DACC,iBAAA,CACA,UC3Ba,CD4Bb,WC5Ba,CD6Bb,QAAA,CACA,SAAA,CACA,cAAA,CACA,WAAA,CACA,8BAAA,CAGC,8WAEC,SC9CU,CD+CV,kBAAA,CACA,sCCxDW,CD2Db,uIAEC,qBAAA,CACA,UCzEa,CD0Eb,WC1Ea,CD2Eb,UAAA,CACA,cAAA,CACA,UC3Da,CD+Df,2DACC,UAAA,CAGD,yDACC,UAAA,CAEA,iEACC,qBAAA,CACA,UC1Fa,CD2Fb,WC3Fa,CD4Fb,cAAA,CACA,0BAAA,CACA,oBAAA,CAIF,kDAEC,UAAA,CAID,oEACC,SAAA,CACA,iJACC,sBAAA,CACA,uBAAA,CAMJ,gCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CACA,UAAA,CACA,WAAA,CAGA,4EAEC,aAAA,CAEA,uBAAA,CACA,WAAA,CACA,iBAAA,CACA,yCAAA,CAEA,uCAAA,CAEA,wGAEC,sDAAA,CACA,wCAAA,CAOD,8RAEC,iBAAA,CAGF,sCACC,QAAA,CAED,sCACC,SAAA,CAID,iDACC,iBAAA,CACA,aAAA,CACA,aAAA,CACA,SAAA,CACA,+BAAA,CACA,wCAAA,CACA,6CAAA,CACA,kCAAA,CACA,wDACC,iBAAA,CACA,OAAA,CACA,SAAA,CAMD,wDACC,WAAA,CACA,aAAA,CACA,cAAA,CAID,yDACC,aAAA,CACA,WAAA,CACA,cAAA,CAID,wDACC,aAAA,CACA,WAAA,CACA,cAAA,CAID,uDACC,UAAA,CACA,wCAAA,CACA,iBAAA,CACA,QC7Ka,CD8Kb,eAAA,CAKF,0CACC,iDACC,iBAAA,CACA,UAAA,CACA,kBAAA,CACA,wCAAA,CACA,iBAAA,CACA,QC1La,CD2Lb,eAAA,CAAA,CAMH,wEAEC,wBAAA,CAGD,6DAEC,SAAA,CAGD,mFAEC,iBAAA,CACA,SAAA,CAGD,kKAIC,wBAAA,CAGD,4IAIC,SAAA,CAGD,uGAEC,oBAAA,CAGD,yGAEC,oBAAA,CAQA,8DACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CACA,qFACC,kCAAA,CACA,wBAAA,CACA,yEAAA,CAEA,oBAAA,CACA,+BAAA,CACA,8BAAA,CAID,mEACC,kEAAA,CAED,8EACC,sCAAA,CAMH,iCACC,KACC,+BAAA,CAED,GACC,mBAAA,CAAA,CAIF,2BACC,GACC,SAAA,CAED,IACC,SAAA,CAED,KACC,SAAA,CAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.modal-mask {\\n\\tposition: fixed;\\n\\tz-index: 9998;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tbackground-color: rgba(0, 0, 0, .5);\\n\\t&--dark {\\n\\t\\tbackground-color: rgba(0, 0, 0, .92);\\n\\t}\\n}\\n\\n.modal-header {\\n\\tposition: absolute;\\n\\tz-index: 10001;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tleft: 0;\\n\\t// prevent vue show to use display:none and reseting\\n\\t// the circle animation loop\\n\\tdisplay: flex !important;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: 100%;\\n\\theight: $header-height;\\n\\toverflow: hidden;\\n\\ttransition: opacity 250ms,\\n\\t\\tvisibility 250ms;\\n\\n\\t// replace display by visibility\\n\\t&.invisible[style*='display:none'],\\n\\t&.invisible[style*='display: none'] {\\n\\t\\tvisibility: hidden;\\n\\t}\\n\\n\\t.modal-title {\\n\\t\\toverflow-x: hidden;\\n\\t\\tbox-sizing: border-box;\\n\\t\\twidth: 100%;\\n\\t\\tpadding: 0 #{$clickable-area * 3} 0 12px; // maximum actions is 3\\n\\t\\ttransition: padding ease 100ms;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: #fff;\\n\\t\\tfont-size: $icon-margin;\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n\\n\\t// On wider screens the title can be centered\\n\\t@media only screen and (min-width: $breakpoint-mobile) {\\n\\t\\t.modal-title {\\n\\t\\t\\tpadding-left: #{$clickable-area * 3}; // maximum actions is 3\\n\\t\\t\\ttext-align: center;\\n\\t\\t}\\n\\t}\\n\\n\\t.icons-menu {\\n\\t\\tposition: absolute;\\n\\t\\tright: 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: flex-end;\\n\\n\\t\\t.header-close {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tmargin: math.div($header-height - $clickable-area, 2);\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t.play-pause-icons {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\twidth: $header-height;\\n\\t\\t\\theight: $header-height;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\t.play-pause-icons__play,\\n\\t\\t\\t\\t.play-pause-icons__pause {\\n\\t\\t\\t\\t\\topacity: $opacity_full;\\n\\t\\t\\t\\t\\tborder-radius: math.div($clickable-area, 2);\\n\\t\\t\\t\\t\\tbackground-color: $icon-focus-bg;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t&__play,\\n\\t\\t\\t&__pause {\\n\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\t\\theight: $clickable-area;\\n\\t\\t\\t\\tmargin: math.div($header-height - $clickable-area, 2);\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\topacity: $opacity_normal;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.header-actions {\\n\\t\\t\\tcolor: white;\\n\\t\\t}\\n\\n\\t\\t&:deep() .action-item {\\n\\t\\t\\tmargin: math.div($header-height - $clickable-area, 2);\\n\\n\\t\\t\\t&--single {\\n\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\t\\theight: $clickable-area;\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-size: 22px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t:deep(button) {\\n\\t\\t\\t// force white instead of default main text\\n\\t\\t\\tcolor: #fff;\\n\\t\\t}\\n\\n\\t\\t// Force the Actions menu icon to be the same size as other icons\\n\\t\\t&:deep(.action-item__menutoggle) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tspan, svg {\\n\\t\\t\\t\\twidth: var(--icon-size);\\n\\t\\t\\t\\theight: var(--icon-size);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.modal-wrapper {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\n\\t/* Navigation buttons */\\n\\t.prev,\\n\\t.next {\\n\\t\\tz-index: 10000;\\n\\t\\t// ignore display: none\\n\\t\\tdisplay: flex !important;\\n\\t\\theight: 35vw;\\n\\t\\tposition: absolute;\\n\\t\\ttransition: opacity 250ms,\\n\\t\\t\\tvisibility 250ms;\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\t// Override NcButton focus styles\\n\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-element-text);\\n\\t\\t\\tbackground-color: var(--color-box-shadow);\\n\\t\\t}\\n\\n\\t\\t// we want to keep the elements on page\\n\\t\\t// even if hidden to avoid having a unbalanced\\n\\t\\t// centered content\\n\\t\\t// replace display by visibility\\n\\t\\t&.invisible[style*='display:none'],\\n\\t\\t&.invisible[style*='display: none'] {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t}\\n\\t}\\n\\t.prev {\\n\\t\\tleft: 2px;\\n\\t}\\n\\t.next {\\n\\t\\tright: 2px;\\n\\t}\\n\\n\\t/* Content */\\n\\t.modal-container {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: block;\\n\\t\\toverflow: auto; // avoids unecessary hacks if the content should be bigger than the modal\\n\\t\\tpadding: 0;\\n\\t\\ttransition: transform 300ms ease;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tbox-shadow: 0 0 40px rgba(0, 0, 0, .2);\\n\\t\\t&__close {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 4px;\\n\\t\\t\\tright: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Sizing\\n\\t&--small {\\n\\t\\t.modal-container {\\n\\t\\t\\twidth: 400px;\\n\\t\\t\\tmax-width: 90%;\\n\\t\\t\\tmax-height: 90%;\\n\\t\\t}\\n\\t}\\n\\t&--normal {\\n\\t\\t.modal-container {\\n\\t\\t\\tmax-width: 90%;\\n\\t\\t\\twidth: 600px;\\n\\t\\t\\tmax-height: 90%;\\n\\t\\t}\\n\\t}\\n\\t&--large {\\n\\t\\t.modal-container {\\n\\t\\t\\tmax-width: 90%;\\n\\t\\t\\twidth: 900px;\\n\\t\\t\\tmax-height: 90%;\\n\\t\\t}\\n\\t}\\n\\t&--full {\\n\\t\\t.modal-container {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: calc(100% - var(--header-height));\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: $header-height;\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make modal full screen on mobile\\n\\t@media only screen and (max-width: math.div($breakpoint-mobile, 2)) {\\n\\t\\t.modal-container {\\n\\t\\t\\tmax-width: initial;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-height: initial;\\n\\t\\t\\theight: calc(100% - var(--header-height));\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: $header-height;\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* TRANSITIONS */\\n.fade-enter-active,\\n.fade-leave-active {\\n\\ttransition: opacity 250ms;\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-visibility-enter,\\n.fade-visibility-leave-to {\\n\\tvisibility: hidden;\\n\\topacity: 0;\\n}\\n\\n.modal-in-enter-active,\\n.modal-in-leave-active,\\n.modal-out-enter-active,\\n.modal-out-leave-active {\\n\\ttransition: opacity 250ms;\\n}\\n\\n.modal-in-enter,\\n.modal-in-leave-to,\\n.modal-out-enter,\\n.modal-out-leave-to {\\n\\topacity: 0;\\n}\\n\\n.modal-in-enter .modal-container,\\n.modal-in-leave-to .modal-container {\\n\\ttransform: scale(.9);\\n}\\n\\n.modal-out-enter .modal-container,\\n.modal-out-leave-to .modal-container {\\n\\ttransform: scale(1.1);\\n}\\n\\n// animated circle\\n$radius: 15;\\n$pi: 3.14159265358979;\\n\\n.modal-mask .play-pause-icons {\\n\\t.progress-ring {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\ttransform: rotate(-90deg);\\n\\t\\t.progress-ring__circle {\\n\\t\\t\\ttransition: 100ms stroke-dashoffset;\\n\\t\\t\\ttransform-origin: 50% 50%; // axis compensation\\n\\t\\t\\tanimation: progressring linear var(--slideshow-duration) infinite;\\n\\n\\t\\t\\tstroke-linecap: round;\\n\\t\\t\\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\\n\\t\\t\\tstroke-dasharray: $radius * 2 * $pi; // radius * 2 * PI\\n\\t\\t}\\n\\t}\\n\\t&--paused {\\n\\t\\t.icon-pause {\\n\\t\\t\\tanimation: breath 2s cubic-bezier(.4, 0, .2, 1) infinite;\\n\\t\\t}\\n\\t\\t.progress-ring__circle {\\n\\t\\t\\tanimation-play-state: paused !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n// keyframes get scoped too and break the animation name, we need them unscoped\\n@keyframes progressring {\\n\\tfrom {\\n\\t\\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\\n\\t}\\n\\tto {\\n\\t\\tstroke-dashoffset: 0;\\n\\t}\\n}\\n\\n@keyframes breath {\\n\\t0% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t50% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},1625:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:rgba(0,0,0,0);pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown.v-popper__popper{z-index:100000;top:0;left:0;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-dropdown.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius-large);overflow:hidden;background:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-10px;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcPopover/NcPopover.vue\"],names:[],mappings:\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,iBACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,8BAAA,CACA,mBAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CAGD,wBACC,aAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,eAAA,CACA,mBAAA,CACA,UAAA,CAMA,2CACC,cAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CAEA,sDAAA,CAEA,4DACC,SAAA,CACA,4BAAA,CACA,wCAAA,CACA,eAAA,CACA,uCAAA,CAGD,sEACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBA1BW,CA6BZ,kGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAGD,qGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAGD,oGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAGD,mGACC,WAAA,CACA,oBAAA,CACA,8CAAA,CAGD,6DACC,iBAAA,CACA,2EAAA,CACA,SAAA,CAGD,8DACC,kBAAA,CACA,yCAAA,CACA,SAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.resize-observer {\\n\\tposition:absolute;\\n\\ttop:0;\\n\\tleft:0;\\n\\tz-index:-1;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tborder:none;\\n\\tbackground-color:transparent;\\n\\tpointer-events:none;\\n\\tdisplay:block;\\n\\toverflow:hidden;\\n\\topacity:0\\n}\\n\\n.resize-observer object {\\n\\tdisplay:block;\\n\\tposition:absolute;\\n\\ttop:0;\\n\\tleft:0;\\n\\theight:100%;\\n\\twidth:100%;\\n\\toverflow:hidden;\\n\\tpointer-events:none;\\n\\tz-index:-1\\n}\\n\\n$arrow-width: 10px;\\n\\n.v-popper--theme-dropdown {\\n\\t&.v-popper__popper {\\n\\t\\tz-index: 100000;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tdisplay: block !important;\\n\\n\\t\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t\\t.v-popper__inner {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t.v-popper__arrow-container {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tz-index: 1;\\n\\t\\t\\twidth: 0;\\n\\t\\t\\theight: 0;\\n\\t\\t\\tborder-style: solid;\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tborder-width: $arrow-width;\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='top'] .v-popper__arrow-container {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tborder-bottom-width: 0;\\n\\t\\t\\tborder-top-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tborder-top-width: 0;\\n\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='right'] .v-popper__arrow-container {\\n\\t\\t\\tleft: -$arrow-width;\\n\\t\\t\\tborder-left-width: 0;\\n\\t\\t\\tborder-right-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='left'] .v-popper__arrow-container {\\n\\t\\t\\tright: -$arrow-width;\\n\\t\\t\\tborder-right-width: 0;\\n\\t\\t\\tborder-left-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[aria-hidden='true'] {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t\\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\n\\t\\t&[aria-hidden='false'] {\\n\\t\\t\\tvisibility: visible;\\n\\t\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],sourceRoot:\"\"}]);const s=r},3645:e=>{\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var a=\"\",o=void 0!==t[5];return t[4]&&(a+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(a+=\"@media \".concat(t[2],\" {\")),o&&(a+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),a+=e(t),o&&(a+=\"}\"),t[2]&&(a+=\"}\"),t[4]&&(a+=\"}\"),a})).join(\"\")},t.i=function(e,a,o,i,n){\"string\"==typeof e&&(e=[[null,e,void 0]]);var r={};if(o)for(var s=0;s0?\" \".concat(d[5]):\"\",\" {\").concat(d[1],\"}\")),d[5]=n),a&&(d[2]?(d[1]=\"@media \".concat(d[2],\" {\").concat(d[1],\"}\"),d[2]=a):d[2]=a),i&&(d[4]?(d[1]=\"@supports (\".concat(d[4],\") {\").concat(d[1],\"}\"),d[4]=i):d[4]=\"\".concat(i)),t.push(d))}},t}},7537:e=>{\"use strict\";e.exports=function(e){var t=e[1],a=e[3];if(!a)return t;if(\"function\"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),i=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(o),n=\"/*# \".concat(i,\" */\");return[t].concat([n]).join(\"\\n\")}return[t].join(\"\\n\")}},3379:e=>{\"use strict\";var t=[];function a(e){for(var a=-1,o=0;o{\"use strict\";var t={};e.exports=function(e,a){var o=function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(e){a=null}t[e]=a}return t[e]}(e);if(!o)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");o.appendChild(a)}},9216:e=>{\"use strict\";e.exports=function(e){var t=document.createElement(\"style\");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,a)=>{\"use strict\";e.exports=function(e){var t=a.nc;t&&e.setAttribute(\"nonce\",t)}},7795:e=>{\"use strict\";e.exports=function(e){if(\"undefined\"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(a){!function(e,t,a){var o=\"\";a.supports&&(o+=\"@supports (\".concat(a.supports,\") {\")),a.media&&(o+=\"@media \".concat(a.media,\" {\"));var i=void 0!==a.layer;i&&(o+=\"@layer\".concat(a.layer.length>0?\" \".concat(a.layer):\"\",\" {\")),o+=a.css,i&&(o+=\"}\"),a.media&&(o+=\"}\"),a.supports&&(o+=\"}\");var n=a.sourceMap;n&&\"undefined\"!=typeof btoa&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n)))),\" */\")),t.styleTagTransform(o,e,t.options)}(t,e,a)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},5727:()=>{},7984:()=>{},2102:()=>{},9989:()=>{},2405:()=>{},1900:(e,t,a)=>{\"use strict\";function o(e,t,a,o,i,n,r,s){var l,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=a,c._compiled=!0),o&&(c.functional=!0),n&&(c._scopeId=\"data-v-\"+n),r?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:c}}a.d(t,{Z:()=>o})},7931:e=>{\"use strict\";e.exports=require(\"@nextcloud/l10n/gettext\")},3465:e=>{\"use strict\";e.exports=require(\"debounce\")},9454:e=>{\"use strict\";e.exports=require(\"floating-vue\")},4505:e=>{\"use strict\";e.exports=require(\"focus-trap\")},2640:e=>{\"use strict\";e.exports=require(\"hammerjs\")},2734:e=>{\"use strict\";e.exports=require(\"vue\")},9044:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/ChevronRight.vue\")},8618:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/Close.vue\")},1441:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/DotsHorizontal.vue\")}},t={};function a(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={id:o,exports:{}};return e[o](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.nc=void 0;var o={};return(()=>{\"use strict\";a.r(o),a.d(o,{default:()=>z});var e=a(5202),t=a(334),i=a(932),n=a(3465),r=a.n(n);const s={name:\"NcAppSettingsDialog\",components:{NcModal:e.default},mixins:[t.default],props:{open:{type:Boolean,required:!0},showNavigation:{type:Boolean,default:!1},container:{type:String,default:\"body\"},title:{type:String,default:\"\"},additionalTrapElements:{type:Array,default:()=>[]}},emits:[\"update:open\"],data:()=>({selectedSection:\"\",linkClicked:!1,addedScrollListener:!1,scroller:null}),computed:{hasNavigation(){return!(this.isMobile||!this.showNavigation)},settingsNavigationAriaLabel:()=>(0,i.t)(\"Settings navigation\")},mounted(){this.selectedSection=this.$slots.default[0].componentOptions.propsData.id},updated(){this.$refs.settingsScroller&&(this.scroller=this.$refs.settingsScroller,this.addedScrollListener||(this.scroller.addEventListener(\"scroll\",this.handleScroll),this.addedScrollListener=!0))},methods:{getSettingsNavigation(e){const t=e.filter((e=>e.componentOptions)).map((e=>{var t,a;return{id:null===(t=e.componentOptions.propsData)||void 0===t?void 0:t.id,title:null===(a=e.componentOptions.propsData)||void 0===a?void 0:a.title}})),a=e.map((e=>e.title)),o=e.map((e=>e.id));return t.forEach(((e,t)=>{const i=[...a],n=[...o];if(i.splice(t,1),n.splice(t,1),i.includes(e.title))throw new Error(\"Duplicate section title found: \".concat(e,\". Settings navigation sections must have unique section titles.\"));if(n.includes(e.id))throw new Error(\"Duplicate section id found: \".concat(e,\". Settings navigation sections must have unique section ids.\"))})),t},handleSettingsNavigationClick(e){this.linkClicked=!0,document.getElementById(\"settings-section_\"+e).scrollIntoView({behavior:\"smooth\",inline:\"nearest\"}),this.selectedSection=e,setTimeout((()=>{this.linkClicked=!1}),1e3)},handleCloseModal(){this.$emit(\"update:open\",!1),this.scroller.removeEventListener(\"scroll\",this.handleScroll),this.addedScrollListener=!1,this.scroller.scrollTop=0},handleScroll(){this.linkClicked||this.unfocusNavigationItem()},unfocusNavigationItem:r()((function(){this.selectedSection=\"\",document.activeElement.className.includes(\"navigation-list__link\")&&document.activeElement.blur()}),300),handleLinkKeydown(e,t){\"Enter\"===e.code&&this.handleSettingsNavigationClick(t)}},render(e){const t=()=>this.hasNavigation?[e(\"div\",{attrs:{class:\"app-settings__navigation\",role:\"tablist\",\"aria-label\":this.settingsNavigationAriaLabel}},[e(\"ul\",{attrs:{class:\"navigation-list\",role:\"tablist\"}},this.getSettingsNavigation(this.$slots.default).map((e=>a(e))))])]:[],a=t=>e(\"li\",{},[e(\"a\",{class:{\"navigation-list__link\":!0,\"navigation-list__link--active\":t.id===this.selectedSection},attrs:{role:\"tab\",\"aria-selected\":t.id===this.selectedSection,tabindex:\"0\"},on:{click:()=>this.handleSettingsNavigationClick(t.id),keydown:()=>this.handleLinkKeydown(event,t.id)}},t.title)]);return this.open?e(\"NcModal\",{class:[\"app-settings-modal\"],attrs:{container:this.container,size:\"large\",additionalTrapElements:this.additionalTrapElements},on:{close:()=>{this.handleCloseModal()}}},[e(\"div\",{attrs:{class:\"app-settings\"}},[e(\"h2\",{attrs:{class:\"app-settings__title\"}},this.title),e(\"div\",{attrs:{class:\"app-settings__wrapper\"}},[...t(),e(\"div\",{attrs:{class:\"app-settings__content\"},ref:\"settingsScroller\"},this.$slots.default)])])]):void 0}};var l=a(3379),c=a.n(l),d=a(7795),u=a.n(d),p=a(569),A=a.n(p),m=a(3565),h=a.n(m),g=a(9216),v=a.n(g),b=a(4589),C=a.n(b),f=a(5223),y={};y.styleTagTransform=C(),y.setAttributes=h(),y.insert=A().bind(null,\"head\"),y.domAPI=u(),y.insertStyleElement=v();c()(f.Z,y);f.Z&&f.Z.locals&&f.Z.locals;var k=a(1900),w=a(7984),S=a.n(w),x=(0,k.Z)(s,undefined,undefined,!1,null,\"549cf324\",null);\"function\"==typeof S()&&S()(x);const z=x.exports})(),o})()));\n//# sourceMappingURL=NcAppSettingsDialog.js.map","/*! For license information please see NcAppSettingsSection.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"NextcloudVue\",[],t):\"object\"==typeof exports?exports.NextcloudVue=t():(e.NextcloudVue=e.NextcloudVue||{},e.NextcloudVue[\"Components/NcAppSettingsSection\"]=t())}(self,(()=>(()=>{\"use strict\";var e={2746:(e,t,n)=>{n.d(t,{Z:()=>a});var o=n(7537),r=n.n(o),i=n(3645),s=n.n(i)()(r());s.push([e.id,\".material-design-icon[data-v-600605cc]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings-section[data-v-600605cc]{margin-bottom:80px}.app-settings-section__title[data-v-600605cc]{font-size:20px;margin:0;padding:20px 0;font-weight:bold;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcAppSettingsSection/NcAppSettingsSection.vue\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,uCACC,kBAAA,CACA,8CACC,cAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n.app-settings-section {\\n\\tmargin-bottom: 80px;\\n\\t&__title {\\n\\t\\tfont-size: 20px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 20px 0;\\n\\t\\tfont-weight: bold;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const a=s},3645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=\"\",o=void 0!==t[5];return t[4]&&(n+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(n+=\"@media \".concat(t[2],\" {\")),o&&(n+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),n+=e(t),o&&(n+=\"}\"),t[2]&&(n+=\"}\"),t[4]&&(n+=\"}\"),n})).join(\"\")},t.i=function(e,n,o,r,i){\"string\"==typeof e&&(e=[[null,e,void 0]]);var s={};if(o)for(var a=0;a0?\" \".concat(u[5]):\"\",\" {\").concat(u[1],\"}\")),u[5]=i),n&&(u[2]?(u[1]=\"@media \".concat(u[2],\" {\").concat(u[1],\"}\"),u[2]=n):u[2]=n),r&&(u[4]?(u[1]=\"@supports (\".concat(u[4],\") {\").concat(u[1],\"}\"),u[4]=r):u[4]=\"\".concat(r)),t.push(u))}},t}},7537:e=>{e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if(\"function\"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(o),i=\"/*# \".concat(r,\" */\");return[t].concat([i]).join(\"\\n\")}return[t].join(\"\\n\")}},3379:e=>{var t=[];function n(e){for(var n=-1,o=0;o{var t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");o.appendChild(n)}},9216:e=>{e.exports=function(e){var t=document.createElement(\"style\");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute(\"nonce\",t)}},7795:e=>{e.exports=function(e){if(\"undefined\"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var o=\"\";n.supports&&(o+=\"@supports (\".concat(n.supports,\") {\")),n.media&&(o+=\"@media \".concat(n.media,\" {\"));var r=void 0!==n.layer;r&&(o+=\"@layer\".concat(n.layer.length>0?\" \".concat(n.layer):\"\",\" {\")),o+=n.css,r&&(o+=\"}\"),n.media&&(o+=\"}\"),n.supports&&(o+=\"}\");var i=n.sourceMap;i&&\"undefined\"!=typeof btoa&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i)))),\" */\")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},1900:(e,t,n)=>{function o(e,t,n,o,r,i,s,a){var c,p=\"function\"==typeof e?e.options:e;if(t&&(p.render=t,p.staticRenderFns=n,p._compiled=!0),o&&(p.functional=!0),i&&(p._scopeId=\"data-v-\"+i),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},p._ssrRegister=c):r&&(c=a?function(){r.call(this,(p.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(p.functional){p._injectStyles=c;var u=p.render;p.render=function(e,t){return c.call(t),u(e,t)}}else{var l=p.beforeCreate;p.beforeCreate=l?[].concat(l,c):[c]}return{exports:e,options:p}}n.d(t,{Z:()=>o})}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={id:o,exports:{}};return e[o](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.nc=void 0;var o={};return(()=>{n.r(o),n.d(o,{default:()=>h});const e={name:\"NcAppSettingsSection\",props:{title:{type:String,required:!0},id:{type:String,required:!0,validator:e=>/^[a-z0-9\\-_]+$/.test(e)}},computed:{htmlId(){return\"settings-section_\"+this.id}}};var t=n(3379),r=n.n(t),i=n(7795),s=n.n(i),a=n(569),c=n.n(a),p=n(3565),u=n.n(p),l=n(9216),d=n.n(l),f=n(4589),v=n.n(f),A=n(2746),m={};m.styleTagTransform=v(),m.setAttributes=u(),m.insert=c().bind(null,\"head\"),m.domAPI=s(),m.insertStyleElement=d();r()(A.Z,m);A.Z&&A.Z.locals&&A.Z.locals;const h=(0,n(1900).Z)(e,(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"app-settings-section\",attrs:{id:e.htmlId}},[t(\"h3\",{staticClass:\"app-settings-section__title\"},[e._v(\"\\n\\t\\t\"+e._s(e.title)+\"\\n\\t\")]),e._v(\" \"),e._t(\"default\")],2)}),[],!1,null,\"600605cc\",null).exports})(),o})()));\n//# sourceMappingURL=NcAppSettingsSection.js.map","/*! For license information please see NcBreadcrumb.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"NextcloudVue\",[],t):\"object\"==typeof exports?exports.NextcloudVue=t():(e.NextcloudVue=e.NextcloudVue||{},e.NextcloudVue[\"Components/NcBreadcrumb\"]=t())}(self,(()=>(()=>{var e={644:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>F});var o=a(1631),i=a(2297),n=a(1205),r=a(932),s=a(2734),l=a.n(s),c=a(1441),u=a.n(c);const d=\".focusable\",m={name:\"NcActions\",components:{NcButton:o.default,DotsHorizontal:u(),NcPopover:i.default},props:{open:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},forceTitle:{type:Boolean,default:!1},menuTitle:{type:String,default:null},primary:{type:Boolean,default:!1},type:{type:String,validator:e=>-1!==[\"primary\",\"secondary\",\"tertiary\",\"tertiary-no-background\",\"tertiary-on-primary\",\"error\",\"warning\",\"success\"].indexOf(e),default:null},defaultIcon:{type:String,default:\"\"},ariaLabel:{type:String,default:(0,r.t)(\"Actions\")},ariaHidden:{type:Boolean,default:null},placement:{type:String,default:\"bottom\"},boundariesElement:{type:Element,default:()=>document.querySelector(\"body\")},container:{type:[String,Object,Element,Boolean],default:\"body\"},disabled:{type:Boolean,default:!1},inline:{type:Number,default:0}},emits:[\"update:open\",\"open\",\"update:open\",\"close\",\"focus\",\"blur\"],data(){return{opened:this.open,focusIndex:0,randomId:\"menu-\".concat((0,n.Z)())}},computed:{triggerBtnType(){return this.type||(this.primary?\"primary\":this.menuTitle?\"secondary\":\"tertiary\")}},watch:{open(e){e!==this.opened&&(this.opened=e)}},methods:{isValidSingleAction(e){var t,a,o,i,n;const r=null!==(t=null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(i=o.extendOptions)||void 0===i?void 0:i.name)&&void 0!==t?t:null==e||null===(n=e.componentOptions)||void 0===n?void 0:n.tag;return[\"NcActionButton\",\"NcActionLink\",\"NcActionRouter\"].includes(r)},openMenu(e){this.opened||(this.opened=!0,this.$emit(\"update:open\",!0),this.$emit(\"open\"))},closeMenu(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.opened&&(this.opened=!1,this.$refs.popover.clearFocusTrap({returnFocus:e}),this.$emit(\"update:open\",!1),this.$emit(\"close\"),this.opened=!1,this.focusIndex=0,this.$refs.menuButton.$el.focus())},onOpen(e){this.$nextTick((()=>{this.focusFirstAction(e)}))},onMouseFocusAction(e){if(document.activeElement===e.target)return;const t=e.target.closest(\"li\");if(t){const e=t.querySelector(d);if(e){const t=[...this.$refs.menu.querySelectorAll(d)].indexOf(e);t>-1&&(this.focusIndex=t,this.focusAction())}}},onKeydown(e){(38===e.keyCode||9===e.keyCode&&e.shiftKey)&&this.focusPreviousAction(e),(40===e.keyCode||9===e.keyCode&&!e.shiftKey)&&this.focusNextAction(e),33===e.keyCode&&this.focusFirstAction(e),34===e.keyCode&&this.focusLastAction(e),27===e.keyCode&&(this.closeMenu(),e.preventDefault())},removeCurrentActive(){const e=this.$refs.menu.querySelector(\"li.active\");e&&e.classList.remove(\"active\")},focusAction(){const e=this.$refs.menu.querySelectorAll(d)[this.focusIndex];if(e){this.removeCurrentActive();const t=e.closest(\"li.action\");e.focus(),t&&t.classList.add(\"active\")}},focusPreviousAction(e){this.opened&&(0===this.focusIndex?this.closeMenu():(this.preventIfEvent(e),this.focusIndex=this.focusIndex-1),this.focusAction())},focusNextAction(e){if(this.opened){const t=this.$refs.menu.querySelectorAll(d).length-1;this.focusIndex===t?this.closeMenu():(this.preventIfEvent(e),this.focusIndex=this.focusIndex+1),this.focusAction()}},focusFirstAction(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=0,this.focusAction())},focusLastAction(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=this.$refs.menu.querySelectorAll(d).length-1,this.focusAction())},preventIfEvent(e){e&&(e.preventDefault(),e.stopPropagation())},onFocus(e){this.$emit(\"focus\",e)},onBlur(e){this.$emit(\"blur\",e)}},render(e){const t=(this.$slots.default||[]).filter((e=>{var t,a,o,i;return(null==e||null===(t=e.componentOptions)||void 0===t?void 0:t.tag)||(null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(i=o.extendOptions)||void 0===i?void 0:i.name)})),a=t.every((e=>{var t,a,o,i,n,r,s,l;return\"NcActionLink\"===(null!==(t=null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(i=o.extendOptions)||void 0===i?void 0:i.name)&&void 0!==t?t:null==e||null===(n=e.componentOptions)||void 0===n?void 0:n.tag)&&(null==e||null===(r=e.componentOptions)||void 0===r||null===(s=r.propsData)||void 0===s||null===(l=s.href)||void 0===l?void 0:l.startsWith(window.location.origin))}));let o=t.filter(this.isValidSingleAction);if(this.forceMenu&&o.length>0&&this.inline>0&&(l().util.warn(\"Specifying forceMenu will ignore any inline actions rendering.\"),o=[]),0===t.length)return;const i=t=>{var a,o,i,n,r,s,l,c,u,d,m,p,g,h,v,A,b,f,C,y,k,w;const S=(null==t||null===(a=t.data)||void 0===a||null===(o=a.scopedSlots)||void 0===o||null===(i=o.icon())||void 0===i?void 0:i[0])||e(\"span\",{class:[\"icon\",null==t||null===(n=t.componentOptions)||void 0===n||null===(r=n.propsData)||void 0===r?void 0:r.icon]}),j=null==t||null===(s=t.componentOptions)||void 0===s||null===(l=s.listeners)||void 0===l?void 0:l.click,z=null==t||null===(c=t.componentOptions)||void 0===c||null===(u=c.children)||void 0===u||null===(d=u[0])||void 0===d||null===(m=d.text)||void 0===m||null===(p=m.trim)||void 0===p?void 0:p.call(m),N=(null==t||null===(g=t.componentOptions)||void 0===g||null===(h=g.propsData)||void 0===h?void 0:h.ariaLabel)||z,P=this.forceTitle?z:\"\";let x=null==t||null===(v=t.componentOptions)||void 0===v||null===(A=v.propsData)||void 0===A?void 0:A.title;return this.forceTitle||x||(x=z),e(\"NcButton\",{class:[\"action-item action-item--single\",null==t||null===(b=t.data)||void 0===b?void 0:b.staticClass,null==t||null===(f=t.data)||void 0===f?void 0:f.class],attrs:{\"aria-label\":N,title:x},ref:null==t||null===(C=t.data)||void 0===C?void 0:C.ref,props:{type:this.type||(P?\"secondary\":\"tertiary\"),disabled:this.disabled||(null==t||null===(y=t.componentOptions)||void 0===y||null===(k=y.propsData)||void 0===k?void 0:k.disabled),ariaHidden:this.ariaHidden,...null==t||null===(w=t.componentOptions)||void 0===w?void 0:w.propsData},on:{focus:this.onFocus,blur:this.onBlur,...!!j&&{click:e=>{j&&j(e)}}}},[e(\"template\",{slot:\"icon\"},[S]),P])},n=t=>{var o,i;const n=(null===(o=this.$slots.icon)||void 0===o?void 0:o[0])||(this.defaultIcon?e(\"span\",{class:[\"icon\",this.defaultIcon]}):e(\"DotsHorizontal\",{props:{size:20}}));return e(\"NcPopover\",{ref:\"popover\",props:{delay:0,handleResize:!0,shown:this.opened,placement:this.placement,boundary:this.boundariesElement,container:this.container,popoverBaseClass:\"action-item__popper\",setReturnFocus:null===(i=this.$refs.menuButton)||void 0===i?void 0:i.$el},attrs:{delay:0,handleResize:!0,shown:this.opened,placement:this.placement,boundary:this.boundariesElement,container:this.container,popoverBaseClass:\"action-item__popper\"},on:{show:this.openMenu,\"after-show\":this.onOpen,hide:this.closeMenu}},[e(\"NcButton\",{class:\"action-item__menutoggle\",props:{type:this.triggerBtnType,disabled:this.disabled,ariaHidden:this.ariaHidden},slot:\"trigger\",ref:\"menuButton\",attrs:{\"aria-haspopup\":a?null:\"menu\",\"aria-label\":this.ariaLabel,\"aria-controls\":this.opened?this.randomId:null,\"aria-expanded\":this.opened.toString()},on:{focus:this.onFocus,blur:this.onBlur}},[e(\"template\",{slot:\"icon\"},[n]),this.menuTitle]),e(\"div\",{class:{open:this.opened},attrs:{tabindex:\"-1\"},on:{keydown:this.onKeydown,mousemove:this.onMouseFocusAction},ref:\"menu\"},[e(\"ul\",{attrs:{id:this.randomId,tabindex:\"-1\",role:a?null:\"menu\"}},[t])])])};if(1===t.length&&1===o.length&&!this.forceMenu)return i(o[0]);if(o.length>0&&this.inline>0){const a=o.slice(0,this.inline),r=t.filter((e=>!a.includes(e)));return e(\"div\",{class:[\"action-items\",\"action-item--\".concat(this.triggerBtnType)]},[...a.map(i),r.length>0?e(\"div\",{class:[\"action-item\",{\"action-item--open\":this.opened}]},[n(r)]):null])}return e(\"div\",{class:[\"action-item action-item--default-popover\",\"action-item--\".concat(this.triggerBtnType),{\"action-item--open\":this.opened}]},[n(t)])}};var p=a(3379),g=a.n(p),h=a(7795),v=a.n(h),A=a(569),b=a.n(A),f=a(3565),C=a.n(f),y=a(9216),k=a.n(y),w=a(4589),S=a.n(w),j=a(8827),z={};z.styleTagTransform=S(),z.setAttributes=C(),z.insert=b().bind(null,\"head\"),z.domAPI=v(),z.insertStyleElement=k();g()(j.Z,z);j.Z&&j.Z.locals&&j.Z.locals;var N=a(5565),P={};P.styleTagTransform=S(),P.setAttributes=C(),P.insert=b().bind(null,\"head\"),P.domAPI=v(),P.insertStyleElement=k();g()(N.Z,P);N.Z&&N.Z.locals&&N.Z.locals;var x=a(1900),E=a(5727),T=a.n(E),B=(0,x.Z)(m,undefined,undefined,!1,null,\"20a3e950\",null);\"function\"==typeof T()&&T()(B);const F=B.exports},1631:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>k});const o={name:\"NcButton\",props:{disabled:{type:Boolean,default:!1},type:{type:String,validator:e=>-1!==[\"primary\",\"secondary\",\"tertiary\",\"tertiary-no-background\",\"tertiary-on-primary\",\"error\",\"warning\",\"success\"].indexOf(e),default:\"secondary\"},nativeType:{type:String,validator:e=>-1!==[\"submit\",\"reset\",\"button\"].indexOf(e),default:\"button\"},wide:{type:Boolean,default:!1},ariaLabel:{type:String,default:null},href:{type:String,default:null},download:{type:String,default:null},to:{type:[String,Object],default:null},exact:{type:Boolean,default:!1},ariaHidden:{type:Boolean,default:null}},render(e){var t,a,o,i,n,r=this;const s=null===(t=this.$slots.default)||void 0===t||null===(a=t[0])||void 0===a||null===(o=a.text)||void 0===o||null===(i=o.trim)||void 0===i?void 0:i.call(o),l=!!s,c=null===(n=this.$slots)||void 0===n?void 0:n.icon;s||this.ariaLabel||console.warn(\"You need to fill either the text or the ariaLabel props in the button component.\",{text:s,ariaLabel:this.ariaLabel},this);const u=function(){let{navigate:t,isActive:a,isExactActive:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(r.to||!r.href?\"button\":\"a\",{class:[\"button-vue\",{\"button-vue--icon-only\":c&&!l,\"button-vue--text-only\":l&&!c,\"button-vue--icon-and-text\":c&&l,[\"button-vue--vue-\".concat(r.type)]:r.type,\"button-vue--wide\":r.wide,active:a,\"router-link-exact-active\":o}],attrs:{\"aria-label\":r.ariaLabel,disabled:r.disabled,type:r.href?null:r.nativeType,role:r.href?\"button\":null,href:!r.to&&r.href?r.href:null,target:!r.to&&r.href?\"_self\":null,rel:!r.to&&r.href?\"nofollow noreferrer noopener\":null,download:!r.to&&r.href&&r.download?r.download:null,...r.$attrs},on:{...r.$listeners,click:e=>{var a,o;null===(a=r.$listeners)||void 0===a||null===(o=a.click)||void 0===o||o.call(a,e),null==t||t(e)}}},[e(\"span\",{class:\"button-vue__wrapper\"},[c?e(\"span\",{class:\"button-vue__icon\",attrs:{\"aria-hidden\":r.ariaHidden}},[r.$slots.icon]):null,l?e(\"span\",{class:\"button-vue__text\"},[s]):null])])};return this.to?e(\"router-link\",{props:{custom:!0,to:this.to,exact:this.exact},scopedSlots:{default:u}}):u()}};var i=a(3379),n=a.n(i),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),u=a(3565),d=a.n(u),m=a(9216),p=a.n(m),g=a(4589),h=a.n(g),v=a(7233),A={};A.styleTagTransform=h(),A.setAttributes=d(),A.insert=c().bind(null,\"head\"),A.domAPI=s(),A.insertStyleElement=p();n()(v.Z,A);v.Z&&v.Z.locals&&v.Z.locals;var b=a(1900),f=a(2102),C=a.n(f),y=(0,b.Z)(o,undefined,undefined,!1,null,\"488fcfba\",null);\"function\"==typeof C()&&C()(y);const k=y.exports},2297:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>z});var o=a(9454),i=a(4505),n=a(1206);const r={name:\"NcPopover\",components:{Dropdown:o.Dropdown},inheritAttrs:!1,props:{popoverBaseClass:{type:String,default:\"\"},focusTrap:{type:Boolean,default:!0},setReturnFocus:{default:void 0,type:[HTMLElement,SVGElement,String,Boolean]}},emits:[\"after-show\",\"after-hide\"],beforeDestroy(){this.clearFocusTrap()},methods:{async useFocusTrap(){var e,t;if(await this.$nextTick(),!this.focusTrap)return;const a=null===(e=this.$refs.popover)||void 0===e||null===(t=e.$refs.popperContent)||void 0===t?void 0:t.$el;a&&(this.$focusTrap=(0,i.createFocusTrap)(a,{escapeDeactivates:!1,allowOutsideClick:!0,setReturnFocus:this.setReturnFocus,trapStack:(0,n.L)()}),this.$focusTrap.activate())},clearFocusTrap(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var t;null===(t=this.$focusTrap)||void 0===t||t.deactivate(e),this.$focusTrap=null}catch(e){console.warn(e)}},afterShow(){this.$nextTick((()=>{this.$emit(\"after-show\"),this.useFocusTrap()}))},afterHide(){this.$emit(\"after-hide\"),this.clearFocusTrap()}}},s=r;var l=a(3379),c=a.n(l),u=a(7795),d=a.n(u),m=a(569),p=a.n(m),g=a(3565),h=a.n(g),v=a(9216),A=a.n(v),b=a(4589),f=a.n(b),C=a(1625),y={};y.styleTagTransform=f(),y.setAttributes=h(),y.insert=p().bind(null,\"head\"),y.domAPI=d(),y.insertStyleElement=A();c()(C.Z,y);C.Z&&C.Z.locals&&C.Z.locals;var k=a(1900),w=a(2405),S=a.n(w),j=(0,k.Z)(s,(function(){var e=this;return(0,e._self._c)(\"Dropdown\",e._g(e._b({ref:\"popover\",attrs:{distance:10,\"arrow-padding\":10,\"no-auto-focus\":!0,\"popper-class\":e.popoverBaseClass},on:{\"apply-show\":e.afterShow,\"apply-hide\":e.afterHide},scopedSlots:e._u([{key:\"popper\",fn:function(){return[e._t(\"default\")]},proxy:!0}],null,!0)},\"Dropdown\",e.$attrs,!1),e.$listeners),[e._t(\"trigger\")],2)}),[],!1,null,null,null);\"function\"==typeof S()&&S()(j);const z=j.exports},932:(e,t,a)=>{\"use strict\";a.d(t,{t:()=>r});var o=a(7931);const i=(0,o.getGettextBuilder)().detectLocale();[{locale:\"ar\",translations:{\"{tag} (invisible)\":\"{tag} (غير مرئي)\",\"{tag} (restricted)\":\"{tag} (مقيد)\",Actions:\"الإجراءات\",Activities:\"النشاطات\",\"Animals & Nature\":\"الحيوانات والطبيعة\",\"Anything shared with the same group of people will show up here\":\"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا\",\"Avatar of {displayName}\":\"صورة {displayName} الرمزية\",\"Avatar of {displayName}, {status}\":\"صورة {displayName} الرمزية، {status}\",\"Cancel changes\":\"إلغاء التغييرات\",\"Change title\":\"تغيير العنوان\",Choose:\"إختيار\",\"Clear text\":\"مسح النص\",Close:\"أغلق\",\"Close modal\":\"قفل الشرط\",\"Close navigation\":\"إغلاق المتصفح\",\"Close sidebar\":\"قفل الشريط الجانبي\",\"Confirm changes\":\"تأكيد التغييرات\",Custom:\"مخصص\",\"Edit item\":\"تعديل عنصر\",\"Error getting related resources\":\"خطأ في تحصيل مصادر ذات صلة\",\"External documentation for {title}\":\"الوثائق الخارجية لـ{title}\",Favorite:\"مفضلة\",Flags:\"الأعلام\",\"Food & Drink\":\"الطعام والشراب\",\"Frequently used\":\"كثيرا ما تستخدم\",Global:\"عالمي\",\"Go back to the list\":\"العودة إلى القائمة\",\"Hide password\":\"إخفاء كلمة السر\",\"Message limit of {count} characters reached\":\"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف\",\"More items …\":\"عناصر أخرى ...\",Next:\"التالي\",\"No emoji found\":\"لم يتم العثور على أي رمز تعبيري\",\"No results\":\"ليس هناك أية نتيجة\",Objects:\"الأشياء\",Open:\"فتح\",'Open link to \"{resourceTitle}\"':'فتح رابط إلى \"{resourceTitle}\"',\"Open navigation\":\"فتح المتصفح\",\"Password is secure\":\"كلمة السر مُؤمّنة\",\"Pause slideshow\":\"إيقاف العرض مؤقتًا\",\"People & Body\":\"الناس والجسم\",\"Pick an emoji\":\"اختر رمزًا تعبيريًا\",\"Please select a time zone:\":\"الرجاء تحديد المنطقة الزمنية:\",Previous:\"السابق\",\"Related resources\":\"مصادر ذات صلة\",Search:\"بحث\",\"Search results\":\"نتائج البحث\",\"Select a tag\":\"اختر علامة\",Settings:\"الإعدادات\",\"Settings navigation\":\"إعدادات المتصفح\",\"Show password\":\"أعرض كلمة السر\",\"Smileys & Emotion\":\"الوجوه و الرموز التعبيرية\",\"Start slideshow\":\"بدء العرض\",Submit:\"إرسال\",Symbols:\"الرموز\",\"Travel & Places\":\"السفر والأماكن\",\"Type to search time zone\":\"اكتب للبحث عن منطقة زمنية\",\"Unable to search the group\":\"تعذر البحث في المجموعة\",\"Undo changes\":\"التراجع عن التغييرات\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ...\"}},{locale:\"br\",translations:{\"{tag} (invisible)\":\"{tag} (diwelus)\",\"{tag} (restricted)\":\"{tag} (bevennet)\",Actions:\"Oberioù\",Activities:\"Oberiantizoù\",\"Animals & Nature\":\"Loened & Natur\",Choose:\"Dibab\",Close:\"Serriñ\",Custom:\"Personelañ\",Flags:\"Bannieloù\",\"Food & Drink\":\"Boued & Evajoù\",\"Frequently used\":\"Implijet alies\",Next:\"Da heul\",\"No emoji found\":\"Emoji ebet kavet\",\"No results\":\"Disoc'h ebet\",Objects:\"Traoù\",\"Pause slideshow\":\"Arsav an diaporama\",\"People & Body\":\"Tud & Korf\",\"Pick an emoji\":\"Choaz un emoji\",Previous:\"A-raok\",Search:\"Klask\",\"Search results\":\"Disoc'hoù an enklask\",\"Select a tag\":\"Choaz ur c'hlav\",Settings:\"Arventennoù\",\"Smileys & Emotion\":\"Smileyioù & Fromoù\",\"Start slideshow\":\"Kregiñ an diaporama\",Symbols:\"Arouezioù\",\"Travel & Places\":\"Beaj & Lec'hioù\",\"Unable to search the group\":\"Dibosupl eo klask ar strollad\"}},{locale:\"ca\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringit)\",Actions:\"Accions\",Activities:\"Activitats\",\"Animals & Nature\":\"Animals i natura\",\"Anything shared with the same group of people will show up here\":\"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancel·la els canvis\",\"Change title\":\"Canviar títol\",Choose:\"Tria\",\"Clear text\":\"Netejar text\",Close:\"Tanca\",\"Close modal\":\"Tancar el mode\",\"Close navigation\":\"Tanca la navegació\",\"Close sidebar\":\"Tancar la barra lateral\",\"Confirm changes\":\"Confirmeu els canvis\",Custom:\"Personalitzat\",\"Edit item\":\"Edita l'element\",\"Error getting related resources\":\"Error obtenint els recursos relacionats\",\"Error parsing svg\":\"Error en l'anàlisi del svg\",\"External documentation for {title}\":\"Documentació externa per a {title}\",Favorite:\"Preferit\",Flags:\"Marques\",\"Food & Drink\":\"Menjar i begudes\",\"Frequently used\":\"Utilitzats recentment\",Global:\"Global\",\"Go back to the list\":\"Torna a la llista\",\"Hide password\":\"Amagar contrasenya\",\"Message limit of {count} characters reached\":\"S'ha arribat al límit de {count} caràcters per missatge\",\"More items …\":\"Més artícles...\",Next:\"Següent\",\"No emoji found\":\"No s'ha trobat cap emoji\",\"No results\":\"Sense resultats\",Objects:\"Objectes\",Open:\"Obrir\",'Open link to \"{resourceTitle}\"':'Obrir enllaç a \"{resourceTitle}\"',\"Open navigation\":\"Obre la navegació\",\"Password is secure\":\"Contrasenya segura
\",\"Pause slideshow\":\"Atura la presentació\",\"People & Body\":\"Persones i cos\",\"Pick an emoji\":\"Trieu un emoji\",\"Please select a time zone:\":\"Seleccioneu una zona horària:\",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionats\",Search:\"Cerca\",\"Search results\":\"Resultats de cerca\",\"Select a tag\":\"Seleccioneu una etiqueta\",Settings:\"Paràmetres\",\"Settings navigation\":\"Navegació d'opcions\",\"Show password\":\"Mostrar contrasenya\",\"Smileys & Emotion\":\"Cares i emocions\",\"Start slideshow\":\"Inicia la presentació\",Submit:\"Envia\",Symbols:\"Símbols\",\"Travel & Places\":\"Viatges i llocs\",\"Type to search time zone\":\"Escriviu per cercar la zona horària\",\"Unable to search the group\":\"No es pot cercar el grup\",\"Undo changes\":\"Desfés els canvis\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escriu missatge, fes servir \"@\" per esmentar algú, fes servir \":\" per autocompletar emojis...'}},{locale:\"cs_CZ\",translations:{\"{tag} (invisible)\":\"{tag} (neviditelné)\",\"{tag} (restricted)\":\"{tag} (omezené)\",Actions:\"Akce\",Activities:\"Aktivity\",\"Animals & Nature\":\"Zvířata a příroda\",\"Anything shared with the same group of people will show up here\":\"Cokoli nasdíleného stejné skupině lidí se zobrazí zde\",\"Avatar of {displayName}\":\"Zástupný obrázek uživatele {displayName}\",\"Avatar of {displayName}, {status}\":\"Zástupný obrázek uživatele {displayName}, {status}\",\"Cancel changes\":\"Zrušit změny\",\"Change title\":\"Změnit nadpis\",Choose:\"Zvolit\",\"Clear text\":\"Čitelný text\",Close:\"Zavřít\",\"Close modal\":\"Zavřít dialogové okno\",\"Close navigation\":\"Zavřít navigaci\",\"Close sidebar\":\"Zavřít postranní panel\",\"Confirm changes\":\"Potvrdit změny\",Custom:\"Uživatelsky určené\",\"Edit item\":\"Upravit položku\",\"Error getting related resources\":\"Chyba při získávání souvisejících prostředků\",\"Error parsing svg\":\"Chyba při zpracovávání svg\",\"External documentation for {title}\":\"Externí dokumentace k {title}\",Favorite:\"Oblíbené\",Flags:\"Příznaky\",\"Food & Drink\":\"Jídlo a pití\",\"Frequently used\":\"Často používané\",Global:\"Globální\",\"Go back to the list\":\"Jít zpět na seznam\",\"Hide password\":\"Skrýt heslo\",\"Message limit of {count} characters reached\":\"Dosaženo limitu počtu ({count}) znaků zprávy\",\"More items …\":\"Další položky…\",Next:\"Následující\",\"No emoji found\":\"Nenalezeno žádné emoji\",\"No results\":\"Nic nenalezeno\",Objects:\"Objekty\",Open:\"Otevřít\",'Open link to \"{resourceTitle}\"':\"Otevřít odkaz na „{resourceTitle}“\",\"Open navigation\":\"Otevřít navigaci\",\"Password is secure\":\"Heslo je bezpečné\",\"Pause slideshow\":\"Pozastavit prezentaci\",\"People & Body\":\"Lidé a tělo\",\"Pick an emoji\":\"Vybrat emoji\",\"Please select a time zone:\":\"Vyberte časovou zónu:\",Previous:\"Předchozí\",\"Related resources\":\"Související prostředky\",Search:\"Hledat\",\"Search results\":\"Výsledky hledání\",\"Select a tag\":\"Vybrat štítek\",Settings:\"Nastavení\",\"Settings navigation\":\"Pohyb po nastavení\",\"Show password\":\"Zobrazit heslo\",\"Smileys & Emotion\":\"Úsměvy a emoce\",\"Start slideshow\":\"Spustit prezentaci\",Submit:\"Odeslat\",Symbols:\"Symboly\",\"Travel & Places\":\"Cestování a místa\",\"Type to search time zone\":\"Psaním vyhledejte časovou zónu\",\"Unable to search the group\":\"Nedaří se hledat skupinu\",\"Undo changes\":\"Vzít změny zpět\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':\"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…\"}},{locale:\"da\",translations:{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (begrænset)\",Actions:\"Handlinger\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Dyr & Natur\",\"Anything shared with the same group of people will show up here\":\"Alt der deles med samme gruppe af personer vil vises her\",\"Avatar of {displayName}\":\"Avatar af {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar af {displayName}, {status}\",\"Cancel changes\":\"Annuller ændringer\",\"Change title\":\"Ret titel\",Choose:\"Vælg\",\"Clear text\":\"Ryd tekst\",Close:\"Luk\",\"Close modal\":\"Luk vindue\",\"Close navigation\":\"Luk navigation\",\"Close sidebar\":\"Luk sidepanel\",\"Confirm changes\":\"Bekræft ændringer\",Custom:\"Brugerdefineret\",\"Edit item\":\"Rediger emne\",\"Error getting related resources\":\"Kunne ikke hente tilknyttede data\",\"Error parsing svg\":\"Fejl ved analysering af svg\",\"External documentation for {title}\":\"Ekstern dokumentation for {title}\",Favorite:\"Favorit\",Flags:\"Flag\",\"Food & Drink\":\"Mad & Drikke\",\"Frequently used\":\"Ofte brugt\",Global:\"Global\",\"Go back to the list\":\"Tilbage til listen\",\"Hide password\":\"Skjul kodeord\",\"Message limit of {count} characters reached\":\"Begrænsning på {count} tegn er nået\",\"More items …\":\"Mere ...\",Next:\"Videre\",\"No emoji found\":\"Ingen emoji fundet\",\"No results\":\"Ingen resultater\",Objects:\"Objekter\",Open:\"Åbn\",'Open link to \"{resourceTitle}\"':'Åbn link til \"{resourceTitle}\"',\"Open navigation\":\"Åbn navigation\",\"Password is secure\":\"Kodeordet er sikkert\",\"Pause slideshow\":\"Suspender fremvisning\",\"People & Body\":\"Mennesker & Menneskekroppen\",\"Pick an emoji\":\"Vælg en emoji\",\"Please select a time zone:\":\"Vælg venligst en tidszone:\",Previous:\"Forrige\",\"Related resources\":\"Relaterede emner\",Search:\"Søg\",\"Search results\":\"Søgeresultater\",\"Select a tag\":\"Vælg et mærke\",Settings:\"Indstillinger\",\"Settings navigation\":\"Naviger i indstillinger\",\"Show password\":\"Vis kodeord\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start fremvisning\",Submit:\"Send\",Symbols:\"Symboler\",\"Travel & Places\":\"Rejser & Rejsemål\",\"Type to search time zone\":\"Indtast for at søge efter tidszone\",\"Unable to search the group\":\"Kan ikke søge på denne gruppe\",\"Undo changes\":\"Fortryd ændringer\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv besked, brug \"@\" for at nævne nogen, brug \":\" til emoji-autofuldførelse ...'}},{locale:\"de\",translations:{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",Actions:\"Aktionen\",Activities:\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Anything shared with the same group of people will show up here\":\"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt\",\"Avatar of {displayName}\":\"Avatar von {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar von {displayName}, {status}\",\"Cancel changes\":\"Änderungen verwerfen\",\"Change title\":\"Titel ändern\",Choose:\"Auswählen\",\"Clear text\":\"Klartext\",Close:\"Schließen\",\"Close modal\":\"Modal schließen\",\"Close navigation\":\"Navigation schließen\",\"Close sidebar\":\"Seitenleiste schließen\",\"Confirm changes\":\"Änderungen bestätigen\",Custom:\"Benutzerdefiniert\",\"Edit item\":\"Objekt bearbeiten\",\"Error getting related resources\":\"Fehler beim Abrufen verwandter Ressourcen\",\"Error parsing svg\":\"Fehler beim Einlesen der SVG\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",Favorite:\"Favorit\",Flags:\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",Global:\"Global\",\"Go back to the list\":\"Zurück zur Liste\",\"Hide password\":\"Passwort verbergen\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"More items …\":\"Weitere Elemente …\",Next:\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",Objects:\"Gegenstände\",Open:\"Öffnen\",'Open link to \"{resourceTitle}\"':'Link zu \"{resourceTitle}\" öffnen',\"Open navigation\":\"Navigation öffnen\",\"Password is secure\":\"Passwort ist sicher\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Please select a time zone:\":\"Bitte wählen Sie eine Zeitzone:\",Previous:\"Vorherige\",\"Related resources\":\"Verwandte Ressourcen\",Search:\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",Settings:\"Einstellungen\",\"Settings navigation\":\"Einstellungen für die Navigation\",\"Show password\":\"Passwort anzeigen\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",Submit:\"Einreichen\",Symbols:\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Type to search time zone\":\"Tippen, um Zeitzone zu suchen\",\"Unable to search the group\":\"Die Gruppe konnte nicht durchsucht werden\",\"Undo changes\":\"Änderungen rückgängig machen\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Nachricht schreiben, \"@\" um jemanden zu erwähnen, \":\" für die automatische Vervollständigung von Emojis …'}},{locale:\"de_DE\",translations:{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",Actions:\"Aktionen\",Activities:\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Anything shared with the same group of people will show up here\":\"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt\",\"Avatar of {displayName}\":\"Avatar von {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar von {displayName}, {status}\",\"Cancel changes\":\"Änderungen verwerfen\",\"Change title\":\"Titel ändern\",Choose:\"Auswählen\",\"Clear text\":\"Klartext\",Close:\"Schließen\",\"Close modal\":\"Modal schließen\",\"Close navigation\":\"Navigation schließen\",\"Close sidebar\":\"Seitenleiste schließen\",\"Confirm changes\":\"Änderungen bestätigen\",Custom:\"Benutzerdefiniert\",\"Edit item\":\"Objekt bearbeiten\",\"Error getting related resources\":\"Fehler beim Abrufen verwandter Ressourcen\",\"Error parsing svg\":\"Fehler beim Einlesen der SVG\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",Favorite:\"Favorit\",Flags:\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",Global:\"Global\",\"Go back to the list\":\"Zurück zur Liste\",\"Hide password\":\"Passwort verbergen\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"More items …\":\"Weitere Elemente …\",Next:\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",Objects:\"Objekte\",Open:\"Öffnen\",'Open link to \"{resourceTitle}\"':'Link zu \"{resourceTitle}\" öffnen',\"Open navigation\":\"Navigation öffnen\",\"Password is secure\":\"Passwort ist sicher\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Please select a time zone:\":\"Bitte eine Zeitzone auswählen:\",Previous:\"Vorherige\",\"Related resources\":\"Verwandte Ressourcen\",Search:\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",Settings:\"Einstellungen\",\"Settings navigation\":\"Einstellungen für die Navigation\",\"Show password\":\"Passwort anzeigen\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",Submit:\"Einreichen\",Symbols:\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Type to search time zone\":\"Tippen, um eine Zeitzone zu suchen\",\"Unable to search the group\":\"Die Gruppe kann nicht durchsucht werden\",\"Undo changes\":\"Änderungen rückgängig machen\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Nachricht schreiben, \"@\" um jemanden zu erwähnen, \":\" für die automatische Vervollständigung von Emojis …'}},{locale:\"el\",translations:{\"{tag} (invisible)\":\"{tag} (αόρατο)\",\"{tag} (restricted)\":\"{tag} (περιορισμένο)\",Actions:\"Ενέργειες\",Activities:\"Δραστηριότητες\",\"Animals & Nature\":\"Ζώα & Φύση\",\"Anything shared with the same group of people will show up here\":\"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ\",\"Avatar of {displayName}\":\"Άβαταρ του {displayName}\",\"Avatar of {displayName}, {status}\":\"Άβαταρ του {displayName}, {status}\",\"Cancel changes\":\"Ακύρωση αλλαγών\",\"Change title\":\"Αλλαγή τίτλου\",Choose:\"Επιλογή\",\"Clear text\":\"Εκκαθάριση κειμένου\",Close:\"Κλείσιμο\",\"Close modal\":\"Βοηθητικό κλείσιμο\",\"Close navigation\":\"Κλείσιμο πλοήγησης\",\"Close sidebar\":\"Κλείσιμο πλευρικής μπάρας\",\"Confirm changes\":\"Επιβεβαίωση αλλαγών\",Custom:\"Προσαρμογή\",\"Edit item\":\"Επεξεργασία\",\"Error getting related resources\":\"Σφάλμα λήψης σχετικών πόρων\",\"Error parsing svg\":\"Σφάλμα ανάλυσης svg\",\"External documentation for {title}\":\"Εξωτερική τεκμηρίωση για {title}\",Favorite:\"Αγαπημένα\",Flags:\"Σημαίες\",\"Food & Drink\":\"Φαγητό & Ποτό\",\"Frequently used\":\"Συχνά χρησιμοποιούμενο\",Global:\"Καθολικό\",\"Go back to the list\":\"Επιστροφή στην αρχική λίστα \",\"Hide password\":\"Απόκρυψη κωδικού πρόσβασης\",\"Message limit of {count} characters reached\":\"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος\",\"More items …\":\"Περισσότερα στοιχεία …\",Next:\"Επόμενο\",\"No emoji found\":\"Δεν βρέθηκε emoji\",\"No results\":\"Κανένα αποτέλεσμα\",Objects:\"Αντικείμενα\",Open:\"Άνοιγμα\",'Open link to \"{resourceTitle}\"':'Άνοιγμα συνδέσμου στο \"{resourceTitle}\"',\"Open navigation\":\"Άνοιγμα πλοήγησης\",\"Password is secure\":\"Ο κωδικός πρόσβασης είναι ασφαλής\",\"Pause slideshow\":\"Παύση προβολής διαφανειών\",\"People & Body\":\"Άνθρωποι & Σώμα\",\"Pick an emoji\":\"Επιλέξτε ένα emoji\",\"Please select a time zone:\":\"Παρακαλούμε επιλέξτε μια ζώνη ώρας:\",Previous:\"Προηγούμενο\",\"Related resources\":\"Σχετικοί πόροι\",Search:\"Αναζήτηση\",\"Search results\":\"Αποτελέσματα αναζήτησης\",\"Select a tag\":\"Επιλογή ετικέτας\",Settings:\"Ρυθμίσεις\",\"Settings navigation\":\"Πλοήγηση ρυθμίσεων\",\"Show password\":\"Εμφάνιση κωδικού πρόσβασης\",\"Smileys & Emotion\":\"Φατσούλες & Συναίσθημα\",\"Start slideshow\":\"Έναρξη προβολής διαφανειών\",Submit:\"Υποβολή\",Symbols:\"Σύμβολα\",\"Travel & Places\":\"Ταξίδια & Τοποθεσίες\",\"Type to search time zone\":\"Πληκτρολογήστε για αναζήτηση ζώνης ώρας\",\"Unable to search the group\":\"Δεν είναι δυνατή η αναζήτηση της ομάδας\",\"Undo changes\":\"Αναίρεση Αλλαγών\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε \"@\" για να αναφέρετε κάποιον, χρησιμοποιείστε \":\" για αυτόματη συμπλήρωση emoji …'}},{locale:\"en_GB\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restricted)\",Actions:\"Actions\",Activities:\"Activities\",\"Animals & Nature\":\"Animals & Nature\",\"Anything shared with the same group of people will show up here\":\"Anything shared with the same group of people will show up here\",\"Avatar of {displayName}\":\"Avatar of {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar of {displayName}, {status}\",\"Cancel changes\":\"Cancel changes\",\"Change title\":\"Change title\",Choose:\"Choose\",\"Clear text\":\"Clear text\",Close:\"Close\",\"Close modal\":\"Close modal\",\"Close navigation\":\"Close navigation\",\"Close sidebar\":\"Close sidebar\",\"Confirm changes\":\"Confirm changes\",Custom:\"Custom\",\"Edit item\":\"Edit item\",\"Error getting related resources\":\"Error getting related resources\",\"Error parsing svg\":\"Error parsing svg\",\"External documentation for {title}\":\"External documentation for {title}\",Favorite:\"Favourite\",Flags:\"Flags\",\"Food & Drink\":\"Food & Drink\",\"Frequently used\":\"Frequently used\",Global:\"Global\",\"Go back to the list\":\"Go back to the list\",\"Hide password\":\"Hide password\",\"Message limit of {count} characters reached\":\"Message limit of {count} characters reached\",\"More items …\":\"More items …\",Next:\"Next\",\"No emoji found\":\"No emoji found\",\"No results\":\"No results\",Objects:\"Objects\",Open:\"Open\",'Open link to \"{resourceTitle}\"':'Open link to \"{resourceTitle}\"',\"Open navigation\":\"Open navigation\",\"Password is secure\":\"Password is secure\",\"Pause slideshow\":\"Pause slideshow\",\"People & Body\":\"People & Body\",\"Pick an emoji\":\"Pick an emoji\",\"Please select a time zone:\":\"Please select a time zone:\",Previous:\"Previous\",\"Related resources\":\"Related resources\",Search:\"Search\",\"Search results\":\"Search results\",\"Select a tag\":\"Select a tag\",Settings:\"Settings\",\"Settings navigation\":\"Settings navigation\",\"Show password\":\"Show password\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start slideshow\",Submit:\"Submit\",Symbols:\"Symbols\",\"Travel & Places\":\"Travel & Places\",\"Type to search time zone\":\"Type to search time zone\",\"Unable to search the group\":\"Unable to search the group\",\"Undo changes\":\"Undo changes\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …'}},{locale:\"eo\",translations:{\"{tag} (invisible)\":\"{tag} (kaŝita)\",\"{tag} (restricted)\":\"{tag} (limigita)\",Actions:\"Agoj\",Activities:\"Aktiveco\",\"Animals & Nature\":\"Bestoj & Naturo\",Choose:\"Elektu\",Close:\"Fermu\",Custom:\"Propra\",Flags:\"Flagoj\",\"Food & Drink\":\"Manĝaĵo & Trinkaĵo\",\"Frequently used\":\"Ofte uzataj\",\"Message limit of {count} characters reached\":\"La limo je {count} da literoj atingita\",Next:\"Sekva\",\"No emoji found\":\"La emoĝio forestas\",\"No results\":\"La rezulto forestas\",Objects:\"Objektoj\",\"Pause slideshow\":\"Payzi bildprezenton\",\"People & Body\":\"Homoj & Korpo\",\"Pick an emoji\":\"Elekti emoĝion \",Previous:\"Antaŭa\",Search:\"Serĉi\",\"Search results\":\"Serĉrezultoj\",\"Select a tag\":\"Elektu etikedon\",Settings:\"Agordo\",\"Settings navigation\":\"Agorda navigado\",\"Smileys & Emotion\":\"Ridoj kaj Emocioj\",\"Start slideshow\":\"Komenci bildprezenton\",Symbols:\"Signoj\",\"Travel & Places\":\"Vojaĵoj & Lokoj\",\"Unable to search the group\":\"Ne eblas serĉi en la grupo\",\"Write message, @ to mention someone …\":\"Mesaĝi, uzu @ por mencii iun ...\"}},{locale:\"es\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringido)\",Actions:\"Acciones\",Activities:\"Actividades\",\"Animals & Nature\":\"Animales y naturaleza\",\"Anything shared with the same group of people will show up here\":\"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancelar cambios\",\"Change title\":\"Cambiar título\",Choose:\"Elegir\",\"Clear text\":\"Limpiar texto\",Close:\"Cerrar\",\"Close modal\":\"Cerrar modal\",\"Close navigation\":\"Cerrar navegación\",\"Close sidebar\":\"Cerrar barra lateral\",\"Confirm changes\":\"Confirmar cambios\",Custom:\"Personalizado\",\"Edit item\":\"Editar elemento\",\"Error getting related resources\":\"Se encontró un error al obtener los recursos relacionados\",\"Error parsing svg\":\"Error procesando svg\",\"External documentation for {title}\":\"Documentacion externa de {title}\",Favorite:\"Favorito\",Flags:\"Banderas\",\"Food & Drink\":\"Comida y bebida\",\"Frequently used\":\"Usado con frecuenca\",Global:\"Global\",\"Go back to the list\":\"Volver a la lista\",\"Hide password\":\"Ocultar contraseña\",\"Message limit of {count} characters reached\":\"El mensaje ha alcanzado el límite de {count} caracteres\",\"More items …\":\"Más ítems...\",Next:\"Siguiente\",\"No emoji found\":\"No hay ningún emoji\",\"No results\":\" Ningún resultado\",Objects:\"Objetos\",Open:\"Abrir\",'Open link to \"{resourceTitle}\"':'Abrir enlace a \"{resourceTitle}\"',\"Open navigation\":\"Abrir navegación\",\"Password is secure\":\"La contraseña es segura\",\"Pause slideshow\":\"Pausar la presentación \",\"People & Body\":\"Personas y cuerpos\",\"Pick an emoji\":\"Elegir un emoji\",\"Please select a time zone:\":\"Por favor elige un huso de horario:\",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionados\",Search:\"Buscar\",\"Search results\":\"Resultados de la búsqueda\",\"Select a tag\":\"Seleccione una etiqueta\",Settings:\"Ajustes\",\"Settings navigation\":\"Navegación por ajustes\",\"Show password\":\"Mostrar contraseña\",\"Smileys & Emotion\":\"Smileys y emoticonos\",\"Start slideshow\":\"Iniciar la presentación\",Submit:\"Enviar\",Symbols:\"Símbolos\",\"Travel & Places\":\"Viajes y lugares\",\"Type to search time zone\":\"Escribe para buscar un huso de horario\",\"Unable to search the group\":\"No es posible buscar en el grupo\",\"Undo changes\":\"Deshacer cambios\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escribir mensaje, utilice \"@\" para mencionar a alguien, utilice \":\" para autocompletado de emojis ...'}},{locale:\"eu\",translations:{\"{tag} (invisible)\":\"{tag} (ikusezina)\",\"{tag} (restricted)\":\"{tag} (mugatua)\",Actions:\"Ekintzak\",Activities:\"Jarduerak\",\"Animals & Nature\":\"Animaliak eta Natura\",\"Anything shared with the same group of people will show up here\":\"Pertsona-talde berarekin partekatutako edozer agertuko da hemen\",\"Avatar of {displayName}\":\"{displayName}-(e)n irudia\",\"Avatar of {displayName}, {status}\":\"{displayName} -(e)n irudia, {status}\",\"Cancel changes\":\"Ezeztatu aldaketak\",\"Change title\":\"Aldatu titulua\",Choose:\"Aukeratu\",\"Clear text\":\"Garbitu testua\",Close:\"Itxi\",\"Close modal\":\"Itxi modala\",\"Close navigation\":\"Itxi nabigazioa\",\"Close sidebar\":\"Itxi albo-barra\",\"Confirm changes\":\"Baieztatu aldaketak\",Custom:\"Pertsonalizatua\",\"Edit item\":\"Editatu elementua\",\"Error getting related resources\":\"Errorea erlazionatutako baliabideak lortzerakoan\",\"Error parsing svg\":\"Errore bat gertatu da svg-a analizatzean\",\"External documentation for {title}\":\"Kanpoko dokumentazioa {title}(r)entzat\",Favorite:\"Gogokoa\",Flags:\"Banderak\",\"Food & Drink\":\"Janaria eta edariak\",\"Frequently used\":\"Askotan erabilia\",Global:\"Globala\",\"Go back to the list\":\"Bueltatu zerrendara\",\"Hide password\":\"Ezkutatu pasahitza\",\"Message limit of {count} characters reached\":\"Mezuaren {count} karaketere-limitera heldu zara\",\"More items …\":\"Elementu gehiago …\",Next:\"Hurrengoa\",\"No emoji found\":\"Ez da emojirik aurkitu\",\"No results\":\"Emaitzarik ez\",Objects:\"Objektuak\",Open:\"Ireki\",'Open link to \"{resourceTitle}\"':'Ireki esteka: \"{resourceTitle}\"',\"Open navigation\":\"Ireki nabigazioa\",\"Password is secure\":\"Pasahitza segurua da\",\"Pause slideshow\":\"Pausatu diaporama\",\"People & Body\":\"Jendea eta gorputza\",\"Pick an emoji\":\"Hautatu emoji bat\",\"Please select a time zone:\":\"Mesedez hautatu ordu-zona bat:\",Previous:\"Aurrekoa\",\"Related resources\":\"Erlazionatutako baliabideak\",Search:\"Bilatu\",\"Search results\":\"Bilaketa emaitzak\",\"Select a tag\":\"Hautatu etiketa bat\",Settings:\"Ezarpenak\",\"Settings navigation\":\"Nabigazio ezarpenak\",\"Show password\":\"Erakutsi pasahitza\",\"Smileys & Emotion\":\"Smileyak eta emozioa\",\"Start slideshow\":\"Hasi diaporama\",Submit:\"Bidali\",Symbols:\"Sinboloak\",\"Travel & Places\":\"Bidaiak eta lekuak\",\"Type to search time zone\":\"Idatzi ordu-zona bat bilatzeko\",\"Unable to search the group\":\"Ezin izan da taldea bilatu\",\"Undo changes\":\"Aldaketak desegin\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Idatzi mezua, erabili \"@\" norbait aipatzeko, erabili \":\" emojiak automatikoki osatzeko...'}},{locale:\"fi_FI\",translations:{\"{tag} (invisible)\":\"{tag} (näkymätön)\",\"{tag} (restricted)\":\"{tag} (rajoitettu)\",Actions:\"Toiminnot\",Activities:\"Aktiviteetit\",\"Animals & Nature\":\"Eläimet & luonto\",\"Avatar of {displayName}\":\"Käyttäjän {displayName} avatar\",\"Avatar of {displayName}, {status}\":\"Käyttäjän {displayName} avatar, {status}\",\"Cancel changes\":\"Peruuta muutokset\",Choose:\"Valitse\",Close:\"Sulje\",\"Close navigation\":\"Sulje navigaatio\",\"Confirm changes\":\"Vahvista muutokset\",Custom:\"Mukautettu\",\"Edit item\":\"Muokkaa kohdetta\",\"External documentation for {title}\":\"Ulkoinen dokumentaatio kohteelle {title}\",Flags:\"Liput\",\"Food & Drink\":\"Ruoka & juoma\",\"Frequently used\":\"Usein käytetyt\",Global:\"Yleinen\",\"Go back to the list\":\"Siirry takaisin listaan\",\"Message limit of {count} characters reached\":\"Viestin merkken enimmäisimäärä {count} täynnä \",Next:\"Seuraava\",\"No emoji found\":\"Emojia ei löytynyt\",\"No results\":\"Ei tuloksia\",Objects:\"Esineet & asiat\",\"Open navigation\":\"Avaa navigaatio\",\"Pause slideshow\":\"Keskeytä diaesitys\",\"People & Body\":\"Ihmiset & keho\",\"Pick an emoji\":\"Valitse emoji\",\"Please select a time zone:\":\"Valitse aikavyöhyke:\",Previous:\"Edellinen\",Search:\"Etsi\",\"Search results\":\"Hakutulokset\",\"Select a tag\":\"Valitse tagi\",Settings:\"Asetukset\",\"Settings navigation\":\"Asetusnavigaatio\",\"Smileys & Emotion\":\"Hymiöt & tunteet\",\"Start slideshow\":\"Aloita diaesitys\",Submit:\"Lähetä\",Symbols:\"Symbolit\",\"Travel & Places\":\"Matkustus & kohteet\",\"Type to search time zone\":\"Kirjoita etsiäksesi aikavyöhyke\",\"Unable to search the group\":\"Ryhmää ei voi hakea\",\"Undo changes\":\"Kumoa muutokset\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…\"}},{locale:\"fr\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restreint)\",Actions:\"Actions\",Activities:\"Activités\",\"Animals & Nature\":\"Animaux & Nature\",\"Anything shared with the same group of people will show up here\":\"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Annuler les modifications\",\"Change title\":\"Modifier le titre\",Choose:\"Choisir\",\"Clear text\":\"Effacer le texte\",Close:\"Fermer\",\"Close modal\":\"Fermer la fenêtre\",\"Close navigation\":\"Fermer la navigation\",\"Close sidebar\":\"Fermer la barre latérale\",\"Confirm changes\":\"Confirmer les modifications\",Custom:\"Personnalisé\",\"Edit item\":\"Éditer l'élément\",\"Error getting related resources\":\"Erreur à la récupération des ressources liées\",\"Error parsing svg\":\"Erreur d'analyse SVG\",\"External documentation for {title}\":\"Documentation externe pour {title}\",Favorite:\"Favori\",Flags:\"Drapeaux\",\"Food & Drink\":\"Nourriture & Boissons\",\"Frequently used\":\"Utilisés fréquemment\",Global:\"Global\",\"Go back to the list\":\"Retourner à la liste\",\"Hide password\":\"Cacher le mot de passe\",\"Message limit of {count} characters reached\":\"Limite de messages de {count} caractères atteinte\",\"More items …\":\"Plus d'éléments...\",Next:\"Suivant\",\"No emoji found\":\"Pas d’émoji trouvé\",\"No results\":\"Aucun résultat\",Objects:\"Objets\",Open:\"Ouvrir\",'Open link to \"{resourceTitle}\"':'Ouvrir le lien vers \"{resourceTitle}\"',\"Open navigation\":\"Ouvrir la navigation\",\"Password is secure\":\"Le mot de passe est sécurisé\",\"Pause slideshow\":\"Mettre le diaporama en pause\",\"People & Body\":\"Personnes & Corps\",\"Pick an emoji\":\"Choisissez un émoji\",\"Please select a time zone:\":\"Sélectionnez un fuseau horaire : \",Previous:\"Précédent\",\"Related resources\":\"Ressources liées\",Search:\"Chercher\",\"Search results\":\"Résultats de recherche\",\"Select a tag\":\"Sélectionnez une balise\",Settings:\"Paramètres\",\"Settings navigation\":\"Navigation dans les paramètres\",\"Show password\":\"Afficher le mot de passe\",\"Smileys & Emotion\":\"Smileys & Émotions\",\"Start slideshow\":\"Démarrer le diaporama\",Submit:\"Valider\",Symbols:\"Symboles\",\"Travel & Places\":\"Voyage & Lieux\",\"Type to search time zone\":\"Saisissez les premiers lettres pour rechercher un fuseau horaire\",\"Unable to search the group\":\"Impossible de chercher le groupe\",\"Undo changes\":\"Annuler les changements\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Écrire un message, utiliser \"@\" pour mentionner une personne, \":\" pour l\\'autocomplétion des émojis...'}},{locale:\"gl\",translations:{\"{tag} (invisible)\":\"{tag} (invisíbel)\",\"{tag} (restricted)\":\"{tag} (restrinxido)\",Actions:\"Accións\",Activities:\"Actividades\",\"Animals & Nature\":\"Animais e natureza\",\"Cancel changes\":\"Cancelar os cambios\",Choose:\"Escoller\",Close:\"Pechar\",\"Confirm changes\":\"Confirma os cambios\",Custom:\"Personalizado\",\"External documentation for {title}\":\"Documentación externa para {title}\",Flags:\"Bandeiras\",\"Food & Drink\":\"Comida e bebida\",\"Frequently used\":\"Usado con frecuencia\",\"Message limit of {count} characters reached\":\"Acadouse o límite de {count} caracteres por mensaxe\",Next:\"Seguinte\",\"No emoji found\":\"Non se atopou ningún «emoji»\",\"No results\":\"Sen resultados\",Objects:\"Obxectos\",\"Pause slideshow\":\"Pausar o diaporama\",\"People & Body\":\"Persoas e corpo\",\"Pick an emoji\":\"Escolla un «emoji»\",Previous:\"Anterir\",Search:\"Buscar\",\"Search results\":\"Resultados da busca\",\"Select a tag\":\"Seleccione unha etiqueta\",Settings:\"Axustes\",\"Settings navigation\":\"Navegación polos axustes\",\"Smileys & Emotion\":\"Sorrisos e emocións\",\"Start slideshow\":\"Iniciar o diaporama\",Submit:\"Enviar\",Symbols:\"Símbolos\",\"Travel & Places\":\"Viaxes e lugares\",\"Unable to search the group\":\"Non foi posíbel buscar o grupo\",\"Write message, @ to mention someone …\":\"Escriba a mensaxe, @ para mencionar a alguén…\"}},{locale:\"he\",translations:{\"{tag} (invisible)\":\"{tag} (נסתר)\",\"{tag} (restricted)\":\"{tag} (מוגבל)\",Actions:\"פעולות\",Activities:\"פעילויות\",\"Animals & Nature\":\"חיות וטבע\",Choose:\"בחירה\",Close:\"סגירה\",Custom:\"בהתאמה אישית\",Flags:\"דגלים\",\"Food & Drink\":\"מזון ומשקאות\",\"Frequently used\":\"בשימוש תדיר\",Next:\"הבא\",\"No emoji found\":\"לא נמצא אמוג׳י\",\"No results\":\"אין תוצאות\",Objects:\"חפצים\",\"Pause slideshow\":\"השהיית מצגת\",\"People & Body\":\"אנשים וגוף\",\"Pick an emoji\":\"נא לבחור אמוג׳י\",Previous:\"הקודם\",Search:\"חיפוש\",\"Search results\":\"תוצאות חיפוש\",\"Select a tag\":\"בחירת תגית\",Settings:\"הגדרות\",\"Smileys & Emotion\":\"חייכנים ורגשונים\",\"Start slideshow\":\"התחלת המצגת\",Symbols:\"סמלים\",\"Travel & Places\":\"טיולים ומקומות\",\"Unable to search the group\":\"לא ניתן לחפש בקבוצה\"}},{locale:\"hu_HU\",translations:{\"{tag} (invisible)\":\"{tag} (láthatatlan)\",\"{tag} (restricted)\":\"{tag} (korlátozott)\",Actions:\"Műveletek\",Activities:\"Tevékenységek\",\"Animals & Nature\":\"Állatok és természet\",\"Anything shared with the same group of people will show up here\":\"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni\",\"Avatar of {displayName}\":\"{displayName} profilképe\",\"Avatar of {displayName}, {status}\":\"{displayName} profilképe, {status}\",\"Cancel changes\":\"Változtatások elvetése\",\"Change title\":\"Cím megváltoztatása\",Choose:\"Válassszon\",\"Clear text\":\"Szöveg törlése\",Close:\"Bezárás\",\"Close modal\":\"Ablak bezárása\",\"Close navigation\":\"Navigáció bezárása\",\"Close sidebar\":\"Oldalsáv bezárása\",\"Confirm changes\":\"Változtatások megerősítése\",Custom:\"Egyéni\",\"Edit item\":\"Elem szerkesztése\",\"Error getting related resources\":\"Hiba a kapcsolódó erőforrások lekérésekor\",\"Error parsing svg\":\"Hiba az SVG feldolgozásakor\",\"External documentation for {title}\":\"Külső dokumentáció ehhez: {title}\",Favorite:\"Kedvenc\",Flags:\"Zászlók\",\"Food & Drink\":\"Étel és ital\",\"Frequently used\":\"Gyakran használt\",Global:\"Globális\",\"Go back to the list\":\"Ugrás vissza a listához\",\"Hide password\":\"Jelszó elrejtése\",\"Message limit of {count} characters reached\":\"{count} karakteres üzenetkorlát elérve\",\"More items …\":\"További elemek...\",Next:\"Következő\",\"No emoji found\":\"Nem található emodzsi\",\"No results\":\"Nincs találat\",Objects:\"Tárgyak\",Open:\"Megnyitás\",'Open link to \"{resourceTitle}\"':\"A(z) „{resourceTitle}” hivatkozásának megnyitása\",\"Open navigation\":\"Navigáció megnyitása\",\"Password is secure\":\"A jelszó biztonságos\",\"Pause slideshow\":\"Diavetítés szüneteltetése\",\"People & Body\":\"Emberek és test\",\"Pick an emoji\":\"Válasszon egy emodzsit\",\"Please select a time zone:\":\"Válasszon időzónát:\",Previous:\"Előző\",\"Related resources\":\"Kapcsolódó erőforrások\",Search:\"Keresés\",\"Search results\":\"Találatok\",\"Select a tag\":\"Válasszon címkét\",Settings:\"Beállítások\",\"Settings navigation\":\"Navigáció a beállításokban\",\"Show password\":\"Jelszó megjelenítése\",\"Smileys & Emotion\":\"Mosolyok és érzelmek\",\"Start slideshow\":\"Diavetítés indítása\",Submit:\"Beküldés\",Symbols:\"Szimbólumok\",\"Travel & Places\":\"Utazás és helyek\",\"Type to search time zone\":\"Gépeljen az időzóna kereséséhez\",\"Unable to search the group\":\"A csoport nem kereshető\",\"Undo changes\":\"Változtatások visszavonása\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':\"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…\"}},{locale:\"is\",translations:{\"{tag} (invisible)\":\"{tag} (ósýnilegt)\",\"{tag} (restricted)\":\"{tag} (takmarkað)\",Actions:\"Aðgerðir\",Activities:\"Aðgerðir\",\"Animals & Nature\":\"Dýr og náttúra\",Choose:\"Velja\",Close:\"Loka\",Custom:\"Sérsniðið\",Flags:\"Flögg\",\"Food & Drink\":\"Matur og drykkur\",\"Frequently used\":\"Oftast notað\",Next:\"Næsta\",\"No emoji found\":\"Ekkert tjáningartákn fannst\",\"No results\":\"Engar niðurstöður\",Objects:\"Hlutir\",\"Pause slideshow\":\"Gera hlé á skyggnusýningu\",\"People & Body\":\"Fólk og líkami\",\"Pick an emoji\":\"Veldu tjáningartákn\",Previous:\"Fyrri\",Search:\"Leita\",\"Search results\":\"Leitarniðurstöður\",\"Select a tag\":\"Veldu merki\",Settings:\"Stillingar\",\"Smileys & Emotion\":\"Broskallar og tilfinningar\",\"Start slideshow\":\"Byrja skyggnusýningu\",Symbols:\"Tákn\",\"Travel & Places\":\"Staðir og ferðalög\",\"Unable to search the group\":\"Get ekki leitað í hópnum\"}},{locale:\"it\",translations:{\"{tag} (invisible)\":\"{tag} (invisibile)\",\"{tag} (restricted)\":\"{tag} (limitato)\",Actions:\"Azioni\",Activities:\"Attività\",\"Animals & Nature\":\"Animali e natura\",\"Anything shared with the same group of people will show up here\":\"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui\",\"Avatar of {displayName}\":\"Avatar di {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar di {displayName}, {status}\",\"Cancel changes\":\"Annulla modifiche\",\"Change title\":\"Modifica il titolo\",Choose:\"Scegli\",\"Clear text\":\"Cancella il testo\",Close:\"Chiudi\",\"Close modal\":\"Chiudi il messaggio modale\",\"Close navigation\":\"Chiudi la navigazione\",\"Close sidebar\":\"Chiudi la barra laterale\",\"Confirm changes\":\"Conferma modifiche\",Custom:\"Personalizzato\",\"Edit item\":\"Modifica l'elemento\",\"Error getting related resources\":\"Errore nell'ottenere risorse correlate\",\"Error parsing svg\":\"Errore nell'analizzare l'svg\",\"External documentation for {title}\":\"Documentazione esterna per {title}\",Favorite:\"Preferito\",Flags:\"Bandiere\",\"Food & Drink\":\"Cibo e bevande\",\"Frequently used\":\"Usati di frequente\",Global:\"Globale\",\"Go back to the list\":\"Torna all'elenco\",\"Hide password\":\"Nascondi la password\",\"Message limit of {count} characters reached\":\"Limite dei messaggi di {count} caratteri raggiunto\",\"More items …\":\"Più elementi ...\",Next:\"Successivo\",\"No emoji found\":\"Nessun emoji trovato\",\"No results\":\"Nessun risultato\",Objects:\"Oggetti\",Open:\"Apri\",'Open link to \"{resourceTitle}\"':'Apri il link a \"{resourceTitle}\"',\"Open navigation\":\"Apri la navigazione\",\"Password is secure\":\"La password è sicura\",\"Pause slideshow\":\"Presentazione in pausa\",\"People & Body\":\"Persone e corpo\",\"Pick an emoji\":\"Scegli un emoji\",\"Please select a time zone:\":\"Si prega di selezionare un fuso orario:\",Previous:\"Precedente\",\"Related resources\":\"Risorse correlate\",Search:\"Cerca\",\"Search results\":\"Risultati di ricerca\",\"Select a tag\":\"Seleziona un'etichetta\",Settings:\"Impostazioni\",\"Settings navigation\":\"Navigazione delle impostazioni\",\"Show password\":\"Mostra la password\",\"Smileys & Emotion\":\"Faccine ed emozioni\",\"Start slideshow\":\"Avvia presentazione\",Submit:\"Invia\",Symbols:\"Simboli\",\"Travel & Places\":\"Viaggi e luoghi\",\"Type to search time zone\":\"Digita per cercare un fuso orario\",\"Unable to search the group\":\"Impossibile cercare il gruppo\",\"Undo changes\":\"Cancella i cambiamenti\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Scrivi un messaggio, \"@\" per menzionare qualcuno, \":\" per il completamento automatico delle emoji ...'}},{locale:\"ja_JP\",translations:{\"{tag} (invisible)\":\"{タグ} (不可視)\",\"{tag} (restricted)\":\"{タグ} (制限付)\",Actions:\"操作\",Activities:\"アクティビティ\",\"Animals & Nature\":\"動物と自然\",\"Anything shared with the same group of people will show up here\":\"同じグループで共有しているものは、全てここに表示されます\",\"Avatar of {displayName}\":\"{displayName} のアバター\",\"Avatar of {displayName}, {status}\":\"{displayName}, {status} のアバター\",\"Cancel changes\":\"変更をキャンセル\",\"Change title\":\"タイトルを変更\",Choose:\"選択\",\"Clear text\":\"テキストをクリア\",Close:\"閉じる\",\"Close modal\":\"モーダルを閉じる\",\"Close navigation\":\"ナビゲーションを閉じる\",\"Close sidebar\":\"サイドバーを閉じる\",\"Confirm changes\":\"変更を承認\",Custom:\"カスタム\",\"Edit item\":\"編集\",\"Error getting related resources\":\"関連リソースの取得エラー\",\"Error parsing svg\":\"svgの解析エラー\",\"External documentation for {title}\":\"{title} のための添付文書\",Favorite:\"お気に入り\",Flags:\"国旗\",\"Food & Drink\":\"食べ物と飲み物\",\"Frequently used\":\"よく使うもの\",Global:\"全体\",\"Go back to the list\":\"リストに戻る\",\"Hide password\":\"パスワードを非表示\",\"Message limit of {count} characters reached\":\"{count} 文字のメッセージ上限に達しています\",\"More items …\":\"他のアイテム\",Next:\"次\",\"No emoji found\":\"絵文字が見つかりません\",\"No results\":\"なし\",Objects:\"物\",Open:\"開く\",'Open link to \"{resourceTitle}\"':'\"{resourceTitle}\"のリンクを開く',\"Open navigation\":\"ナビゲーションを開く\",\"Password is secure\":\"パスワードは保護されています\",\"Pause slideshow\":\"スライドショーを一時停止\",\"People & Body\":\"様々な人と体の部位\",\"Pick an emoji\":\"絵文字を選択\",\"Please select a time zone:\":\"タイムゾーンを選んで下さい:\",Previous:\"前\",\"Related resources\":\"関連リソース\",Search:\"検索\",\"Search results\":\"検索結果\",\"Select a tag\":\"タグを選択\",Settings:\"設定\",\"Settings navigation\":\"ナビゲーション設定\",\"Show password\":\"パスワードを表示\",\"Smileys & Emotion\":\"感情表現\",\"Start slideshow\":\"スライドショーを開始\",Submit:\"提出\",Symbols:\"記号\",\"Travel & Places\":\"旅行と場所\",\"Type to search time zone\":\"タイムゾーン検索のため入力してください\",\"Unable to search the group\":\"グループを検索できません\",\"Undo changes\":\"変更を取り消し\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'メッセージを記入、\"@\"でメンション、\":\"で絵文字の自動補完 ...'}},{locale:\"lt_LT\",translations:{\"{tag} (invisible)\":\"{tag} (nematoma)\",\"{tag} (restricted)\":\"{tag} (apribota)\",Actions:\"Veiksmai\",Activities:\"Veiklos\",\"Animals & Nature\":\"Gyvūnai ir gamta\",Choose:\"Pasirinkti\",Close:\"Užverti\",Custom:\"Tinkinti\",\"External documentation for {title}\":\"Išorinė {title} dokumentacija\",Flags:\"Vėliavos\",\"Food & Drink\":\"Maistas ir gėrimai\",\"Frequently used\":\"Dažniausiai naudoti\",\"Message limit of {count} characters reached\":\"Pasiekta {count} simbolių žinutės riba\",Next:\"Kitas\",\"No emoji found\":\"Nerasta jaustukų\",\"No results\":\"Nėra rezultatų\",Objects:\"Objektai\",\"Pause slideshow\":\"Pristabdyti skaidrių rodymą\",\"People & Body\":\"Žmonės ir kūnas\",\"Pick an emoji\":\"Pasirinkti jaustuką\",Previous:\"Ankstesnis\",Search:\"Ieškoti\",\"Search results\":\"Paieškos rezultatai\",\"Select a tag\":\"Pasirinkti žymę\",Settings:\"Nustatymai\",\"Settings navigation\":\"Naršymas nustatymuose\",\"Smileys & Emotion\":\"Šypsenos ir emocijos\",\"Start slideshow\":\"Pradėti skaidrių rodymą\",Submit:\"Pateikti\",Symbols:\"Simboliai\",\"Travel & Places\":\"Kelionės ir vietos\",\"Unable to search the group\":\"Nepavyko atlikti paiešką grupėje\",\"Write message, @ to mention someone …\":\"Rašykite žinutę, naudokite @ norėdami kažką paminėti…\"}},{locale:\"lv\",translations:{\"{tag} (invisible)\":\"{tag} (neredzams)\",\"{tag} (restricted)\":\"{tag} (ierobežots)\",Choose:\"Izvēlēties\",Close:\"Aizvērt\",Next:\"Nākamais\",\"No results\":\"Nav rezultātu\",\"Pause slideshow\":\"Pauzēt slaidrādi\",Previous:\"Iepriekšējais\",\"Select a tag\":\"Izvēlēties birku\",Settings:\"Iestatījumi\",\"Start slideshow\":\"Sākt slaidrādi\"}},{locale:\"mk\",translations:{\"{tag} (invisible)\":\"{tag} (невидливо)\",\"{tag} (restricted)\":\"{tag} (ограничено)\",Actions:\"Акции\",Activities:\"Активности\",\"Animals & Nature\":\"Животни & Природа\",\"Avatar of {displayName}\":\"Аватар на {displayName}\",\"Avatar of {displayName}, {status}\":\"Аватар на {displayName}, {status}\",\"Cancel changes\":\"Откажи ги промените\",\"Change title\":\"Промени наслов\",Choose:\"Избери\",Close:\"Затвори\",\"Close modal\":\"Затвори модал\",\"Close navigation\":\"Затвори навигација\",\"Confirm changes\":\"Потврди ги промените\",Custom:\"Прилагодени\",\"Edit item\":\"Уреди\",\"External documentation for {title}\":\"Надворешна документација за {title}\",Favorite:\"Фаворити\",Flags:\"Знамиња\",\"Food & Drink\":\"Храна & Пијалоци\",\"Frequently used\":\"Најчесто користени\",Global:\"Глобално\",\"Go back to the list\":\"Врати се на листата\",items:\"ставки\",\"Message limit of {count} characters reached\":\"Ограничувањето на должината на пораката од {count} карактери е надминато\",\"More {dashboardItemType} …\":\"Повеќе {dashboardItemType} …\",Next:\"Следно\",\"No emoji found\":\"Не се пронајдени емотикони\",\"No results\":\"Нема резултати\",Objects:\"Објекти\",Open:\"Отвори\",\"Open navigation\":\"Отвори навигација\",\"Pause slideshow\":\"Пузирај слајдшоу\",\"People & Body\":\"Луѓе & Тело\",\"Pick an emoji\":\"Избери емотикон\",\"Please select a time zone:\":\"Изберете временска зона:\",Previous:\"Предходно\",Search:\"Барај\",\"Search results\":\"Резултати од барувањето\",\"Select a tag\":\"Избери ознака\",Settings:\"Параметри\",\"Settings navigation\":\"Параметри за навигација\",\"Smileys & Emotion\":\"Смешковци & Емотикони\",\"Start slideshow\":\"Стартувај слајдшоу\",Submit:\"Испрати\",Symbols:\"Симболи\",\"Travel & Places\":\"Патувања & Места\",\"Type to search time zone\":\"Напишете за да пребарате временска зона\",\"Unable to search the group\":\"Неможе да се принајде групата\",\"Undo changes\":\"Врати ги промените\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ...\"}},{locale:\"my\",translations:{\"{tag} (invisible)\":\"{tag} (ကွယ်ဝှက်ထား)\",\"{tag} (restricted)\":\"{tag} (ကန့်သတ်)\",Actions:\"လုပ်ဆောင်ချက်များ\",Activities:\"ပြုလုပ်ဆောင်တာများ\",\"Animals & Nature\":\"တိရစ္ဆာန်များနှင့် သဘာဝ\",\"Avatar of {displayName}\":\"{displayName} ၏ ကိုယ်ပွား\",\"Cancel changes\":\"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်\",Choose:\"ရွေးချယ်ရန်\",Close:\"ပိတ်ရန်\",\"Confirm changes\":\"ပြောင်းလဲမှုများ အတည်ပြုရန်\",Custom:\"အလိုကျချိန်ညှိမှု\",\"External documentation for {title}\":\"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း\",Flags:\"အလံများ\",\"Food & Drink\":\"အစားအသောက်\",\"Frequently used\":\"မကြာခဏအသုံးပြုသော\",Global:\"ကမ္ဘာလုံးဆိုင်ရာ\",\"Message limit of {count} characters reached\":\"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ\",Next:\"နောက်သို့ဆက်ရန်\",\"No emoji found\":\"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ\",\"No results\":\"ရလဒ်မရှိပါ\",Objects:\"အရာဝတ္ထုများ\",\"Pause slideshow\":\"စလိုက်ရှိုး ခေတ္တရပ်ရန်\",\"People & Body\":\"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်\",\"Pick an emoji\":\"အီမိုဂျီရွေးရန်\",\"Please select a time zone:\":\"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ\",Previous:\"ယခင်\",Search:\"ရှာဖွေရန်\",\"Search results\":\"ရှာဖွေမှု ရလဒ်များ\",\"Select a tag\":\"tag ရွေးချယ်ရန်\",Settings:\"ချိန်ညှိချက်များ\",\"Settings navigation\":\"ချိန်ညှိချက်အညွှန်း\",\"Smileys & Emotion\":\"စမိုင်လီများနှင့် အီမိုရှင်း\",\"Start slideshow\":\"စလိုက်ရှိုးအား စတင်ရန်\",Submit:\"တင်သွင်းရန်\",Symbols:\"သင်္ကေတများ\",\"Travel & Places\":\"ခရီးသွားလာခြင်းနှင့် နေရာများ\",\"Type to search time zone\":\"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ\",\"Unable to search the group\":\"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ\",\"Write message, @ to mention someone …\":\"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်...\"}},{locale:\"nb_NO\",translations:{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (beskyttet)\",Actions:\"Handlinger\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Dyr og natur\",\"Anything shared with the same group of people will show up here\":\"Alt som er delt med den samme gruppen vil vises her\",\"Avatar of {displayName}\":\"Avataren til {displayName}\",\"Avatar of {displayName}, {status}\":\"{displayName}'s avatar, {status}\",\"Cancel changes\":\"Avbryt endringer\",\"Change title\":\"Endre tittel\",Choose:\"Velg\",\"Clear text\":\"Fjern tekst\",Close:\"Lukk\",\"Close modal\":\"Lukk modal\",\"Close navigation\":\"Lukk navigasjon\",\"Close sidebar\":\"Lukk sidepanel\",\"Confirm changes\":\"Bekreft endringer\",Custom:\"Tilpasset\",\"Edit item\":\"Rediger\",\"Error getting related resources\":\"Feil ved henting av relaterte ressurser\",\"Error parsing svg\":\"Feil ved parsing av svg\",\"External documentation for {title}\":\"Ekstern dokumentasjon for {title}\",Favorite:\"Favoritt\",Flags:\"Flagg\",\"Food & Drink\":\"Mat og drikke\",\"Frequently used\":\"Ofte brukt\",Global:\"Global\",\"Go back to the list\":\"Gå tilbake til listen\",\"Hide password\":\"Skjul passord\",\"Message limit of {count} characters reached\":\"Karakter begrensing {count} nådd i melding\",\"More items …\":\"Flere gjenstander...\",Next:\"Neste\",\"No emoji found\":\"Fant ingen emoji\",\"No results\":\"Ingen resultater\",Objects:\"Objekter\",Open:\"Åpne\",'Open link to \"{resourceTitle}\"':'Åpne link til \"{resourceTitle}\"',\"Open navigation\":\"Åpne navigasjon\",\"Password is secure\":\"Passordet er sikkert\",\"Pause slideshow\":\"Pause lysbildefremvisning\",\"People & Body\":\"Mennesker og kropp\",\"Pick an emoji\":\"Velg en emoji\",\"Please select a time zone:\":\"Vennligst velg tidssone\",Previous:\"Forrige\",\"Related resources\":\"Relaterte ressurser\",Search:\"Søk\",\"Search results\":\"Søkeresultater\",\"Select a tag\":\"Velg en merkelapp\",Settings:\"Innstillinger\",\"Settings navigation\":\"Navigasjonsinstillinger\",\"Show password\":\"Vis passord\",\"Smileys & Emotion\":\"Smilefjes og følelser\",\"Start slideshow\":\"Start lysbildefremvisning\",Submit:\"Send\",Symbols:\"Symboler\",\"Travel & Places\":\"Reise og steder\",\"Type to search time zone\":\"Tast for å søke etter tidssone\",\"Unable to search the group\":\"Kunne ikke søke i gruppen\",\"Undo changes\":\"Tilbakestill endringer\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv melding, bruk \"@\" for å nevne noen, bruk \":\" for autofullføring av emoji...'}},{locale:\"nl\",translations:{\"{tag} (invisible)\":\"{tag} (onzichtbaar)\",\"{tag} (restricted)\":\"{tag} (beperkt)\",Actions:\"Acties\",Activities:\"Activiteiten\",\"Animals & Nature\":\"Dieren & Natuur\",\"Avatar of {displayName}\":\"Avatar van {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar van {displayName}, {status}\",\"Cancel changes\":\"Wijzigingen annuleren\",Choose:\"Kies\",Close:\"Sluiten\",\"Close navigation\":\"Navigatie sluiten\",\"Confirm changes\":\"Wijzigingen bevestigen\",Custom:\"Aangepast\",\"Edit item\":\"Item bewerken\",\"External documentation for {title}\":\"Externe documentatie voor {title}\",Flags:\"Vlaggen\",\"Food & Drink\":\"Eten & Drinken\",\"Frequently used\":\"Vaak gebruikt\",Global:\"Globaal\",\"Go back to the list\":\"Ga terug naar de lijst\",\"Message limit of {count} characters reached\":\"Berichtlimiet van {count} karakters bereikt\",Next:\"Volgende\",\"No emoji found\":\"Geen emoji gevonden\",\"No results\":\"Geen resultaten\",Objects:\"Objecten\",\"Open navigation\":\"Navigatie openen\",\"Pause slideshow\":\"Pauzeer diavoorstelling\",\"People & Body\":\"Mensen & Lichaam\",\"Pick an emoji\":\"Kies een emoji\",\"Please select a time zone:\":\"Selecteer een tijdzone:\",Previous:\"Vorige\",Search:\"Zoeken\",\"Search results\":\"Zoekresultaten\",\"Select a tag\":\"Selecteer een label\",Settings:\"Instellingen\",\"Settings navigation\":\"Instellingen navigatie\",\"Smileys & Emotion\":\"Smileys & Emotie\",\"Start slideshow\":\"Start diavoorstelling\",Submit:\"Verwerken\",Symbols:\"Symbolen\",\"Travel & Places\":\"Reizen & Plaatsen\",\"Type to search time zone\":\"Type om de tijdzone te zoeken\",\"Unable to search the group\":\"Kan niet in de groep zoeken\",\"Undo changes\":\"Wijzigingen ongedaan maken\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ...\"}},{locale:\"oc\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (limit)\",Actions:\"Accions\",Choose:\"Causir\",Close:\"Tampar\",Next:\"Seguent\",\"No results\":\"Cap de resultat\",\"Pause slideshow\":\"Metre en pausa lo diaporama\",Previous:\"Precedent\",\"Select a tag\":\"Seleccionar una etiqueta\",Settings:\"Paramètres\",\"Start slideshow\":\"Lançar lo diaporama\"}},{locale:\"pl\",translations:{\"{tag} (invisible)\":\"{tag} (niewidoczna)\",\"{tag} (restricted)\":\"{tag} (ograniczona)\",Actions:\"Działania\",Activities:\"Aktywność\",\"Animals & Nature\":\"Zwierzęta i natura\",\"Anything shared with the same group of people will show up here\":\"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób\",\"Avatar of {displayName}\":\"Awatar {displayName}\",\"Avatar of {displayName}, {status}\":\"Awatar {displayName}, {status}\",\"Cancel changes\":\"Anuluj zmiany\",\"Change title\":\"Zmień tytuł\",Choose:\"Wybierz\",\"Clear text\":\"Wyczyść tekst\",Close:\"Zamknij\",\"Close modal\":\"Zamknij modal\",\"Close navigation\":\"Zamknij nawigację\",\"Close sidebar\":\"Zamknij pasek boczny\",\"Confirm changes\":\"Potwierdź zmiany\",Custom:\"Zwyczajne\",\"Edit item\":\"Edytuj element\",\"Error getting related resources\":\"Błąd podczas pobierania powiązanych zasobów\",\"Error parsing svg\":\"Błąd podczas analizowania svg\",\"External documentation for {title}\":\"Dokumentacja zewnętrzna dla {title}\",Favorite:\"Ulubiony\",Flags:\"Flagi\",\"Food & Drink\":\"Jedzenie i picie\",\"Frequently used\":\"Często używane\",Global:\"Globalnie\",\"Go back to the list\":\"Powrót do listy\",\"Hide password\":\"Ukryj hasło\",\"Message limit of {count} characters reached\":\"Przekroczono limit wiadomości wynoszący {count} znaków\",\"More items …\":\"Więcej pozycji…\",Next:\"Następny\",\"No emoji found\":\"Nie znaleziono emoji\",\"No results\":\"Brak wyników\",Objects:\"Obiekty\",Open:\"Otwórz\",'Open link to \"{resourceTitle}\"':'Otwórz link do \"{resourceTitle}\"',\"Open navigation\":\"Otwórz nawigację\",\"Password is secure\":\"Hasło jest bezpieczne\",\"Pause slideshow\":\"Wstrzymaj pokaz slajdów\",\"People & Body\":\"Ludzie i ciało\",\"Pick an emoji\":\"Wybierz emoji\",\"Please select a time zone:\":\"Wybierz strefę czasową:\",Previous:\"Poprzedni\",\"Related resources\":\"Powiązane zasoby\",Search:\"Szukaj\",\"Search results\":\"Wyniki wyszukiwania\",\"Select a tag\":\"Wybierz etykietę\",Settings:\"Ustawienia\",\"Settings navigation\":\"Ustawienia nawigacji\",\"Show password\":\"Pokaż hasło\",\"Smileys & Emotion\":\"Buźki i emotikony\",\"Start slideshow\":\"Rozpocznij pokaz slajdów\",Submit:\"Wyślij\",Symbols:\"Symbole\",\"Travel & Places\":\"Podróże i miejsca\",\"Type to search time zone\":\"Wpisz, aby wyszukać strefę czasową\",\"Unable to search the group\":\"Nie można przeszukać grupy\",\"Undo changes\":\"Cofnij zmiany\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Napisz wiadomość, \"@\" aby o kimś wspomnieć, \":\" dla autouzupełniania emoji…'}},{locale:\"pt_BR\",translations:{\"{tag} (invisible)\":\"{tag} (invisível)\",\"{tag} (restricted)\":\"{tag} (restrito) \",Actions:\"Ações\",Activities:\"Atividades\",\"Animals & Nature\":\"Animais & Natureza\",\"Anything shared with the same group of people will show up here\":\"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancelar alterações\",\"Change title\":\"Alterar título\",Choose:\"Escolher\",\"Clear text\":\"Limpar texto\",Close:\"Fechar\",\"Close modal\":\"Fechar modal\",\"Close navigation\":\"Fechar navegação\",\"Close sidebar\":\"Fechar barra lateral\",\"Confirm changes\":\"Confirmar alterações\",Custom:\"Personalizado\",\"Edit item\":\"Editar item\",\"Error getting related resources\":\"Erro ao obter recursos relacionados\",\"Error parsing svg\":\"Erro ao analisar svg\",\"External documentation for {title}\":\"Documentação externa para {title}\",Favorite:\"Favorito\",Flags:\"Bandeiras\",\"Food & Drink\":\"Comida & Bebida\",\"Frequently used\":\"Mais usados\",Global:\"Global\",\"Go back to the list\":\"Volte para a lista\",\"Hide password\":\"Ocultar a senha\",\"Message limit of {count} characters reached\":\"Limite de mensagem de {count} caracteres atingido\",\"More items …\":\"Mais itens …\",Next:\"Próximo\",\"No emoji found\":\"Nenhum emoji encontrado\",\"No results\":\"Sem resultados\",Objects:\"Objetos\",Open:\"Aberto\",'Open link to \"{resourceTitle}\"':'Abrir link para \"{resourceTitle}\"',\"Open navigation\":\"Abrir navegação\",\"Password is secure\":\"A senha é segura\",\"Pause slideshow\":\"Pausar apresentação de slides\",\"People & Body\":\"Pessoas & Corpo\",\"Pick an emoji\":\"Escolha um emoji\",\"Please select a time zone:\":\"Selecione um fuso horário: \",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionados\",Search:\"Pesquisar\",\"Search results\":\"Resultados da pesquisa\",\"Select a tag\":\"Selecionar uma tag\",Settings:\"Configurações\",\"Settings navigation\":\"Navegação de configurações\",\"Show password\":\"Mostrar senha\",\"Smileys & Emotion\":\"Smiles & Emoções\",\"Start slideshow\":\"Iniciar apresentação de slides\",Submit:\"Enviar\",Symbols:\"Símbolo\",\"Travel & Places\":\"Viagem & Lugares\",\"Type to search time zone\":\"Digite para pesquisar o fuso horário \",\"Unable to search the group\":\"Não foi possível pesquisar o grupo\",\"Undo changes\":\"Desfazer modificações\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escreva mensagens, use \"@\" para mencionar algum, use \":\" for autocompletar emoji …'}},{locale:\"pt_PT\",translations:{\"{tag} (invisible)\":\"{tag} (invisivel)\",\"{tag} (restricted)\":\"{tag} (restrito)\",Actions:\"Ações\",Choose:\"Escolher\",Close:\"Fechar\",Next:\"Seguinte\",\"No results\":\"Sem resultados\",\"Pause slideshow\":\"Pausar diaporama\",Previous:\"Anterior\",\"Select a tag\":\"Selecionar uma etiqueta\",Settings:\"Definições\",\"Start slideshow\":\"Iniciar diaporama\",\"Unable to search the group\":\"Não é possível pesquisar o grupo\"}},{locale:\"ro\",translations:{\"{tag} (invisible)\":\"{tag} (invizibil)\",\"{tag} (restricted)\":\"{tag} (restricționat)\",Actions:\"Acțiuni\",Activities:\"Activități\",\"Animals & Nature\":\"Animale și natură\",\"Anything shared with the same group of people will show up here\":\"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici\",\"Avatar of {displayName}\":\"Avatarul lui {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatarul lui {displayName}, {status}\",\"Cancel changes\":\"Anulează modificările\",\"Change title\":\"Modificați titlul\",Choose:\"Alegeți\",\"Clear text\":\"Șterge textul\",Close:\"Închideți\",\"Close modal\":\"Închideți modulul\",\"Close navigation\":\"Închideți navigarea\",\"Close sidebar\":\"Închide bara laterală\",\"Confirm changes\":\"Confirmați modificările\",Custom:\"Personalizat\",\"Edit item\":\"Editați elementul\",\"Error getting related resources\":\" Eroare la returnarea resurselor legate\",\"Error parsing svg\":\"Eroare de analizare a svg\",\"External documentation for {title}\":\"Documentație externă pentru {title}\",Favorite:\"Favorit\",Flags:\"Marcaje\",\"Food & Drink\":\"Alimente și băuturi\",\"Frequently used\":\"Utilizate frecvent\",Global:\"Global\",\"Go back to the list\":\"Întoarceți-vă la listă\",\"Hide password\":\"Ascunde parola\",\"Message limit of {count} characters reached\":\"Limita mesajului de {count} caractere a fost atinsă\",\"More items …\":\"Mai multe articole ...\",Next:\"Următorul\",\"No emoji found\":\"Nu s-a găsit niciun emoji\",\"No results\":\"Nu există rezultate\",Objects:\"Obiecte\",Open:\"Deschideți\",'Open link to \"{resourceTitle}\"':'Deschide legătura la \"{resourceTitle}\"',\"Open navigation\":\"Deschideți navigația\",\"Password is secure\":\"Parola este sigură\",\"Pause slideshow\":\"Pauză prezentare de diapozitive\",\"People & Body\":\"Oameni și corp\",\"Pick an emoji\":\"Alege un emoji\",\"Please select a time zone:\":\"Vă rugăm să selectați un fus orar:\",Previous:\"Anterior\",\"Related resources\":\"Resurse legate\",Search:\"Căutare\",\"Search results\":\"Rezultatele căutării\",\"Select a tag\":\"Selectați o etichetă\",Settings:\"Setări\",\"Settings navigation\":\"Navigare setări\",\"Show password\":\"Arată parola\",\"Smileys & Emotion\":\"Zâmbete și emoții\",\"Start slideshow\":\"Începeți prezentarea de diapozitive\",Submit:\"Trimiteți\",Symbols:\"Simboluri\",\"Travel & Places\":\"Călătorii și locuri\",\"Type to search time zone\":\"Tastați pentru a căuta fusul orar\",\"Unable to search the group\":\"Imposibilitatea de a căuta în grup\",\"Undo changes\":\"Anularea modificărilor\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Scrie un mesaj, folosește \"@\" pentru a menționa pe cineva, folosește \":\" pentru autocompletarea cu emoji ...'}},{locale:\"ru\",translations:{\"{tag} (invisible)\":\"{tag} (невидимое)\",\"{tag} (restricted)\":\"{tag} (ограниченное)\",Actions:\"Действия \",Activities:\"События\",\"Animals & Nature\":\"Животные и природа \",\"Avatar of {displayName}\":\"Аватар {displayName}\",\"Avatar of {displayName}, {status}\":\"Фотография {displayName}, {status}\",\"Cancel changes\":\"Отменить изменения\",Choose:\"Выберите\",Close:\"Закрыть\",\"Close modal\":\"Закрыть модальное окно\",\"Close navigation\":\"Закрыть навигацию\",\"Confirm changes\":\"Подтвердить изменения\",Custom:\"Пользовательское\",\"Edit item\":\"Изменить элемент\",\"External documentation for {title}\":\"Внешняя документация для {title}\",Flags:\"Флаги\",\"Food & Drink\":\"Еда, напиток\",\"Frequently used\":\"Часто используемый\",Global:\"Глобальный\",\"Go back to the list\":\"Вернуться к списку\",items:\"элементов\",\"Message limit of {count} characters reached\":\"Достигнуто ограничение на количество символов в {count}\",\"More {dashboardItemType} …\":\"Больше {dashboardItemType} …\",Next:\"Следующее\",\"No emoji found\":\"Эмодзи не найдено\",\"No results\":\"Результаты отсуствуют\",Objects:\"Объекты\",Open:\"Открыть\",\"Open navigation\":\"Открыть навигацию\",\"Pause slideshow\":\"Приостановить показ слйдов\",\"People & Body\":\"Люди и тело\",\"Pick an emoji\":\"Выберите эмодзи\",\"Please select a time zone:\":\"Пожалуйста, выберите часовой пояс:\",Previous:\"Предыдущее\",Search:\"Поиск\",\"Search results\":\"Результаты поиска\",\"Select a tag\":\"Выберите метку\",Settings:\"Параметры\",\"Settings navigation\":\"Навигация по настройкам\",\"Smileys & Emotion\":\"Смайлики и эмоции\",\"Start slideshow\":\"Начать показ слайдов\",Submit:\"Утвердить\",Symbols:\"Символы\",\"Travel & Places\":\"Путешествия и места\",\"Type to search time zone\":\"Введите для поиска часового пояса\",\"Unable to search the group\":\"Невозможно найти группу\",\"Undo changes\":\"Отменить изменения\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …\"}},{locale:\"sk_SK\",translations:{\"{tag} (invisible)\":\"{tag} (neviditeľný)\",\"{tag} (restricted)\":\"{tag} (obmedzený)\",Actions:\"Akcie\",Activities:\"Aktivity\",\"Animals & Nature\":\"Zvieratá a príroda\",\"Avatar of {displayName}\":\"Avatar {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar {displayName}, {status}\",\"Cancel changes\":\"Zrušiť zmeny\",Choose:\"Vybrať\",Close:\"Zatvoriť\",\"Close navigation\":\"Zavrieť navigáciu\",\"Confirm changes\":\"Potvrdiť zmeny\",Custom:\"Zvyk\",\"Edit item\":\"Upraviť položku\",\"External documentation for {title}\":\"Externá dokumentácia pre {title}\",Flags:\"Vlajky\",\"Food & Drink\":\"Jedlo a nápoje\",\"Frequently used\":\"Často používané\",Global:\"Globálne\",\"Go back to the list\":\"Naspäť na zoznam\",\"Message limit of {count} characters reached\":\"Limit správy na {count} znakov dosiahnutý\",Next:\"Ďalší\",\"No emoji found\":\"Nenašli sa žiadne emodži\",\"No results\":\"Žiadne výsledky\",Objects:\"Objekty\",\"Open navigation\":\"Otvoriť navigáciu\",\"Pause slideshow\":\"Pozastaviť prezentáciu\",\"People & Body\":\"Ľudia a telo\",\"Pick an emoji\":\"Vyberte si emodži\",\"Please select a time zone:\":\"Prosím vyberte časovú zónu:\",Previous:\"Predchádzajúci\",Search:\"Hľadať\",\"Search results\":\"Výsledky vyhľadávania\",\"Select a tag\":\"Vybrať štítok\",Settings:\"Nastavenia\",\"Settings navigation\":\"Navigácia v nastaveniach\",\"Smileys & Emotion\":\"Smajlíky a emócie\",\"Start slideshow\":\"Začať prezentáciu\",Submit:\"Odoslať\",Symbols:\"Symboly\",\"Travel & Places\":\"Cestovanie a miesta\",\"Type to search time zone\":\"Začníte písať pre vyhľadávanie časovej zóny\",\"Unable to search the group\":\"Skupinu sa nepodarilo nájsť\",\"Undo changes\":\"Vrátiť zmeny\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…\"}},{locale:\"sl\",translations:{\"{tag} (invisible)\":\"{tag} (nevidno)\",\"{tag} (restricted)\":\"{tag} (omejeno)\",Actions:\"Dejanja\",Activities:\"Dejavnosti\",\"Animals & Nature\":\"Živali in Narava\",\"Avatar of {displayName}\":\"Podoba {displayName}\",\"Avatar of {displayName}, {status}\":\"Prikazna slika {displayName}, {status}\",\"Cancel changes\":\"Prekliči spremembe\",\"Change title\":\"Spremeni naziv\",Choose:\"Izbor\",\"Clear text\":\"Počisti besedilo\",Close:\"Zapri\",\"Close modal\":\"Zapri pojavno okno\",\"Close navigation\":\"Zapri krmarjenje\",\"Close sidebar\":\"Zapri stransko vrstico\",\"Confirm changes\":\"Potrdi spremembe\",Custom:\"Po meri\",\"Edit item\":\"Uredi predmet\",\"Error getting related resources\":\"Napaka pridobivanja povezanih virov\",\"External documentation for {title}\":\"Zunanja dokumentacija za {title}\",Favorite:\"Priljubljeno\",Flags:\"Zastavice\",\"Food & Drink\":\"Hrana in Pijača\",\"Frequently used\":\"Pogostost uporabe\",Global:\"Splošno\",\"Go back to the list\":\"Vrni se na seznam\",\"Hide password\":\"Skrij geslo\",\"Message limit of {count} characters reached\":\"Dosežena omejitev {count} znakov na sporočilo.\",\"More items …\":\"Več predmetov ...\",Next:\"Naslednji\",\"No emoji found\":\"Ni najdenih izraznih ikon\",\"No results\":\"Ni zadetkov\",Objects:\"Predmeti\",Open:\"Odpri\",'Open link to \"{resourceTitle}\"':\"Odpri povezavo do »{resourceTitle}«\",\"Open navigation\":\"Odpri krmarjenje\",\"Password is secure\":\"Geslo je varno\",\"Pause slideshow\":\"Ustavi predstavitev\",\"People & Body\":\"Ljudje in Telo\",\"Pick a date\":\"Izbor datuma\",\"Pick a date and a time\":\"Izbor datuma in časa\",\"Pick a month\":\"Izbor meseca\",\"Pick a time\":\"Izbor časa\",\"Pick a week\":\"Izbor tedna\",\"Pick a year\":\"Izbor leta\",\"Pick an emoji\":\"Izbor izrazne ikone\",\"Please select a time zone:\":\"Izbor časovnega pasu:\",Previous:\"Predhodni\",\"Related resources\":\"Povezani viri\",Search:\"Iskanje\",\"Search results\":\"Zadetki iskanja\",\"Select a tag\":\"Izbor oznake\",Settings:\"Nastavitve\",\"Settings navigation\":\"Krmarjenje nastavitev\",\"Show password\":\"Pokaži geslo\",\"Smileys & Emotion\":\"Izrazne ikone\",\"Start slideshow\":\"Začni predstavitev\",Submit:\"Pošlji\",Symbols:\"Simboli\",\"Travel & Places\":\"Potovanja in Kraji\",\"Type to search time zone\":\"Vpišite niz za iskanje časovnega pasu\",\"Unable to search the group\":\"Ni mogoče iskati po skupini\",\"Undo changes\":\"Razveljavi spremembe\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …\"}},{locale:\"sr\",translations:{\"{tag} (invisible)\":\"{tag} (nevidljivo)\",\"{tag} (restricted)\":\"{tag} (ograničeno)\",Actions:\"Radnje\",Activities:\"Aktivnosti\",\"Animals & Nature\":\"Životinje i Priroda\",\"Avatar of {displayName}\":\"Avatar za {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar za {displayName}, {status}\",\"Cancel changes\":\"Otkaži izmene\",\"Change title\":\"Izmeni naziv\",Choose:\"Изаберите\",Close:\"Затвори\",\"Close modal\":\"Zatvori modal\",\"Close navigation\":\"Zatvori navigaciju\",\"Close sidebar\":\"Zatvori bočnu traku\",\"Confirm changes\":\"Potvrdite promene\",Custom:\"Po meri\",\"Edit item\":\"Uredi stavku\",\"External documentation for {title}\":\"Eksterna dokumentacija za {title}\",Favorite:\"Omiljeni\",Flags:\"Zastave\",\"Food & Drink\":\"Hrana i Piće\",\"Frequently used\":\"Često korišćeno\",Global:\"Globalno\",\"Go back to the list\":\"Natrag na listu\",items:\"stavke\",\"Message limit of {count} characters reached\":\"Dostignuto je ograničenje za poruke od {count} znakova\",\"More {dashboardItemType} …\":\"Više {dashboardItemType} …\",Next:\"Следеће\",\"No emoji found\":\"Nije pronađen nijedan emodži\",\"No results\":\"Нема резултата\",Objects:\"Objekti\",Open:\"Otvori\",\"Open navigation\":\"Otvori navigaciju\",\"Pause slideshow\":\"Паузирај слајд шоу\",\"People & Body\":\"Ljudi i Telo\",\"Pick an emoji\":\"Izaberi emodži\",\"Please select a time zone:\":\"Molimo izaberite vremensku zonu:\",Previous:\"Претходно\",Search:\"Pretraži\",\"Search results\":\"Rezultati pretrage\",\"Select a tag\":\"Изаберите ознаку\",Settings:\"Поставке\",\"Settings navigation\":\"Navigacija u podešavanjima\",\"Smileys & Emotion\":\"Smajli i Emocije\",\"Start slideshow\":\"Покрени слајд шоу\",Submit:\"Prihvati\",Symbols:\"Simboli\",\"Travel & Places\":\"Putovanja i Mesta\",\"Type to search time zone\":\"Ukucaj da pretražiš vremenske zone\",\"Unable to search the group\":\"Nije moguće pretražiti grupu\",\"Undo changes\":\"Poništi promene\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…\"}},{locale:\"sv\",translations:{\"{tag} (invisible)\":\"{tag} (osynlig)\",\"{tag} (restricted)\":\"{tag} (begränsad)\",Actions:\"Åtgärder\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Djur & Natur\",\"Anything shared with the same group of people will show up here\":\"Något som delats med samma grupp av personer kommer att visas här\",\"Avatar of {displayName}\":\"{displayName}s avatar\",\"Avatar of {displayName}, {status}\":\"{displayName}s avatar, {status}\",\"Cancel changes\":\"Avbryt ändringar\",\"Change title\":\"Ändra titel\",Choose:\"Välj\",\"Clear text\":\"Ta bort text\",Close:\"Stäng\",\"Close modal\":\"Stäng modal\",\"Close navigation\":\"Stäng navigering\",\"Close sidebar\":\"Stäng sidopanel\",\"Confirm changes\":\"Bekräfta ändringar\",Custom:\"Anpassad\",\"Edit item\":\"Ändra\",\"Error getting related resources\":\"Problem att hämta relaterade resurser\",\"Error parsing svg\":\"Fel vid inläsning av svg\",\"External documentation for {title}\":\"Extern dokumentation för {title}\",Favorite:\"Favorit\",Flags:\"Flaggor\",\"Food & Drink\":\"Mat & Dryck\",\"Frequently used\":\"Används ofta\",Global:\"Global\",\"Go back to the list\":\"Gå tillbaka till listan\",\"Hide password\":\"Göm lössenordet\",\"Message limit of {count} characters reached\":\"Meddelandegräns {count} tecken används\",\"More items …\":\"Fler objekt\",Next:\"Nästa\",\"No emoji found\":\"Hittade inga emojis\",\"No results\":\"Inga resultat\",Objects:\"Objekt\",Open:\"Öppna\",'Open link to \"{resourceTitle}\"':'Öppna länk till \"{resourceTitle}\"',\"Open navigation\":\"Öppna navigering\",\"Password is secure\":\"Lössenordet är säkert\",\"Pause slideshow\":\"Pausa bildspelet\",\"People & Body\":\"Kropp & Själ\",\"Pick an emoji\":\"Välj en emoji\",\"Please select a time zone:\":\"Välj tidszon:\",Previous:\"Föregående\",\"Related resources\":\"Relaterade resurser\",Search:\"Sök\",\"Search results\":\"Sökresultat\",\"Select a tag\":\"Välj en tag\",Settings:\"Inställningar\",\"Settings navigation\":\"Inställningsmeny\",\"Show password\":\"Visa lössenordet\",\"Smileys & Emotion\":\"Selfies & Känslor\",\"Start slideshow\":\"Starta bildspelet\",Submit:\"Skicka\",Symbols:\"Symboler\",\"Travel & Places\":\"Resor & Sevärdigheter\",\"Type to search time zone\":\"Skriv för att välja tidszon\",\"Unable to search the group\":\"Kunde inte söka i gruppen\",\"Undo changes\":\"Ångra ändringar\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv meddelande, använd \"@\" för att nämna någon, använd \":\" för automatiska emojiförslag ...'}},{locale:\"tr\",translations:{\"{tag} (invisible)\":\"{tag} (görünmez)\",\"{tag} (restricted)\":\"{tag} (kısıtlı)\",Actions:\"İşlemler\",Activities:\"Etkinlikler\",\"Animals & Nature\":\"Hayvanlar ve Doğa\",\"Anything shared with the same group of people will show up here\":\"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir\",\"Avatar of {displayName}\":\"{displayName} avatarı\",\"Avatar of {displayName}, {status}\":\"{displayName}, {status} avatarı\",\"Cancel changes\":\"Değişiklikleri iptal et\",\"Change title\":\"Başlığı değiştir\",Choose:\"Seçin\",\"Clear text\":\"Metni temizle\",Close:\"Kapat\",\"Close modal\":\"Üste açılan pencereyi kapat\",\"Close navigation\":\"Gezinmeyi kapat\",\"Close sidebar\":\"Yan çubuğu kapat\",\"Confirm changes\":\"Değişiklikleri onayla\",Custom:\"Özel\",\"Edit item\":\"Ögeyi düzenle\",\"Error getting related resources\":\"İlgili kaynaklar alınırken sorun çıktı\",\"Error parsing svg\":\"svg işlenirken sorun çıktı\",\"External documentation for {title}\":\"{title} için dış belgeler\",Favorite:\"Sık kullanılanlara ekle\",Flags:\"Bayraklar\",\"Food & Drink\":\"Yeme ve İçme\",\"Frequently used\":\"Sık kullanılanlar\",Global:\"Evrensel\",\"Go back to the list\":\"Listeye dön\",\"Hide password\":\"Parolayı gizle\",\"Message limit of {count} characters reached\":\"{count} karakter ileti sınırına ulaşıldı\",\"More items …\":\"Diğer ögeler…\",Next:\"Sonraki\",\"No emoji found\":\"Herhangi bir emoji bulunamadı\",\"No results\":\"Herhangi bir sonuç bulunamadı\",Objects:\"Nesneler\",Open:\"Aç\",'Open link to \"{resourceTitle}\"':'\"{resourceTitle}\" bağlantısını aç',\"Open navigation\":\"Gezinmeyi aç\",\"Password is secure\":\"Parola güvenli\",\"Pause slideshow\":\"Slayt sunumunu duraklat\",\"People & Body\":\"İnsanlar ve Beden\",\"Pick an emoji\":\"Bir emoji seçin\",\"Please select a time zone:\":\"Lütfen bir saat dilimi seçin:\",Previous:\"Önceki\",\"Related resources\":\"İlgili kaynaklar\",Search:\"Arama\",\"Search results\":\"Arama sonuçları\",\"Select a tag\":\"Bir etiket seçin\",Settings:\"Ayarlar\",\"Settings navigation\":\"Gezinme ayarları\",\"Show password\":\"Parolayı görüntüle\",\"Smileys & Emotion\":\"İfadeler ve Duygular\",\"Start slideshow\":\"Slayt sunumunu başlat\",Submit:\"Gönder\",Symbols:\"Simgeler\",\"Travel & Places\":\"Gezi ve Yerler\",\"Type to search time zone\":\"Saat dilimi aramak için yazmaya başlayın\",\"Unable to search the group\":\"Grupta arama yapılamadı\",\"Undo changes\":\"Değişiklikleri geri al\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için \":\" kullanın…'}},{locale:\"uk\",translations:{\"{tag} (invisible)\":\"{tag} (невидимий)\",\"{tag} (restricted)\":\"{tag} (обмежений)\",Actions:\"Дії\",Activities:\"Діяльність\",\"Animals & Nature\":\"Тварини та природа\",\"Avatar of {displayName}\":\"Аватар {displayName}\",\"Avatar of {displayName}, {status}\":\"Аватар {displayName}, {status}\",\"Cancel changes\":\"Скасувати зміни\",\"Change title\":\"Змінити назву\",Choose:\"ВиберітьВиберіть\",\"Clear text\":\"Очистити текст\",Close:\"Закрити\",\"Close modal\":\"Закрити модаль\",\"Close navigation\":\"Закрити навігацію\",\"Close sidebar\":\"Закрити бічну панель\",\"Confirm changes\":\"Підтвердити зміни\",Custom:\"Власне\",\"Edit item\":\"Редагувати елемент\",\"External documentation for {title}\":\"Зовнішня документація для {title}\",Favorite:\"Улюблений\",Flags:\"Прапори\",\"Food & Drink\":\"Їжа та напої\",\"Frequently used\":\"Найчастіші\",Global:\"Глобальний\",\"Go back to the list\":\"Повернутися до списку\",\"Hide password\":\"Приховати пароль\",items:\"елементи\",\"Message limit of {count} characters reached\":\"Вичерпано ліміт у {count} символів для повідомлення\",\"More {dashboardItemType} …\":\"Більше {dashboardItemType}…\",Next:\"Вперед\",\"No emoji found\":\"Емоційки відсутні\",\"No results\":\"Відсутні результати\",Objects:\"Об'єкти\",Open:\"Відкрити\",\"Open navigation\":\"Відкрити навігацію\",\"Password is secure\":\"Пароль безпечний\",\"Pause slideshow\":\"Пауза у показі слайдів\",\"People & Body\":\"Люди та жести\",\"Pick an emoji\":\"Виберіть емоційку\",\"Please select a time zone:\":\"Виберіть часовий пояс:\",Previous:\"Назад\",Search:\"Пошук\",\"Search results\":\"Результати пошуку\",\"Select a tag\":\"Виберіть позначку\",Settings:\"Налаштування\",\"Settings navigation\":\"Навігація у налаштуваннях\",\"Show password\":\"Показати пароль\",\"Smileys & Emotion\":\"Смайли та емоції\",\"Start slideshow\":\"Почати показ слайдів\",Submit:\"Надіслати\",Symbols:\"Символи\",\"Travel & Places\":\"Поїздки та місця\",\"Type to search time zone\":\"Введіть для пошуку часовий пояс\",\"Unable to search the group\":\"Неможливо шукати в групі\",\"Undo changes\":\"Скасувати зміни\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…\"}},{locale:\"zh_CN\",translations:{\"{tag} (invisible)\":\"{tag} (不可见)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"行为\",Activities:\"活动\",\"Animals & Nature\":\"动物 & 自然\",\"Anything shared with the same group of people will show up here\":\"与同组用户分享的所有内容都会显示于此\",\"Avatar of {displayName}\":\"{displayName}的头像\",\"Avatar of {displayName}, {status}\":\"{displayName}的头像,{status}\",\"Cancel changes\":\"取消更改\",\"Change title\":\"更改标题\",Choose:\"选择\",\"Clear text\":\"清除文本\",Close:\"关闭\",\"Close modal\":\"关闭窗口\",\"Close navigation\":\"关闭导航\",\"Close sidebar\":\"关闭侧边栏\",\"Confirm changes\":\"确认更改\",Custom:\"自定义\",\"Edit item\":\"编辑项目\",\"Error getting related resources\":\"获取相关资源时出错\",\"Error parsing svg\":\"解析 svg 时出错\",\"External documentation for {title}\":\"{title}的外部文档\",Favorite:\"喜爱\",Flags:\"旗帜\",\"Food & Drink\":\"食物 & 饮品\",\"Frequently used\":\"经常使用\",Global:\"全局\",\"Go back to the list\":\"返回至列表\",\"Hide password\":\"隐藏密码\",\"Message limit of {count} characters reached\":\"已达到 {count} 个字符的消息限制\",\"More items …\":\"更多项目…\",Next:\"下一个\",\"No emoji found\":\"表情未找到\",\"No results\":\"无结果\",Objects:\"物体\",Open:\"打开\",'Open link to \"{resourceTitle}\"':'打开\"{resourceTitle}\"的连接',\"Open navigation\":\"开启导航\",\"Password is secure\":\"密码安全\",\"Pause slideshow\":\"暂停幻灯片\",\"People & Body\":\"人 & 身体\",\"Pick an emoji\":\"选择一个表情\",\"Please select a time zone:\":\"请选择一个时区:\",Previous:\"上一个\",\"Related resources\":\"相关资源\",Search:\"搜索\",\"Search results\":\"搜索结果\",\"Select a tag\":\"选择一个标签\",Settings:\"设置\",\"Settings navigation\":\"设置向导\",\"Show password\":\"显示密码\",\"Smileys & Emotion\":\"笑脸 & 情感\",\"Start slideshow\":\"开始幻灯片\",Submit:\"提交\",Symbols:\"符号\",\"Travel & Places\":\"旅游 & 地点\",\"Type to search time zone\":\"打字以搜索时区\",\"Unable to search the group\":\"无法搜索分组\",\"Undo changes\":\"撤销更改\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'写信息,使用\"@\"来提及某人,使用\":\"进行表情符号自动完成 ...'}},{locale:\"zh_HK\",translations:{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"動作\",Activities:\"活動\",\"Animals & Nature\":\"動物與自然\",\"Anything shared with the same group of people will show up here\":\"與同一組人共享的任何內容都會顯示在此處\",\"Avatar of {displayName}\":\"{displayName} 的頭像\",\"Avatar of {displayName}, {status}\":\"{displayName} 的頭像,{status}\",\"Cancel changes\":\"取消更改\",\"Change title\":\"更改標題\",Choose:\"選擇\",\"Clear text\":\"清除文本\",Close:\"關閉\",\"Close modal\":\"關閉模態\",\"Close navigation\":\"關閉導航\",\"Close sidebar\":\"關閉側邊欄\",\"Confirm changes\":\"確認更改\",Custom:\"自定義\",\"Edit item\":\"編輯項目\",\"Error getting related resources\":\"獲取相關資源出錯\",\"Error parsing svg\":\"解析 svg 時出錯\",\"External documentation for {title}\":\"{title} 的外部文檔\",Favorite:\"喜愛\",Flags:\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"經常使用\",Global:\"全球的\",\"Go back to the list\":\"返回清單\",\"Hide password\":\"隱藏密碼\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",\"More items …\":\"更多項目 …\",Next:\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",Objects:\"物件\",Open:\"打開\",'Open link to \"{resourceTitle}\"':\"打開指向 “{resourceTitle}” 的鏈結\",\"Open navigation\":\"開啟導航\",\"Password is secure\":\"密碼是安全的\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",\"Please select a time zone:\":\"請選擇時區:\",Previous:\"上一個\",\"Related resources\":\"相關資源\",Search:\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",Settings:\"設定\",\"Settings navigation\":\"設定值導覽\",\"Show password\":\"顯示密碼\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",Submit:\"提交\",Symbols:\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Type to search time zone\":\"鍵入以搜索時區\",\"Unable to search the group\":\"無法搜尋群組\",\"Undo changes\":\"取消更改\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'寫訊息,使用 \"@\" 來指代某人,使用 \":\" 用於表情符號自動填充 ...'}},{locale:\"zh_TW\",translations:{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"動作\",Activities:\"活動\",\"Animals & Nature\":\"動物與自然\",Choose:\"選擇\",Close:\"關閉\",Custom:\"自定義\",Flags:\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"最近使用\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",Next:\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",Objects:\"物件\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",Previous:\"上一個\",Search:\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",Settings:\"設定\",\"Settings navigation\":\"設定值導覽\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",Symbols:\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Unable to search the group\":\"無法搜尋群組\",\"Write message, @ to mention someone …\":\"輸入訊息時可使用 @ 來標示某人...\"}}].forEach((e=>{const t={};for(const a in e.translations)e.translations[a].pluralId?t[a]={msgid:a,msgid_plural:e.translations[a].pluralId,msgstr:e.translations[a].msgstr}:t[a]={msgid:a,msgstr:[e.translations[a]]};i.addTranslation(e.locale,{translations:{\"\":t}})}));const n=i.build(),r=(n.ngettext.bind(n),n.gettext.bind(n))},1205:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>o});const o=e=>Math.random().toString(36).replace(/[^a-z]+/g,\"\").slice(0,e||5)},1206:(e,t,a)=>{\"use strict\";a.d(t,{L:()=>o});a(4505);const o=function(){return Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]}),window._nc_focus_trap}},8827:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon[data-v-20a3e950]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-20a3e950]{display:flex;align-items:center}.action-items>button[data-v-20a3e950]{margin-right:7px}.action-item[data-v-20a3e950]{--open-background-color: var(--color-background-hover, $action-background-hover);position:relative;display:inline-block}.action-item.action-item--primary[data-v-20a3e950]{--open-background-color: var(--color-primary-element-hover)}.action-item.action-item--secondary[data-v-20a3e950]{--open-background-color: var(--color-primary-element-light-hover)}.action-item.action-item--error[data-v-20a3e950]{--open-background-color: var(--color-error-hover)}.action-item.action-item--warning[data-v-20a3e950]{--open-background-color: var(--color-warning-hover)}.action-item.action-item--success[data-v-20a3e950]{--open-background-color: var(--color-success-hover)}.action-item.action-item--tertiary-no-background[data-v-20a3e950]{--open-background-color: transparent}.action-item.action-item--open .action-item__menutoggle[data-v-20a3e950]{background-color:var(--open-background-color)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcActions/NcActions.vue\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,+BACC,YAAA,CACA,kBAAA,CAGA,sCACC,gBAAA,CAIF,8BACC,gFAAA,CACA,iBAAA,CACA,oBAAA,CAEA,mDACC,2DAAA,CAGD,qDACC,iEAAA,CAGD,iDACC,iDAAA,CAGD,mDACC,mDAAA,CAGD,mDACC,mDAAA,CAGD,kEACC,oCAAA,CAGD,yEACC,6CAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n// Inline buttons\\n.action-items {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\n\\t// Spacing between buttons\\n\\t& > button {\\n\\t\\tmargin-right: math.div($icon-margin, 2);\\n\\t}\\n}\\n\\n.action-item {\\n\\t--open-background-color: var(--color-background-hover, $action-background-hover);\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\n\\t&.action-item--primary {\\n\\t\\t--open-background-color: var(--color-primary-element-hover);\\n\\t}\\n\\n\\t&.action-item--secondary {\\n\\t\\t--open-background-color: var(--color-primary-element-light-hover);\\n\\t}\\n\\n\\t&.action-item--error {\\n\\t\\t--open-background-color: var(--color-error-hover);\\n\\t}\\n\\n\\t&.action-item--warning {\\n\\t\\t--open-background-color: var(--color-warning-hover);\\n\\t}\\n\\n\\t&.action-item--success {\\n\\t\\t--open-background-color: var(--color-success-hover);\\n\\t}\\n\\n\\t&.action-item--tertiary-no-background {\\n\\t\\t--open-background-color: transparent;\\n\\t}\\n\\n\\t&.action-item--open .action-item__menutoggle {\\n\\t\\tbackground-color: var(--open-background-color);\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=r},5565:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper{border-radius:var(--border-radius-large);overflow:hidden}.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner{border-radius:var(--border-radius-large);padding:4px;max-height:calc(50vh - 16px);overflow:auto}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcActions/NcActions.vue\"],names:[],mappings:\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCJD,kFACC,wCAAA,CACA,eAAA,CAEA,mGACC,wCAAA,CACA,WAAA,CACA,4BAAA,CACA,aAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n// We overwrote the popover base class, so we can style\\n// the popover__inner for actions only.\\n.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper {\\n\\tborder-radius: var(--border-radius-large);\\n\\toverflow:hidden;\\n\\n\\t.v-popper__inner {\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: 4px;\\n\\t\\tmax-height: calc(50vh - 16px);\\n\\t\\toverflow: auto;\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=r},9560:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon[data-v-74afe090]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-crumb[data-v-74afe090]{background-image:none;display:inline-flex;height:44px;padding:0}.vue-crumb[data-v-74afe090]:last-child{max-width:210px;font-weight:bold}.vue-crumb:last-child .vue-crumb__separator[data-v-74afe090]{display:none}.vue-crumb>a[data-v-74afe090]:hover,.vue-crumb>a[data-v-74afe090]:focus{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb--hidden[data-v-74afe090]{display:none}.vue-crumb.vue-crumb--hovered>a[data-v-74afe090]{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb__separator[data-v-74afe090]{padding:0;color:var(--color-text-maxcontrast)}.vue-crumb>a[data-v-74afe090]{overflow:hidden;color:var(--color-text-maxcontrast);padding:12px;min-width:44px;max-width:100%;border-radius:var(--border-radius-pill);align-items:center;display:inline-flex;justify-content:center}.vue-crumb>a>span[data-v-74afe090]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vue-crumb[data-v-74afe090]:not(.dropdown) .action-item{max-width:100%}.vue-crumb[data-v-74afe090]:not(.dropdown) .action-item .button-vue{padding:0 4px 0 16px}.vue-crumb[data-v-74afe090]:not(.dropdown) .action-item .button-vue__wrapper{flex-direction:row-reverse}.vue-crumb[data-v-74afe090]:not(.dropdown) .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-dark);color:var(--color-main-text)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcBreadcrumb/NcBreadcrumb.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,4BACC,qBAAA,CACA,mBAAA,CACA,WCmBgB,CDlBhB,SAAA,CAEA,uCACC,eAAA,CACA,gBAAA,CAGA,6DACC,YAAA,CAKF,wEAEC,6CAAA,CACA,4BAAA,CAGD,oCACC,YAAA,CAGD,iDACC,6CAAA,CACA,4BAAA,CAGD,uCACC,SAAA,CACA,mCAAA,CAGD,8BACC,eAAA,CACA,mCAAA,CACA,YAAA,CACA,cCnBe,CDoBf,cAAA,CACA,uCAAA,CACA,kBAAA,CACA,mBAAA,CACA,sBAAA,CAEA,mCACC,eAAA,CACA,sBAAA,CACA,kBAAA,CAMF,wDAEC,cAAA,CAEA,oEACC,oBAAA,CAEA,6EACC,0BAAA,CAKF,mGACC,6CAAA,CACA,4BAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.vue-crumb {\\n\\tbackground-image: none;\\n\\tdisplay: inline-flex;\\n\\theight: $clickable-area;\\n\\tpadding: 0;\\n\\n\\t&:last-child {\\n\\t\\tmax-width: 210px;\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t// Don't show breadcrumb separator for last crumb\\n\\t\\t.vue-crumb__separator {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t// Hover and focus effect for crumbs\\n\\t& > a:hover,\\n\\t& > a:focus {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\t&--hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t&#{&}--hovered > a {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\t&__separator {\\n\\t\\tpadding: 0;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t> a {\\n\\t\\toverflow: hidden;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding: 12px;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\tmax-width: 100%;\\n\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\talign-items: center;\\n\\t\\tdisplay: inline-flex;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t> span {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust action item appearance for crumbs with actions\\n\\t// to match other crumbs\\n\\t&:not(.dropdown) :deep(.action-item) {\\n\\t\\t// Adjustments necessary to correctly shrink on small screens\\n\\t\\tmax-width: 100%;\\n\\n\\t\\t.button-vue {\\n\\t\\t\\tpadding: 0 4px 0 16px;\\n\\n\\t\\t\\t&__wrapper {\\n\\t\\t\\t\\tflex-direction: row-reverse;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Adjust the background of the last crumb when the action is open\\n\\t\\t&.action-item--open .action-item__menutoggle {\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},7233:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon[data-v-488fcfba]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-488fcfba]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue *[data-v-488fcfba],.button-vue span[data-v-488fcfba]{cursor:pointer}.button-vue[data-v-488fcfba]:focus{outline:none}.button-vue[data-v-488fcfba]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-488fcfba]{cursor:default}.button-vue[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-488fcfba]:active{background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-488fcfba]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue__icon[data-v-488fcfba]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-488fcfba]{font-weight:bold;margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue--icon-only[data-v-488fcfba]{width:44px !important}.button-vue--text-only[data-v-488fcfba]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-488fcfba]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-488fcfba]{padding:0 16px 0 4px}.button-vue--wide[data-v-488fcfba]{width:100%}.button-vue[data-v-488fcfba]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-488fcfba]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.button-vue--vue-primary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-488fcfba]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-488fcfba]{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue--vue-secondary[data-v-488fcfba]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--vue-tertiary[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{color:var(--color-primary-element-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-488fcfba]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-488fcfba]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-488fcfba]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-488fcfba]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-488fcfba]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-488fcfba]:active{background-color:var(--color-error)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcButton/NcButton.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAKA,kBAAA,CACA,uDAAA,CACA,uBAAA,CACA,iCAAA,CAkBA,6CAAA,CACA,mDAAA,CA1BA,iEAEC,cAAA,CAQD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCIiB,CDFjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,yDAAA,CAKD,oCACC,mDAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAGD,mCACC,WCvCe,CDwCf,UCxCe,CDyCf,eCzCe,CD0Cf,cC1Ce,CD2Cf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,mDAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,uCAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,6CAAA,CACA,mDAAA,CACA,iEACC,6CAAA,CACA,yDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,uCAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.button-vue {\\n\\tposition: relative;\\n\\twidth: fit-content;\\n\\toverflow: hidden;\\n\\tborder: 0;\\n\\tpadding: 0;\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\tmin-height: $clickable-area;\\n\\tmin-width: $clickable-area;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\n\\t// Cursor pointer on element and all children\\n\\tcursor: pointer;\\n\\t& *,\\n\\tspan {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\tborder-radius: math.div($clickable-area, 2);\\n\\ttransition-property: color, border-color, background-color;\\n\\ttransition-duration: 0.1s;\\n\\ttransition-timing-function: linear;\\n\\n\\t// No outline feedback for focus. Handled with a toggled class in js (see data)\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&:disabled {\\n\\t\\tcursor: default;\\n\\t\\t& * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t// Gives a wash out effect\\n\\t\\tfilter: saturate($opacity_normal);\\n\\t}\\n\\n\\t// Default button type\\n\\tcolor: var(--color-primary-element-light-text);\\n\\tbackground-color: var(--color-primary-element-light);\\n\\t&:hover:not(:disabled) {\\n\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t}\\n\\n\\t// Back to the default color for this button when active\\n\\t// TODO: add ripple effect\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\theight: $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-height: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__text {\\n\\t\\tfont-weight: bold;\\n\\t\\tmargin-bottom: 1px;\\n\\t\\tpadding: 2px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// Icon-only button\\n\\t&--icon-only {\\n\\t\\twidth: $clickable-area !important;\\n\\t}\\n\\n\\t// Text-only button\\n\\t&--text-only {\\n\\t\\tpadding: 0 12px;\\n\\t\\t& .button-vue__text {\\n\\t\\t\\tmargin-left: 4px;\\n\\t\\t\\tmargin-right: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon and text button\\n\\t&--icon-and-text {\\n\\t\\tpadding: 0 16px 0 4px;\\n\\t}\\n\\n\\t// Wide button spans the whole width of the container\\n\\t&--wide {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t&.button-vue--vue-tertiary-on-primary {\\n\\t\\t\\toutline: 2px solid var(--color-primary-element-text);\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Button types\\n\\n\\t// Primary\\n\\t&--vue-primary {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-primary-element-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t// Secondary\\n\\t&--vue-secondary {\\n\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary\\n\\t&--vue-tertiary {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary, no background\\n\\t&--vue-tertiary-no-background {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary on primary color (like the header)\\n\\t&--vue-tertiary-on-primary {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\tbackground-color: transparent;\\n\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Success\\n\\t&--vue-success {\\n\\t\\tbackground-color: var(--color-success);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-success-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// : add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-success);\\n\\t\\t}\\n\\t}\\n\\n\\t// Warning\\n\\t&--vue-warning {\\n\\t\\tbackground-color: var(--color-warning);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-warning-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-warning);\\n\\t\\t}\\n\\t}\\n\\n\\t// Error\\n\\t&--vue-error {\\n\\t\\tbackground-color: var(--color-error);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-error-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},1625:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),i=a.n(o),n=a(3645),r=a.n(n)()(i());r.push([e.id,\".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:rgba(0,0,0,0);pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown.v-popper__popper{z-index:100000;top:0;left:0;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-dropdown.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius-large);overflow:hidden;background:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-10px;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcPopover/NcPopover.vue\"],names:[],mappings:\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,iBACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,8BAAA,CACA,mBAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CAGD,wBACC,aAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,eAAA,CACA,mBAAA,CACA,UAAA,CAMA,2CACC,cAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CAEA,sDAAA,CAEA,4DACC,SAAA,CACA,4BAAA,CACA,wCAAA,CACA,eAAA,CACA,uCAAA,CAGD,sEACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBA1BW,CA6BZ,kGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAGD,qGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAGD,oGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAGD,mGACC,WAAA,CACA,oBAAA,CACA,8CAAA,CAGD,6DACC,iBAAA,CACA,2EAAA,CACA,SAAA,CAGD,8DACC,kBAAA,CACA,yCAAA,CACA,SAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.resize-observer {\\n\\tposition:absolute;\\n\\ttop:0;\\n\\tleft:0;\\n\\tz-index:-1;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tborder:none;\\n\\tbackground-color:transparent;\\n\\tpointer-events:none;\\n\\tdisplay:block;\\n\\toverflow:hidden;\\n\\topacity:0\\n}\\n\\n.resize-observer object {\\n\\tdisplay:block;\\n\\tposition:absolute;\\n\\ttop:0;\\n\\tleft:0;\\n\\theight:100%;\\n\\twidth:100%;\\n\\toverflow:hidden;\\n\\tpointer-events:none;\\n\\tz-index:-1\\n}\\n\\n$arrow-width: 10px;\\n\\n.v-popper--theme-dropdown {\\n\\t&.v-popper__popper {\\n\\t\\tz-index: 100000;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tdisplay: block !important;\\n\\n\\t\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t\\t.v-popper__inner {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t.v-popper__arrow-container {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tz-index: 1;\\n\\t\\t\\twidth: 0;\\n\\t\\t\\theight: 0;\\n\\t\\t\\tborder-style: solid;\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tborder-width: $arrow-width;\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='top'] .v-popper__arrow-container {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tborder-bottom-width: 0;\\n\\t\\t\\tborder-top-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tborder-top-width: 0;\\n\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='right'] .v-popper__arrow-container {\\n\\t\\t\\tleft: -$arrow-width;\\n\\t\\t\\tborder-left-width: 0;\\n\\t\\t\\tborder-right-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='left'] .v-popper__arrow-container {\\n\\t\\t\\tright: -$arrow-width;\\n\\t\\t\\tborder-right-width: 0;\\n\\t\\t\\tborder-left-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[aria-hidden='true'] {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t\\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\n\\t\\t&[aria-hidden='false'] {\\n\\t\\t\\tvisibility: visible;\\n\\t\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],sourceRoot:\"\"}]);const s=r},3645:e=>{\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var a=\"\",o=void 0!==t[5];return t[4]&&(a+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(a+=\"@media \".concat(t[2],\" {\")),o&&(a+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),a+=e(t),o&&(a+=\"}\"),t[2]&&(a+=\"}\"),t[4]&&(a+=\"}\"),a})).join(\"\")},t.i=function(e,a,o,i,n){\"string\"==typeof e&&(e=[[null,e,void 0]]);var r={};if(o)for(var s=0;s0?\" \".concat(u[5]):\"\",\" {\").concat(u[1],\"}\")),u[5]=n),a&&(u[2]?(u[1]=\"@media \".concat(u[2],\" {\").concat(u[1],\"}\"),u[2]=a):u[2]=a),i&&(u[4]?(u[1]=\"@supports (\".concat(u[4],\") {\").concat(u[1],\"}\"),u[4]=i):u[4]=\"\".concat(i)),t.push(u))}},t}},7537:e=>{\"use strict\";e.exports=function(e){var t=e[1],a=e[3];if(!a)return t;if(\"function\"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),i=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(o),n=\"/*# \".concat(i,\" */\");return[t].concat([n]).join(\"\\n\")}return[t].join(\"\\n\")}},3379:e=>{\"use strict\";var t=[];function a(e){for(var a=-1,o=0;o{\"use strict\";var t={};e.exports=function(e,a){var o=function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(e){a=null}t[e]=a}return t[e]}(e);if(!o)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");o.appendChild(a)}},9216:e=>{\"use strict\";e.exports=function(e){var t=document.createElement(\"style\");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,a)=>{\"use strict\";e.exports=function(e){var t=a.nc;t&&e.setAttribute(\"nonce\",t)}},7795:e=>{\"use strict\";e.exports=function(e){if(\"undefined\"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(a){!function(e,t,a){var o=\"\";a.supports&&(o+=\"@supports (\".concat(a.supports,\") {\")),a.media&&(o+=\"@media \".concat(a.media,\" {\"));var i=void 0!==a.layer;i&&(o+=\"@layer\".concat(a.layer.length>0?\" \".concat(a.layer):\"\",\" {\")),o+=a.css,i&&(o+=\"}\"),a.media&&(o+=\"}\"),a.supports&&(o+=\"}\");var n=a.sourceMap;n&&\"undefined\"!=typeof btoa&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n)))),\" */\")),t.styleTagTransform(o,e,t.options)}(t,e,a)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},5727:()=>{},6591:()=>{},2102:()=>{},2405:()=>{},1900:(e,t,a)=>{\"use strict\";function o(e,t,a,o,i,n,r,s){var l,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=a,c._compiled=!0),o&&(c.functional=!0),n&&(c._scopeId=\"data-v-\"+n),r?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var d=c.beforeCreate;c.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:c}}a.d(t,{Z:()=>o})},7931:e=>{\"use strict\";e.exports=require(\"@nextcloud/l10n/gettext\")},9454:e=>{\"use strict\";e.exports=require(\"floating-vue\")},4505:e=>{\"use strict\";e.exports=require(\"focus-trap\")},2734:e=>{\"use strict\";e.exports=require(\"vue\")},9044:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/ChevronRight.vue\")},1441:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/DotsHorizontal.vue\")}},t={};function a(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={id:o,exports:{}};return e[o](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.nc=void 0;var o={};return(()=>{\"use strict\";a.r(o),a.d(o,{default:()=>j});var e=a(644),t=a(1205),i=a(9044),n=a.n(i);const r={name:\"NcBreadcrumb\",components:{NcActions:e.default,ChevronRight:n()},props:{name:{type:String,default:null},title:{type:String,default:null},to:{type:[String,Object],default:void 0},exact:{type:Boolean,default:!1},href:{type:String,default:void 0},icon:{type:String,default:\"\"},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1}},emits:[\"update:open\",\"dropped\"],data:()=>({hovering:!1,crumbId:\"crumb-id-\".concat((0,t.Z)())}),computed:{nameTitleFallback(){return null===this.name?(console.warn(\"The `name` prop is required. Please migrate away from the deprecated `title` prop.\"),this.title):this.name},tag(){return this.to?\"router-link\":\"a\"},linkAttributes(){return this.to?{to:this.to,exact:this.exact,...this.$attrs}:{href:this.href,...this.$attrs}}},methods:{onOpenChange(e){this.$emit(\"update:open\",e)},dropped(e){return this.disableDrop||(this.$emit(\"dropped\",e,this.to||this.href),this.$parent.$emit(\"dropped\",e,this.to||this.href),this.hovering=!1),!1},dragEnter(e){this.disableDrop||(this.hovering=!0)},dragLeave(e){this.disableDrop||e.target.contains(e.relatedTarget)||this.$refs.crumb.contains(e.relatedTarget)||(this.hovering=!1)}}};var s=a(3379),l=a.n(s),c=a(7795),u=a.n(c),d=a(569),m=a.n(d),p=a(3565),g=a.n(p),h=a(9216),v=a.n(h),A=a(4589),b=a.n(A),f=a(9560),C={};C.styleTagTransform=b(),C.setAttributes=g(),C.insert=m().bind(null,\"head\"),C.domAPI=u(),C.insertStyleElement=v();l()(f.Z,C);f.Z&&f.Z.locals&&f.Z.locals;var y=a(1900),k=a(6591),w=a.n(k),S=(0,y.Z)(r,(function(){var e=this,t=e._self._c;return t(\"li\",e._b({ref:\"crumb\",staticClass:\"vue-crumb\",class:{\"vue-crumb--hovered\":e.hovering},attrs:{draggable:\"false\"},on:{dragstart:function(e){return e.preventDefault(),(()=>{}).apply(null,arguments)},drop:function(t){return t.preventDefault(),e.dropped.apply(null,arguments)},dragover:function(e){return e.preventDefault(),(()=>{}).apply(null,arguments)},dragenter:e.dragEnter,dragleave:e.dragLeave}},\"li\",e._d({},[e.crumbId,\"\"])),[!e.nameTitleFallback&&!e.icon||e.$slots.default?e._e():t(e.tag,e._g(e._b({tag:\"component\",attrs:{title:e.title}},\"component\",e.linkAttributes,!1),e.$listeners),[e._t(\"icon\",(function(){return[e.icon?t(\"span\",{staticClass:\"icon\",class:e.icon}):t(\"span\",[e._v(e._s(e.nameTitleFallback))])]}))],2),e._v(\" \"),e.$slots.default?t(\"NcActions\",{ref:\"actions\",attrs:{type:\"tertiary\",\"force-menu\":e.forceMenu,open:e.open,\"menu-title\":e.nameTitleFallback,title:e.title,\"force-title\":!0,container:\".vue-crumb[\".concat(e.crumbId,\"]\")},on:{\"update:open\":e.onOpenChange},scopedSlots:e._u([{key:\"icon\",fn:function(){return[e._t(\"menu-icon\")]},proxy:!0}],null,!0)},[e._v(\" \"),e._t(\"default\")],2):e._e(),e._v(\" \"),t(\"ChevronRight\",{staticClass:\"vue-crumb__separator\",attrs:{size:20}})],1)}),[],!1,null,\"74afe090\",null);\"function\"==typeof w()&&w()(S);const j=S.exports})(),o})()));\n//# sourceMappingURL=NcBreadcrumb.js.map","/*! For license information please see NcBreadcrumbs.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"NextcloudVue\",[],t):\"object\"==typeof exports?exports.NextcloudVue=t():(e.NextcloudVue=e.NextcloudVue||{},e.NextcloudVue[\"Components/NcBreadcrumbs\"]=t())}(self,(()=>(()=>{var e={6704:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>k});const o={name:\"NcActionLink\",mixins:[a(1139).Z],props:{href:{type:String,default:\"#\",required:!0,validator:e=>{try{return new URL(e)}catch(t){return e.startsWith(\"#\")||e.startsWith(\"/\")}}},download:{type:String,default:null},target:{type:String,default:\"_self\",validator:e=>e&&(!e.startsWith(\"_\")||[\"_blank\",\"_self\",\"_parent\",\"_top\"].indexOf(e)>-1)},title:{type:String,default:null},ariaHidden:{type:Boolean,default:null}}};var n=a(3379),i=a.n(n),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),d=a(3565),u=a.n(d),p=a(9216),m=a.n(p),A=a(4589),g=a.n(A),h=a(4953),v={};v.styleTagTransform=g(),v.setAttributes=u(),v.insert=c().bind(null,\"head\"),v.domAPI=s(),v.insertStyleElement=m();i()(h.Z,v);h.Z&&h.Z.locals&&h.Z.locals;var b=a(1900),f=a(9158),C=a.n(f),y=(0,b.Z)(o,(function(){var e=this,t=e._self._c;return t(\"li\",{staticClass:\"action\"},[t(\"a\",{staticClass:\"action-link focusable\",attrs:{download:e.download,href:e.href,\"aria-label\":e.ariaLabel,target:e.target,title:e.title,rel:\"nofollow noreferrer noopener\"},on:{click:e.onClick}},[e._t(\"icon\",(function(){return[t(\"span\",{staticClass:\"action-link__icon\",class:[e.isIconUrl?\"action-link__icon--url\":e.icon],style:{backgroundImage:e.isIconUrl?\"url(\".concat(e.icon,\")\"):null},attrs:{\"aria-hidden\":e.ariaHidden}})]})),e._v(\" \"),e.nameTitleFallback?t(\"p\",[t(\"strong\",{staticClass:\"action-link__title\"},[e._v(\"\\n\\t\\t\\t\\t\"+e._s(e.nameTitleFallback)+\"\\n\\t\\t\\t\")]),e._v(\" \"),t(\"br\"),e._v(\" \"),t(\"span\",{staticClass:\"action-link__longtext\",domProps:{textContent:e._s(e.text)}})]):e.isLongText?t(\"p\",{staticClass:\"action-link__longtext\",domProps:{textContent:e._s(e.text)}}):t(\"span\",{staticClass:\"action-link__text\"},[e._v(e._s(e.text))]),e._v(\" \"),e._e()],2)])}),[],!1,null,\"4c8a3330\",null);\"function\"==typeof C()&&C()(y);const k=y.exports},1484:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>b});const o={name:\"NcActionRouter\",mixins:[a(1139).Z],props:{to:{type:[String,Object],default:\"\",required:!0},exact:{type:Boolean,default:!1}}};var n=a(3379),i=a.n(n),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),d=a(3565),u=a.n(d),p=a(9216),m=a.n(p),A=a(4589),g=a.n(A),h=a(2180),v={};v.styleTagTransform=g(),v.setAttributes=u(),v.insert=c().bind(null,\"head\"),v.domAPI=s(),v.insertStyleElement=m();i()(h.Z,v);h.Z&&h.Z.locals&&h.Z.locals;const b=(0,a(1900).Z)(o,(function(){var e=this,t=e._self._c;return t(\"li\",{staticClass:\"action\"},[t(\"router-link\",{staticClass:\"action-router focusable\",attrs:{to:e.to,\"aria-label\":e.ariaLabel,exact:e.exact,title:e.title,rel:\"nofollow noreferrer noopener\"},nativeOn:{click:function(t){return e.onClick.apply(null,arguments)}}},[e._t(\"icon\",(function(){return[t(\"span\",{staticClass:\"action-router__icon\",class:[e.isIconUrl?\"action-router__icon--url\":e.icon],style:{backgroundImage:e.isIconUrl?\"url(\".concat(e.icon,\")\"):null}})]})),e._v(\" \"),e.nameTitleFallback?t(\"p\",[t(\"strong\",{staticClass:\"action-router__title\"},[e._v(\"\\n\\t\\t\\t\\t\"+e._s(e.nameTitleFallback)+\"\\n\\t\\t\\t\")]),e._v(\" \"),t(\"br\"),e._v(\" \"),t(\"span\",{staticClass:\"action-router__longtext\",domProps:{textContent:e._s(e.text)}})]):e.isLongText?t(\"p\",{staticClass:\"action-router__longtext\",domProps:{textContent:e._s(e.text)}}):t(\"span\",{staticClass:\"action-router__text\"},[e._v(e._s(e.text))]),e._v(\" \"),e._e()],2)],1)}),[],!1,null,\"ab5e8848\",null).exports},644:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>T});var o=a(1631),n=a(2297),i=a(1205),r=a(932),s=a(2734),l=a.n(s),c=a(1441),d=a.n(c);const u=\".focusable\",p={name:\"NcActions\",components:{NcButton:o.default,DotsHorizontal:d(),NcPopover:n.default},props:{open:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},forceTitle:{type:Boolean,default:!1},menuTitle:{type:String,default:null},primary:{type:Boolean,default:!1},type:{type:String,validator:e=>-1!==[\"primary\",\"secondary\",\"tertiary\",\"tertiary-no-background\",\"tertiary-on-primary\",\"error\",\"warning\",\"success\"].indexOf(e),default:null},defaultIcon:{type:String,default:\"\"},ariaLabel:{type:String,default:(0,r.t)(\"Actions\")},ariaHidden:{type:Boolean,default:null},placement:{type:String,default:\"bottom\"},boundariesElement:{type:Element,default:()=>document.querySelector(\"body\")},container:{type:[String,Object,Element,Boolean],default:\"body\"},disabled:{type:Boolean,default:!1},inline:{type:Number,default:0}},emits:[\"update:open\",\"open\",\"update:open\",\"close\",\"focus\",\"blur\"],data(){return{opened:this.open,focusIndex:0,randomId:\"menu-\".concat((0,i.Z)())}},computed:{triggerBtnType(){return this.type||(this.primary?\"primary\":this.menuTitle?\"secondary\":\"tertiary\")}},watch:{open(e){e!==this.opened&&(this.opened=e)}},methods:{isValidSingleAction(e){var t,a,o,n,i;const r=null!==(t=null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(n=o.extendOptions)||void 0===n?void 0:n.name)&&void 0!==t?t:null==e||null===(i=e.componentOptions)||void 0===i?void 0:i.tag;return[\"NcActionButton\",\"NcActionLink\",\"NcActionRouter\"].includes(r)},openMenu(e){this.opened||(this.opened=!0,this.$emit(\"update:open\",!0),this.$emit(\"open\"))},closeMenu(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.opened&&(this.opened=!1,this.$refs.popover.clearFocusTrap({returnFocus:e}),this.$emit(\"update:open\",!1),this.$emit(\"close\"),this.opened=!1,this.focusIndex=0,this.$refs.menuButton.$el.focus())},onOpen(e){this.$nextTick((()=>{this.focusFirstAction(e)}))},onMouseFocusAction(e){if(document.activeElement===e.target)return;const t=e.target.closest(\"li\");if(t){const e=t.querySelector(u);if(e){const t=[...this.$refs.menu.querySelectorAll(u)].indexOf(e);t>-1&&(this.focusIndex=t,this.focusAction())}}},onKeydown(e){(38===e.keyCode||9===e.keyCode&&e.shiftKey)&&this.focusPreviousAction(e),(40===e.keyCode||9===e.keyCode&&!e.shiftKey)&&this.focusNextAction(e),33===e.keyCode&&this.focusFirstAction(e),34===e.keyCode&&this.focusLastAction(e),27===e.keyCode&&(this.closeMenu(),e.preventDefault())},removeCurrentActive(){const e=this.$refs.menu.querySelector(\"li.active\");e&&e.classList.remove(\"active\")},focusAction(){const e=this.$refs.menu.querySelectorAll(u)[this.focusIndex];if(e){this.removeCurrentActive();const t=e.closest(\"li.action\");e.focus(),t&&t.classList.add(\"active\")}},focusPreviousAction(e){this.opened&&(0===this.focusIndex?this.closeMenu():(this.preventIfEvent(e),this.focusIndex=this.focusIndex-1),this.focusAction())},focusNextAction(e){if(this.opened){const t=this.$refs.menu.querySelectorAll(u).length-1;this.focusIndex===t?this.closeMenu():(this.preventIfEvent(e),this.focusIndex=this.focusIndex+1),this.focusAction()}},focusFirstAction(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=0,this.focusAction())},focusLastAction(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=this.$refs.menu.querySelectorAll(u).length-1,this.focusAction())},preventIfEvent(e){e&&(e.preventDefault(),e.stopPropagation())},onFocus(e){this.$emit(\"focus\",e)},onBlur(e){this.$emit(\"blur\",e)}},render(e){const t=(this.$slots.default||[]).filter((e=>{var t,a,o,n;return(null==e||null===(t=e.componentOptions)||void 0===t?void 0:t.tag)||(null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(n=o.extendOptions)||void 0===n?void 0:n.name)})),a=t.every((e=>{var t,a,o,n,i,r,s,l;return\"NcActionLink\"===(null!==(t=null==e||null===(a=e.componentOptions)||void 0===a||null===(o=a.Ctor)||void 0===o||null===(n=o.extendOptions)||void 0===n?void 0:n.name)&&void 0!==t?t:null==e||null===(i=e.componentOptions)||void 0===i?void 0:i.tag)&&(null==e||null===(r=e.componentOptions)||void 0===r||null===(s=r.propsData)||void 0===s||null===(l=s.href)||void 0===l?void 0:l.startsWith(window.location.origin))}));let o=t.filter(this.isValidSingleAction);if(this.forceMenu&&o.length>0&&this.inline>0&&(l().util.warn(\"Specifying forceMenu will ignore any inline actions rendering.\"),o=[]),0===t.length)return;const n=t=>{var a,o,n,i,r,s,l,c,d,u,p,m,A,g,h,v,b,f,C,y,k,w;const S=(null==t||null===(a=t.data)||void 0===a||null===(o=a.scopedSlots)||void 0===o||null===(n=o.icon())||void 0===n?void 0:n[0])||e(\"span\",{class:[\"icon\",null==t||null===(i=t.componentOptions)||void 0===i||null===(r=i.propsData)||void 0===r?void 0:r.icon]}),x=null==t||null===(s=t.componentOptions)||void 0===s||null===(l=s.listeners)||void 0===l?void 0:l.click,N=null==t||null===(c=t.componentOptions)||void 0===c||null===(d=c.children)||void 0===d||null===(u=d[0])||void 0===u||null===(p=u.text)||void 0===p||null===(m=p.trim)||void 0===m?void 0:m.call(p),z=(null==t||null===(A=t.componentOptions)||void 0===A||null===(g=A.propsData)||void 0===g?void 0:g.ariaLabel)||N,j=this.forceTitle?N:\"\";let P=null==t||null===(h=t.componentOptions)||void 0===h||null===(v=h.propsData)||void 0===v?void 0:v.title;return this.forceTitle||P||(P=N),e(\"NcButton\",{class:[\"action-item action-item--single\",null==t||null===(b=t.data)||void 0===b?void 0:b.staticClass,null==t||null===(f=t.data)||void 0===f?void 0:f.class],attrs:{\"aria-label\":z,title:P},ref:null==t||null===(C=t.data)||void 0===C?void 0:C.ref,props:{type:this.type||(j?\"secondary\":\"tertiary\"),disabled:this.disabled||(null==t||null===(y=t.componentOptions)||void 0===y||null===(k=y.propsData)||void 0===k?void 0:k.disabled),ariaHidden:this.ariaHidden,...null==t||null===(w=t.componentOptions)||void 0===w?void 0:w.propsData},on:{focus:this.onFocus,blur:this.onBlur,...!!x&&{click:e=>{x&&x(e)}}}},[e(\"template\",{slot:\"icon\"},[S]),j])},i=t=>{var o,n;const i=(null===(o=this.$slots.icon)||void 0===o?void 0:o[0])||(this.defaultIcon?e(\"span\",{class:[\"icon\",this.defaultIcon]}):e(\"DotsHorizontal\",{props:{size:20}}));return e(\"NcPopover\",{ref:\"popover\",props:{delay:0,handleResize:!0,shown:this.opened,placement:this.placement,boundary:this.boundariesElement,container:this.container,popoverBaseClass:\"action-item__popper\",setReturnFocus:null===(n=this.$refs.menuButton)||void 0===n?void 0:n.$el},attrs:{delay:0,handleResize:!0,shown:this.opened,placement:this.placement,boundary:this.boundariesElement,container:this.container,popoverBaseClass:\"action-item__popper\"},on:{show:this.openMenu,\"after-show\":this.onOpen,hide:this.closeMenu}},[e(\"NcButton\",{class:\"action-item__menutoggle\",props:{type:this.triggerBtnType,disabled:this.disabled,ariaHidden:this.ariaHidden},slot:\"trigger\",ref:\"menuButton\",attrs:{\"aria-haspopup\":a?null:\"menu\",\"aria-label\":this.ariaLabel,\"aria-controls\":this.opened?this.randomId:null,\"aria-expanded\":this.opened.toString()},on:{focus:this.onFocus,blur:this.onBlur}},[e(\"template\",{slot:\"icon\"},[i]),this.menuTitle]),e(\"div\",{class:{open:this.opened},attrs:{tabindex:\"-1\"},on:{keydown:this.onKeydown,mousemove:this.onMouseFocusAction},ref:\"menu\"},[e(\"ul\",{attrs:{id:this.randomId,tabindex:\"-1\",role:a?null:\"menu\"}},[t])])])};if(1===t.length&&1===o.length&&!this.forceMenu)return n(o[0]);if(o.length>0&&this.inline>0){const a=o.slice(0,this.inline),r=t.filter((e=>!a.includes(e)));return e(\"div\",{class:[\"action-items\",\"action-item--\".concat(this.triggerBtnType)]},[...a.map(n),r.length>0?e(\"div\",{class:[\"action-item\",{\"action-item--open\":this.opened}]},[i(r)]):null])}return e(\"div\",{class:[\"action-item action-item--default-popover\",\"action-item--\".concat(this.triggerBtnType),{\"action-item--open\":this.opened}]},[i(t)])}};var m=a(3379),A=a.n(m),g=a(7795),h=a.n(g),v=a(569),b=a.n(v),f=a(3565),C=a.n(f),y=a(9216),k=a.n(y),w=a(4589),S=a.n(w),x=a(8827),N={};N.styleTagTransform=S(),N.setAttributes=C(),N.insert=b().bind(null,\"head\"),N.domAPI=h(),N.insertStyleElement=k();A()(x.Z,N);x.Z&&x.Z.locals&&x.Z.locals;var z=a(5565),j={};j.styleTagTransform=S(),j.setAttributes=C(),j.insert=b().bind(null,\"head\"),j.domAPI=h(),j.insertStyleElement=k();A()(z.Z,j);z.Z&&z.Z.locals&&z.Z.locals;var P=a(1900),E=a(5727),B=a.n(E),_=(0,P.Z)(p,undefined,undefined,!1,null,\"20a3e950\",null);\"function\"==typeof B()&&B()(_);const T=_.exports},6882:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>N});var o=a(644),n=a(1205),i=a(9044),r=a.n(i);const s={name:\"NcBreadcrumb\",components:{NcActions:o.default,ChevronRight:r()},props:{name:{type:String,default:null},title:{type:String,default:null},to:{type:[String,Object],default:void 0},exact:{type:Boolean,default:!1},href:{type:String,default:void 0},icon:{type:String,default:\"\"},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1}},emits:[\"update:open\",\"dropped\"],data:()=>({hovering:!1,crumbId:\"crumb-id-\".concat((0,n.Z)())}),computed:{nameTitleFallback(){return null===this.name?(console.warn(\"The `name` prop is required. Please migrate away from the deprecated `title` prop.\"),this.title):this.name},tag(){return this.to?\"router-link\":\"a\"},linkAttributes(){return this.to?{to:this.to,exact:this.exact,...this.$attrs}:{href:this.href,...this.$attrs}}},methods:{onOpenChange(e){this.$emit(\"update:open\",e)},dropped(e){return this.disableDrop||(this.$emit(\"dropped\",e,this.to||this.href),this.$parent.$emit(\"dropped\",e,this.to||this.href),this.hovering=!1),!1},dragEnter(e){this.disableDrop||(this.hovering=!0)},dragLeave(e){this.disableDrop||e.target.contains(e.relatedTarget)||this.$refs.crumb.contains(e.relatedTarget)||(this.hovering=!1)}}};var l=a(3379),c=a.n(l),d=a(7795),u=a.n(d),p=a(569),m=a.n(p),A=a(3565),g=a.n(A),h=a(9216),v=a.n(h),b=a(4589),f=a.n(b),C=a(9560),y={};y.styleTagTransform=f(),y.setAttributes=g(),y.insert=m().bind(null,\"head\"),y.domAPI=u(),y.insertStyleElement=v();c()(C.Z,y);C.Z&&C.Z.locals&&C.Z.locals;var k=a(1900),w=a(6591),S=a.n(w),x=(0,k.Z)(s,(function(){var e=this,t=e._self._c;return t(\"li\",e._b({ref:\"crumb\",staticClass:\"vue-crumb\",class:{\"vue-crumb--hovered\":e.hovering},attrs:{draggable:\"false\"},on:{dragstart:function(e){return e.preventDefault(),(()=>{}).apply(null,arguments)},drop:function(t){return t.preventDefault(),e.dropped.apply(null,arguments)},dragover:function(e){return e.preventDefault(),(()=>{}).apply(null,arguments)},dragenter:e.dragEnter,dragleave:e.dragLeave}},\"li\",e._d({},[e.crumbId,\"\"])),[!e.nameTitleFallback&&!e.icon||e.$slots.default?e._e():t(e.tag,e._g(e._b({tag:\"component\",attrs:{title:e.title}},\"component\",e.linkAttributes,!1),e.$listeners),[e._t(\"icon\",(function(){return[e.icon?t(\"span\",{staticClass:\"icon\",class:e.icon}):t(\"span\",[e._v(e._s(e.nameTitleFallback))])]}))],2),e._v(\" \"),e.$slots.default?t(\"NcActions\",{ref:\"actions\",attrs:{type:\"tertiary\",\"force-menu\":e.forceMenu,open:e.open,\"menu-title\":e.nameTitleFallback,title:e.title,\"force-title\":!0,container:\".vue-crumb[\".concat(e.crumbId,\"]\")},on:{\"update:open\":e.onOpenChange},scopedSlots:e._u([{key:\"icon\",fn:function(){return[e._t(\"menu-icon\")]},proxy:!0}],null,!0)},[e._v(\" \"),e._t(\"default\")],2):e._e(),e._v(\" \"),t(\"ChevronRight\",{staticClass:\"vue-crumb__separator\",attrs:{size:20}})],1)}),[],!1,null,\"74afe090\",null);\"function\"==typeof S()&&S()(x);const N=x.exports},1631:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>k});const o={name:\"NcButton\",props:{disabled:{type:Boolean,default:!1},type:{type:String,validator:e=>-1!==[\"primary\",\"secondary\",\"tertiary\",\"tertiary-no-background\",\"tertiary-on-primary\",\"error\",\"warning\",\"success\"].indexOf(e),default:\"secondary\"},nativeType:{type:String,validator:e=>-1!==[\"submit\",\"reset\",\"button\"].indexOf(e),default:\"button\"},wide:{type:Boolean,default:!1},ariaLabel:{type:String,default:null},href:{type:String,default:null},download:{type:String,default:null},to:{type:[String,Object],default:null},exact:{type:Boolean,default:!1},ariaHidden:{type:Boolean,default:null}},render(e){var t,a,o,n,i,r=this;const s=null===(t=this.$slots.default)||void 0===t||null===(a=t[0])||void 0===a||null===(o=a.text)||void 0===o||null===(n=o.trim)||void 0===n?void 0:n.call(o),l=!!s,c=null===(i=this.$slots)||void 0===i?void 0:i.icon;s||this.ariaLabel||console.warn(\"You need to fill either the text or the ariaLabel props in the button component.\",{text:s,ariaLabel:this.ariaLabel},this);const d=function(){let{navigate:t,isActive:a,isExactActive:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(r.to||!r.href?\"button\":\"a\",{class:[\"button-vue\",{\"button-vue--icon-only\":c&&!l,\"button-vue--text-only\":l&&!c,\"button-vue--icon-and-text\":c&&l,[\"button-vue--vue-\".concat(r.type)]:r.type,\"button-vue--wide\":r.wide,active:a,\"router-link-exact-active\":o}],attrs:{\"aria-label\":r.ariaLabel,disabled:r.disabled,type:r.href?null:r.nativeType,role:r.href?\"button\":null,href:!r.to&&r.href?r.href:null,target:!r.to&&r.href?\"_self\":null,rel:!r.to&&r.href?\"nofollow noreferrer noopener\":null,download:!r.to&&r.href&&r.download?r.download:null,...r.$attrs},on:{...r.$listeners,click:e=>{var a,o;null===(a=r.$listeners)||void 0===a||null===(o=a.click)||void 0===o||o.call(a,e),null==t||t(e)}}},[e(\"span\",{class:\"button-vue__wrapper\"},[c?e(\"span\",{class:\"button-vue__icon\",attrs:{\"aria-hidden\":r.ariaHidden}},[r.$slots.icon]):null,l?e(\"span\",{class:\"button-vue__text\"},[s]):null])])};return this.to?e(\"router-link\",{props:{custom:!0,to:this.to,exact:this.exact},scopedSlots:{default:d}}):d()}};var n=a(3379),i=a.n(n),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),d=a(3565),u=a.n(d),p=a(9216),m=a.n(p),A=a(4589),g=a.n(A),h=a(7233),v={};v.styleTagTransform=g(),v.setAttributes=u(),v.insert=c().bind(null,\"head\"),v.domAPI=s(),v.insertStyleElement=m();i()(h.Z,v);h.Z&&h.Z.locals&&h.Z.locals;var b=a(1900),f=a(2102),C=a.n(f),y=(0,b.Z)(o,undefined,undefined,!1,null,\"488fcfba\",null);\"function\"==typeof C()&&C()(y);const k=y.exports},2297:(e,t,a)=>{\"use strict\";a.d(t,{default:()=>N});var o=a(9454),n=a(4505),i=a(1206);const r={name:\"NcPopover\",components:{Dropdown:o.Dropdown},inheritAttrs:!1,props:{popoverBaseClass:{type:String,default:\"\"},focusTrap:{type:Boolean,default:!0},setReturnFocus:{default:void 0,type:[HTMLElement,SVGElement,String,Boolean]}},emits:[\"after-show\",\"after-hide\"],beforeDestroy(){this.clearFocusTrap()},methods:{async useFocusTrap(){var e,t;if(await this.$nextTick(),!this.focusTrap)return;const a=null===(e=this.$refs.popover)||void 0===e||null===(t=e.$refs.popperContent)||void 0===t?void 0:t.$el;a&&(this.$focusTrap=(0,n.createFocusTrap)(a,{escapeDeactivates:!1,allowOutsideClick:!0,setReturnFocus:this.setReturnFocus,trapStack:(0,i.L)()}),this.$focusTrap.activate())},clearFocusTrap(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var t;null===(t=this.$focusTrap)||void 0===t||t.deactivate(e),this.$focusTrap=null}catch(e){console.warn(e)}},afterShow(){this.$nextTick((()=>{this.$emit(\"after-show\"),this.useFocusTrap()}))},afterHide(){this.$emit(\"after-hide\"),this.clearFocusTrap()}}},s=r;var l=a(3379),c=a.n(l),d=a(7795),u=a.n(d),p=a(569),m=a.n(p),A=a(3565),g=a.n(A),h=a(9216),v=a.n(h),b=a(4589),f=a.n(b),C=a(1625),y={};y.styleTagTransform=f(),y.setAttributes=g(),y.insert=m().bind(null,\"head\"),y.domAPI=u(),y.insertStyleElement=v();c()(C.Z,y);C.Z&&C.Z.locals&&C.Z.locals;var k=a(1900),w=a(2405),S=a.n(w),x=(0,k.Z)(s,(function(){var e=this;return(0,e._self._c)(\"Dropdown\",e._g(e._b({ref:\"popover\",attrs:{distance:10,\"arrow-padding\":10,\"no-auto-focus\":!0,\"popper-class\":e.popoverBaseClass},on:{\"apply-show\":e.afterShow,\"apply-hide\":e.afterHide},scopedSlots:e._u([{key:\"popper\",fn:function(){return[e._t(\"default\")]},proxy:!0}],null,!0)},\"Dropdown\",e.$attrs,!1),e.$listeners),[e._t(\"trigger\")],2)}),[],!1,null,null,null);\"function\"==typeof S()&&S()(x);const N=x.exports},932:(e,t,a)=>{\"use strict\";a.d(t,{t:()=>r});var o=a(7931);const n=(0,o.getGettextBuilder)().detectLocale();[{locale:\"ar\",translations:{\"{tag} (invisible)\":\"{tag} (غير مرئي)\",\"{tag} (restricted)\":\"{tag} (مقيد)\",Actions:\"الإجراءات\",Activities:\"النشاطات\",\"Animals & Nature\":\"الحيوانات والطبيعة\",\"Anything shared with the same group of people will show up here\":\"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا\",\"Avatar of {displayName}\":\"صورة {displayName} الرمزية\",\"Avatar of {displayName}, {status}\":\"صورة {displayName} الرمزية، {status}\",\"Cancel changes\":\"إلغاء التغييرات\",\"Change title\":\"تغيير العنوان\",Choose:\"إختيار\",\"Clear text\":\"مسح النص\",Close:\"أغلق\",\"Close modal\":\"قفل الشرط\",\"Close navigation\":\"إغلاق المتصفح\",\"Close sidebar\":\"قفل الشريط الجانبي\",\"Confirm changes\":\"تأكيد التغييرات\",Custom:\"مخصص\",\"Edit item\":\"تعديل عنصر\",\"Error getting related resources\":\"خطأ في تحصيل مصادر ذات صلة\",\"External documentation for {title}\":\"الوثائق الخارجية لـ{title}\",Favorite:\"مفضلة\",Flags:\"الأعلام\",\"Food & Drink\":\"الطعام والشراب\",\"Frequently used\":\"كثيرا ما تستخدم\",Global:\"عالمي\",\"Go back to the list\":\"العودة إلى القائمة\",\"Hide password\":\"إخفاء كلمة السر\",\"Message limit of {count} characters reached\":\"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف\",\"More items …\":\"عناصر أخرى ...\",Next:\"التالي\",\"No emoji found\":\"لم يتم العثور على أي رمز تعبيري\",\"No results\":\"ليس هناك أية نتيجة\",Objects:\"الأشياء\",Open:\"فتح\",'Open link to \"{resourceTitle}\"':'فتح رابط إلى \"{resourceTitle}\"',\"Open navigation\":\"فتح المتصفح\",\"Password is secure\":\"كلمة السر مُؤمّنة\",\"Pause slideshow\":\"إيقاف العرض مؤقتًا\",\"People & Body\":\"الناس والجسم\",\"Pick an emoji\":\"اختر رمزًا تعبيريًا\",\"Please select a time zone:\":\"الرجاء تحديد المنطقة الزمنية:\",Previous:\"السابق\",\"Related resources\":\"مصادر ذات صلة\",Search:\"بحث\",\"Search results\":\"نتائج البحث\",\"Select a tag\":\"اختر علامة\",Settings:\"الإعدادات\",\"Settings navigation\":\"إعدادات المتصفح\",\"Show password\":\"أعرض كلمة السر\",\"Smileys & Emotion\":\"الوجوه و الرموز التعبيرية\",\"Start slideshow\":\"بدء العرض\",Submit:\"إرسال\",Symbols:\"الرموز\",\"Travel & Places\":\"السفر والأماكن\",\"Type to search time zone\":\"اكتب للبحث عن منطقة زمنية\",\"Unable to search the group\":\"تعذر البحث في المجموعة\",\"Undo changes\":\"التراجع عن التغييرات\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ...\"}},{locale:\"br\",translations:{\"{tag} (invisible)\":\"{tag} (diwelus)\",\"{tag} (restricted)\":\"{tag} (bevennet)\",Actions:\"Oberioù\",Activities:\"Oberiantizoù\",\"Animals & Nature\":\"Loened & Natur\",Choose:\"Dibab\",Close:\"Serriñ\",Custom:\"Personelañ\",Flags:\"Bannieloù\",\"Food & Drink\":\"Boued & Evajoù\",\"Frequently used\":\"Implijet alies\",Next:\"Da heul\",\"No emoji found\":\"Emoji ebet kavet\",\"No results\":\"Disoc'h ebet\",Objects:\"Traoù\",\"Pause slideshow\":\"Arsav an diaporama\",\"People & Body\":\"Tud & Korf\",\"Pick an emoji\":\"Choaz un emoji\",Previous:\"A-raok\",Search:\"Klask\",\"Search results\":\"Disoc'hoù an enklask\",\"Select a tag\":\"Choaz ur c'hlav\",Settings:\"Arventennoù\",\"Smileys & Emotion\":\"Smileyioù & Fromoù\",\"Start slideshow\":\"Kregiñ an diaporama\",Symbols:\"Arouezioù\",\"Travel & Places\":\"Beaj & Lec'hioù\",\"Unable to search the group\":\"Dibosupl eo klask ar strollad\"}},{locale:\"ca\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringit)\",Actions:\"Accions\",Activities:\"Activitats\",\"Animals & Nature\":\"Animals i natura\",\"Anything shared with the same group of people will show up here\":\"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancel·la els canvis\",\"Change title\":\"Canviar títol\",Choose:\"Tria\",\"Clear text\":\"Netejar text\",Close:\"Tanca\",\"Close modal\":\"Tancar el mode\",\"Close navigation\":\"Tanca la navegació\",\"Close sidebar\":\"Tancar la barra lateral\",\"Confirm changes\":\"Confirmeu els canvis\",Custom:\"Personalitzat\",\"Edit item\":\"Edita l'element\",\"Error getting related resources\":\"Error obtenint els recursos relacionats\",\"Error parsing svg\":\"Error en l'anàlisi del svg\",\"External documentation for {title}\":\"Documentació externa per a {title}\",Favorite:\"Preferit\",Flags:\"Marques\",\"Food & Drink\":\"Menjar i begudes\",\"Frequently used\":\"Utilitzats recentment\",Global:\"Global\",\"Go back to the list\":\"Torna a la llista\",\"Hide password\":\"Amagar contrasenya\",\"Message limit of {count} characters reached\":\"S'ha arribat al límit de {count} caràcters per missatge\",\"More items …\":\"Més artícles...\",Next:\"Següent\",\"No emoji found\":\"No s'ha trobat cap emoji\",\"No results\":\"Sense resultats\",Objects:\"Objectes\",Open:\"Obrir\",'Open link to \"{resourceTitle}\"':'Obrir enllaç a \"{resourceTitle}\"',\"Open navigation\":\"Obre la navegació\",\"Password is secure\":\"Contrasenya segura
\",\"Pause slideshow\":\"Atura la presentació\",\"People & Body\":\"Persones i cos\",\"Pick an emoji\":\"Trieu un emoji\",\"Please select a time zone:\":\"Seleccioneu una zona horària:\",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionats\",Search:\"Cerca\",\"Search results\":\"Resultats de cerca\",\"Select a tag\":\"Seleccioneu una etiqueta\",Settings:\"Paràmetres\",\"Settings navigation\":\"Navegació d'opcions\",\"Show password\":\"Mostrar contrasenya\",\"Smileys & Emotion\":\"Cares i emocions\",\"Start slideshow\":\"Inicia la presentació\",Submit:\"Envia\",Symbols:\"Símbols\",\"Travel & Places\":\"Viatges i llocs\",\"Type to search time zone\":\"Escriviu per cercar la zona horària\",\"Unable to search the group\":\"No es pot cercar el grup\",\"Undo changes\":\"Desfés els canvis\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escriu missatge, fes servir \"@\" per esmentar algú, fes servir \":\" per autocompletar emojis...'}},{locale:\"cs_CZ\",translations:{\"{tag} (invisible)\":\"{tag} (neviditelné)\",\"{tag} (restricted)\":\"{tag} (omezené)\",Actions:\"Akce\",Activities:\"Aktivity\",\"Animals & Nature\":\"Zvířata a příroda\",\"Anything shared with the same group of people will show up here\":\"Cokoli nasdíleného stejné skupině lidí se zobrazí zde\",\"Avatar of {displayName}\":\"Zástupný obrázek uživatele {displayName}\",\"Avatar of {displayName}, {status}\":\"Zástupný obrázek uživatele {displayName}, {status}\",\"Cancel changes\":\"Zrušit změny\",\"Change title\":\"Změnit nadpis\",Choose:\"Zvolit\",\"Clear text\":\"Čitelný text\",Close:\"Zavřít\",\"Close modal\":\"Zavřít dialogové okno\",\"Close navigation\":\"Zavřít navigaci\",\"Close sidebar\":\"Zavřít postranní panel\",\"Confirm changes\":\"Potvrdit změny\",Custom:\"Uživatelsky určené\",\"Edit item\":\"Upravit položku\",\"Error getting related resources\":\"Chyba při získávání souvisejících prostředků\",\"Error parsing svg\":\"Chyba při zpracovávání svg\",\"External documentation for {title}\":\"Externí dokumentace k {title}\",Favorite:\"Oblíbené\",Flags:\"Příznaky\",\"Food & Drink\":\"Jídlo a pití\",\"Frequently used\":\"Často používané\",Global:\"Globální\",\"Go back to the list\":\"Jít zpět na seznam\",\"Hide password\":\"Skrýt heslo\",\"Message limit of {count} characters reached\":\"Dosaženo limitu počtu ({count}) znaků zprávy\",\"More items …\":\"Další položky…\",Next:\"Následující\",\"No emoji found\":\"Nenalezeno žádné emoji\",\"No results\":\"Nic nenalezeno\",Objects:\"Objekty\",Open:\"Otevřít\",'Open link to \"{resourceTitle}\"':\"Otevřít odkaz na „{resourceTitle}“\",\"Open navigation\":\"Otevřít navigaci\",\"Password is secure\":\"Heslo je bezpečné\",\"Pause slideshow\":\"Pozastavit prezentaci\",\"People & Body\":\"Lidé a tělo\",\"Pick an emoji\":\"Vybrat emoji\",\"Please select a time zone:\":\"Vyberte časovou zónu:\",Previous:\"Předchozí\",\"Related resources\":\"Související prostředky\",Search:\"Hledat\",\"Search results\":\"Výsledky hledání\",\"Select a tag\":\"Vybrat štítek\",Settings:\"Nastavení\",\"Settings navigation\":\"Pohyb po nastavení\",\"Show password\":\"Zobrazit heslo\",\"Smileys & Emotion\":\"Úsměvy a emoce\",\"Start slideshow\":\"Spustit prezentaci\",Submit:\"Odeslat\",Symbols:\"Symboly\",\"Travel & Places\":\"Cestování a místa\",\"Type to search time zone\":\"Psaním vyhledejte časovou zónu\",\"Unable to search the group\":\"Nedaří se hledat skupinu\",\"Undo changes\":\"Vzít změny zpět\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':\"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…\"}},{locale:\"da\",translations:{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (begrænset)\",Actions:\"Handlinger\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Dyr & Natur\",\"Anything shared with the same group of people will show up here\":\"Alt der deles med samme gruppe af personer vil vises her\",\"Avatar of {displayName}\":\"Avatar af {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar af {displayName}, {status}\",\"Cancel changes\":\"Annuller ændringer\",\"Change title\":\"Ret titel\",Choose:\"Vælg\",\"Clear text\":\"Ryd tekst\",Close:\"Luk\",\"Close modal\":\"Luk vindue\",\"Close navigation\":\"Luk navigation\",\"Close sidebar\":\"Luk sidepanel\",\"Confirm changes\":\"Bekræft ændringer\",Custom:\"Brugerdefineret\",\"Edit item\":\"Rediger emne\",\"Error getting related resources\":\"Kunne ikke hente tilknyttede data\",\"Error parsing svg\":\"Fejl ved analysering af svg\",\"External documentation for {title}\":\"Ekstern dokumentation for {title}\",Favorite:\"Favorit\",Flags:\"Flag\",\"Food & Drink\":\"Mad & Drikke\",\"Frequently used\":\"Ofte brugt\",Global:\"Global\",\"Go back to the list\":\"Tilbage til listen\",\"Hide password\":\"Skjul kodeord\",\"Message limit of {count} characters reached\":\"Begrænsning på {count} tegn er nået\",\"More items …\":\"Mere ...\",Next:\"Videre\",\"No emoji found\":\"Ingen emoji fundet\",\"No results\":\"Ingen resultater\",Objects:\"Objekter\",Open:\"Åbn\",'Open link to \"{resourceTitle}\"':'Åbn link til \"{resourceTitle}\"',\"Open navigation\":\"Åbn navigation\",\"Password is secure\":\"Kodeordet er sikkert\",\"Pause slideshow\":\"Suspender fremvisning\",\"People & Body\":\"Mennesker & Menneskekroppen\",\"Pick an emoji\":\"Vælg en emoji\",\"Please select a time zone:\":\"Vælg venligst en tidszone:\",Previous:\"Forrige\",\"Related resources\":\"Relaterede emner\",Search:\"Søg\",\"Search results\":\"Søgeresultater\",\"Select a tag\":\"Vælg et mærke\",Settings:\"Indstillinger\",\"Settings navigation\":\"Naviger i indstillinger\",\"Show password\":\"Vis kodeord\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start fremvisning\",Submit:\"Send\",Symbols:\"Symboler\",\"Travel & Places\":\"Rejser & Rejsemål\",\"Type to search time zone\":\"Indtast for at søge efter tidszone\",\"Unable to search the group\":\"Kan ikke søge på denne gruppe\",\"Undo changes\":\"Fortryd ændringer\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv besked, brug \"@\" for at nævne nogen, brug \":\" til emoji-autofuldførelse ...'}},{locale:\"de\",translations:{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",Actions:\"Aktionen\",Activities:\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Anything shared with the same group of people will show up here\":\"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt\",\"Avatar of {displayName}\":\"Avatar von {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar von {displayName}, {status}\",\"Cancel changes\":\"Änderungen verwerfen\",\"Change title\":\"Titel ändern\",Choose:\"Auswählen\",\"Clear text\":\"Klartext\",Close:\"Schließen\",\"Close modal\":\"Modal schließen\",\"Close navigation\":\"Navigation schließen\",\"Close sidebar\":\"Seitenleiste schließen\",\"Confirm changes\":\"Änderungen bestätigen\",Custom:\"Benutzerdefiniert\",\"Edit item\":\"Objekt bearbeiten\",\"Error getting related resources\":\"Fehler beim Abrufen verwandter Ressourcen\",\"Error parsing svg\":\"Fehler beim Einlesen der SVG\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",Favorite:\"Favorit\",Flags:\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",Global:\"Global\",\"Go back to the list\":\"Zurück zur Liste\",\"Hide password\":\"Passwort verbergen\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"More items …\":\"Weitere Elemente …\",Next:\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",Objects:\"Gegenstände\",Open:\"Öffnen\",'Open link to \"{resourceTitle}\"':'Link zu \"{resourceTitle}\" öffnen',\"Open navigation\":\"Navigation öffnen\",\"Password is secure\":\"Passwort ist sicher\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Please select a time zone:\":\"Bitte wählen Sie eine Zeitzone:\",Previous:\"Vorherige\",\"Related resources\":\"Verwandte Ressourcen\",Search:\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",Settings:\"Einstellungen\",\"Settings navigation\":\"Einstellungen für die Navigation\",\"Show password\":\"Passwort anzeigen\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",Submit:\"Einreichen\",Symbols:\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Type to search time zone\":\"Tippen, um Zeitzone zu suchen\",\"Unable to search the group\":\"Die Gruppe konnte nicht durchsucht werden\",\"Undo changes\":\"Änderungen rückgängig machen\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Nachricht schreiben, \"@\" um jemanden zu erwähnen, \":\" für die automatische Vervollständigung von Emojis …'}},{locale:\"de_DE\",translations:{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",Actions:\"Aktionen\",Activities:\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Anything shared with the same group of people will show up here\":\"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt\",\"Avatar of {displayName}\":\"Avatar von {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar von {displayName}, {status}\",\"Cancel changes\":\"Änderungen verwerfen\",\"Change title\":\"Titel ändern\",Choose:\"Auswählen\",\"Clear text\":\"Klartext\",Close:\"Schließen\",\"Close modal\":\"Modal schließen\",\"Close navigation\":\"Navigation schließen\",\"Close sidebar\":\"Seitenleiste schließen\",\"Confirm changes\":\"Änderungen bestätigen\",Custom:\"Benutzerdefiniert\",\"Edit item\":\"Objekt bearbeiten\",\"Error getting related resources\":\"Fehler beim Abrufen verwandter Ressourcen\",\"Error parsing svg\":\"Fehler beim Einlesen der SVG\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",Favorite:\"Favorit\",Flags:\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",Global:\"Global\",\"Go back to the list\":\"Zurück zur Liste\",\"Hide password\":\"Passwort verbergen\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"More items …\":\"Weitere Elemente …\",Next:\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",Objects:\"Objekte\",Open:\"Öffnen\",'Open link to \"{resourceTitle}\"':'Link zu \"{resourceTitle}\" öffnen',\"Open navigation\":\"Navigation öffnen\",\"Password is secure\":\"Passwort ist sicher\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Please select a time zone:\":\"Bitte eine Zeitzone auswählen:\",Previous:\"Vorherige\",\"Related resources\":\"Verwandte Ressourcen\",Search:\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",Settings:\"Einstellungen\",\"Settings navigation\":\"Einstellungen für die Navigation\",\"Show password\":\"Passwort anzeigen\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",Submit:\"Einreichen\",Symbols:\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Type to search time zone\":\"Tippen, um eine Zeitzone zu suchen\",\"Unable to search the group\":\"Die Gruppe kann nicht durchsucht werden\",\"Undo changes\":\"Änderungen rückgängig machen\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Nachricht schreiben, \"@\" um jemanden zu erwähnen, \":\" für die automatische Vervollständigung von Emojis …'}},{locale:\"el\",translations:{\"{tag} (invisible)\":\"{tag} (αόρατο)\",\"{tag} (restricted)\":\"{tag} (περιορισμένο)\",Actions:\"Ενέργειες\",Activities:\"Δραστηριότητες\",\"Animals & Nature\":\"Ζώα & Φύση\",\"Anything shared with the same group of people will show up here\":\"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ\",\"Avatar of {displayName}\":\"Άβαταρ του {displayName}\",\"Avatar of {displayName}, {status}\":\"Άβαταρ του {displayName}, {status}\",\"Cancel changes\":\"Ακύρωση αλλαγών\",\"Change title\":\"Αλλαγή τίτλου\",Choose:\"Επιλογή\",\"Clear text\":\"Εκκαθάριση κειμένου\",Close:\"Κλείσιμο\",\"Close modal\":\"Βοηθητικό κλείσιμο\",\"Close navigation\":\"Κλείσιμο πλοήγησης\",\"Close sidebar\":\"Κλείσιμο πλευρικής μπάρας\",\"Confirm changes\":\"Επιβεβαίωση αλλαγών\",Custom:\"Προσαρμογή\",\"Edit item\":\"Επεξεργασία\",\"Error getting related resources\":\"Σφάλμα λήψης σχετικών πόρων\",\"Error parsing svg\":\"Σφάλμα ανάλυσης svg\",\"External documentation for {title}\":\"Εξωτερική τεκμηρίωση για {title}\",Favorite:\"Αγαπημένα\",Flags:\"Σημαίες\",\"Food & Drink\":\"Φαγητό & Ποτό\",\"Frequently used\":\"Συχνά χρησιμοποιούμενο\",Global:\"Καθολικό\",\"Go back to the list\":\"Επιστροφή στην αρχική λίστα \",\"Hide password\":\"Απόκρυψη κωδικού πρόσβασης\",\"Message limit of {count} characters reached\":\"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος\",\"More items …\":\"Περισσότερα στοιχεία …\",Next:\"Επόμενο\",\"No emoji found\":\"Δεν βρέθηκε emoji\",\"No results\":\"Κανένα αποτέλεσμα\",Objects:\"Αντικείμενα\",Open:\"Άνοιγμα\",'Open link to \"{resourceTitle}\"':'Άνοιγμα συνδέσμου στο \"{resourceTitle}\"',\"Open navigation\":\"Άνοιγμα πλοήγησης\",\"Password is secure\":\"Ο κωδικός πρόσβασης είναι ασφαλής\",\"Pause slideshow\":\"Παύση προβολής διαφανειών\",\"People & Body\":\"Άνθρωποι & Σώμα\",\"Pick an emoji\":\"Επιλέξτε ένα emoji\",\"Please select a time zone:\":\"Παρακαλούμε επιλέξτε μια ζώνη ώρας:\",Previous:\"Προηγούμενο\",\"Related resources\":\"Σχετικοί πόροι\",Search:\"Αναζήτηση\",\"Search results\":\"Αποτελέσματα αναζήτησης\",\"Select a tag\":\"Επιλογή ετικέτας\",Settings:\"Ρυθμίσεις\",\"Settings navigation\":\"Πλοήγηση ρυθμίσεων\",\"Show password\":\"Εμφάνιση κωδικού πρόσβασης\",\"Smileys & Emotion\":\"Φατσούλες & Συναίσθημα\",\"Start slideshow\":\"Έναρξη προβολής διαφανειών\",Submit:\"Υποβολή\",Symbols:\"Σύμβολα\",\"Travel & Places\":\"Ταξίδια & Τοποθεσίες\",\"Type to search time zone\":\"Πληκτρολογήστε για αναζήτηση ζώνης ώρας\",\"Unable to search the group\":\"Δεν είναι δυνατή η αναζήτηση της ομάδας\",\"Undo changes\":\"Αναίρεση Αλλαγών\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε \"@\" για να αναφέρετε κάποιον, χρησιμοποιείστε \":\" για αυτόματη συμπλήρωση emoji …'}},{locale:\"en_GB\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restricted)\",Actions:\"Actions\",Activities:\"Activities\",\"Animals & Nature\":\"Animals & Nature\",\"Anything shared with the same group of people will show up here\":\"Anything shared with the same group of people will show up here\",\"Avatar of {displayName}\":\"Avatar of {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar of {displayName}, {status}\",\"Cancel changes\":\"Cancel changes\",\"Change title\":\"Change title\",Choose:\"Choose\",\"Clear text\":\"Clear text\",Close:\"Close\",\"Close modal\":\"Close modal\",\"Close navigation\":\"Close navigation\",\"Close sidebar\":\"Close sidebar\",\"Confirm changes\":\"Confirm changes\",Custom:\"Custom\",\"Edit item\":\"Edit item\",\"Error getting related resources\":\"Error getting related resources\",\"Error parsing svg\":\"Error parsing svg\",\"External documentation for {title}\":\"External documentation for {title}\",Favorite:\"Favourite\",Flags:\"Flags\",\"Food & Drink\":\"Food & Drink\",\"Frequently used\":\"Frequently used\",Global:\"Global\",\"Go back to the list\":\"Go back to the list\",\"Hide password\":\"Hide password\",\"Message limit of {count} characters reached\":\"Message limit of {count} characters reached\",\"More items …\":\"More items …\",Next:\"Next\",\"No emoji found\":\"No emoji found\",\"No results\":\"No results\",Objects:\"Objects\",Open:\"Open\",'Open link to \"{resourceTitle}\"':'Open link to \"{resourceTitle}\"',\"Open navigation\":\"Open navigation\",\"Password is secure\":\"Password is secure\",\"Pause slideshow\":\"Pause slideshow\",\"People & Body\":\"People & Body\",\"Pick an emoji\":\"Pick an emoji\",\"Please select a time zone:\":\"Please select a time zone:\",Previous:\"Previous\",\"Related resources\":\"Related resources\",Search:\"Search\",\"Search results\":\"Search results\",\"Select a tag\":\"Select a tag\",Settings:\"Settings\",\"Settings navigation\":\"Settings navigation\",\"Show password\":\"Show password\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start slideshow\",Submit:\"Submit\",Symbols:\"Symbols\",\"Travel & Places\":\"Travel & Places\",\"Type to search time zone\":\"Type to search time zone\",\"Unable to search the group\":\"Unable to search the group\",\"Undo changes\":\"Undo changes\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …'}},{locale:\"eo\",translations:{\"{tag} (invisible)\":\"{tag} (kaŝita)\",\"{tag} (restricted)\":\"{tag} (limigita)\",Actions:\"Agoj\",Activities:\"Aktiveco\",\"Animals & Nature\":\"Bestoj & Naturo\",Choose:\"Elektu\",Close:\"Fermu\",Custom:\"Propra\",Flags:\"Flagoj\",\"Food & Drink\":\"Manĝaĵo & Trinkaĵo\",\"Frequently used\":\"Ofte uzataj\",\"Message limit of {count} characters reached\":\"La limo je {count} da literoj atingita\",Next:\"Sekva\",\"No emoji found\":\"La emoĝio forestas\",\"No results\":\"La rezulto forestas\",Objects:\"Objektoj\",\"Pause slideshow\":\"Payzi bildprezenton\",\"People & Body\":\"Homoj & Korpo\",\"Pick an emoji\":\"Elekti emoĝion \",Previous:\"Antaŭa\",Search:\"Serĉi\",\"Search results\":\"Serĉrezultoj\",\"Select a tag\":\"Elektu etikedon\",Settings:\"Agordo\",\"Settings navigation\":\"Agorda navigado\",\"Smileys & Emotion\":\"Ridoj kaj Emocioj\",\"Start slideshow\":\"Komenci bildprezenton\",Symbols:\"Signoj\",\"Travel & Places\":\"Vojaĵoj & Lokoj\",\"Unable to search the group\":\"Ne eblas serĉi en la grupo\",\"Write message, @ to mention someone …\":\"Mesaĝi, uzu @ por mencii iun ...\"}},{locale:\"es\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringido)\",Actions:\"Acciones\",Activities:\"Actividades\",\"Animals & Nature\":\"Animales y naturaleza\",\"Anything shared with the same group of people will show up here\":\"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancelar cambios\",\"Change title\":\"Cambiar título\",Choose:\"Elegir\",\"Clear text\":\"Limpiar texto\",Close:\"Cerrar\",\"Close modal\":\"Cerrar modal\",\"Close navigation\":\"Cerrar navegación\",\"Close sidebar\":\"Cerrar barra lateral\",\"Confirm changes\":\"Confirmar cambios\",Custom:\"Personalizado\",\"Edit item\":\"Editar elemento\",\"Error getting related resources\":\"Se encontró un error al obtener los recursos relacionados\",\"Error parsing svg\":\"Error procesando svg\",\"External documentation for {title}\":\"Documentacion externa de {title}\",Favorite:\"Favorito\",Flags:\"Banderas\",\"Food & Drink\":\"Comida y bebida\",\"Frequently used\":\"Usado con frecuenca\",Global:\"Global\",\"Go back to the list\":\"Volver a la lista\",\"Hide password\":\"Ocultar contraseña\",\"Message limit of {count} characters reached\":\"El mensaje ha alcanzado el límite de {count} caracteres\",\"More items …\":\"Más ítems...\",Next:\"Siguiente\",\"No emoji found\":\"No hay ningún emoji\",\"No results\":\" Ningún resultado\",Objects:\"Objetos\",Open:\"Abrir\",'Open link to \"{resourceTitle}\"':'Abrir enlace a \"{resourceTitle}\"',\"Open navigation\":\"Abrir navegación\",\"Password is secure\":\"La contraseña es segura\",\"Pause slideshow\":\"Pausar la presentación \",\"People & Body\":\"Personas y cuerpos\",\"Pick an emoji\":\"Elegir un emoji\",\"Please select a time zone:\":\"Por favor elige un huso de horario:\",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionados\",Search:\"Buscar\",\"Search results\":\"Resultados de la búsqueda\",\"Select a tag\":\"Seleccione una etiqueta\",Settings:\"Ajustes\",\"Settings navigation\":\"Navegación por ajustes\",\"Show password\":\"Mostrar contraseña\",\"Smileys & Emotion\":\"Smileys y emoticonos\",\"Start slideshow\":\"Iniciar la presentación\",Submit:\"Enviar\",Symbols:\"Símbolos\",\"Travel & Places\":\"Viajes y lugares\",\"Type to search time zone\":\"Escribe para buscar un huso de horario\",\"Unable to search the group\":\"No es posible buscar en el grupo\",\"Undo changes\":\"Deshacer cambios\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escribir mensaje, utilice \"@\" para mencionar a alguien, utilice \":\" para autocompletado de emojis ...'}},{locale:\"eu\",translations:{\"{tag} (invisible)\":\"{tag} (ikusezina)\",\"{tag} (restricted)\":\"{tag} (mugatua)\",Actions:\"Ekintzak\",Activities:\"Jarduerak\",\"Animals & Nature\":\"Animaliak eta Natura\",\"Anything shared with the same group of people will show up here\":\"Pertsona-talde berarekin partekatutako edozer agertuko da hemen\",\"Avatar of {displayName}\":\"{displayName}-(e)n irudia\",\"Avatar of {displayName}, {status}\":\"{displayName} -(e)n irudia, {status}\",\"Cancel changes\":\"Ezeztatu aldaketak\",\"Change title\":\"Aldatu titulua\",Choose:\"Aukeratu\",\"Clear text\":\"Garbitu testua\",Close:\"Itxi\",\"Close modal\":\"Itxi modala\",\"Close navigation\":\"Itxi nabigazioa\",\"Close sidebar\":\"Itxi albo-barra\",\"Confirm changes\":\"Baieztatu aldaketak\",Custom:\"Pertsonalizatua\",\"Edit item\":\"Editatu elementua\",\"Error getting related resources\":\"Errorea erlazionatutako baliabideak lortzerakoan\",\"Error parsing svg\":\"Errore bat gertatu da svg-a analizatzean\",\"External documentation for {title}\":\"Kanpoko dokumentazioa {title}(r)entzat\",Favorite:\"Gogokoa\",Flags:\"Banderak\",\"Food & Drink\":\"Janaria eta edariak\",\"Frequently used\":\"Askotan erabilia\",Global:\"Globala\",\"Go back to the list\":\"Bueltatu zerrendara\",\"Hide password\":\"Ezkutatu pasahitza\",\"Message limit of {count} characters reached\":\"Mezuaren {count} karaketere-limitera heldu zara\",\"More items …\":\"Elementu gehiago …\",Next:\"Hurrengoa\",\"No emoji found\":\"Ez da emojirik aurkitu\",\"No results\":\"Emaitzarik ez\",Objects:\"Objektuak\",Open:\"Ireki\",'Open link to \"{resourceTitle}\"':'Ireki esteka: \"{resourceTitle}\"',\"Open navigation\":\"Ireki nabigazioa\",\"Password is secure\":\"Pasahitza segurua da\",\"Pause slideshow\":\"Pausatu diaporama\",\"People & Body\":\"Jendea eta gorputza\",\"Pick an emoji\":\"Hautatu emoji bat\",\"Please select a time zone:\":\"Mesedez hautatu ordu-zona bat:\",Previous:\"Aurrekoa\",\"Related resources\":\"Erlazionatutako baliabideak\",Search:\"Bilatu\",\"Search results\":\"Bilaketa emaitzak\",\"Select a tag\":\"Hautatu etiketa bat\",Settings:\"Ezarpenak\",\"Settings navigation\":\"Nabigazio ezarpenak\",\"Show password\":\"Erakutsi pasahitza\",\"Smileys & Emotion\":\"Smileyak eta emozioa\",\"Start slideshow\":\"Hasi diaporama\",Submit:\"Bidali\",Symbols:\"Sinboloak\",\"Travel & Places\":\"Bidaiak eta lekuak\",\"Type to search time zone\":\"Idatzi ordu-zona bat bilatzeko\",\"Unable to search the group\":\"Ezin izan da taldea bilatu\",\"Undo changes\":\"Aldaketak desegin\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Idatzi mezua, erabili \"@\" norbait aipatzeko, erabili \":\" emojiak automatikoki osatzeko...'}},{locale:\"fi_FI\",translations:{\"{tag} (invisible)\":\"{tag} (näkymätön)\",\"{tag} (restricted)\":\"{tag} (rajoitettu)\",Actions:\"Toiminnot\",Activities:\"Aktiviteetit\",\"Animals & Nature\":\"Eläimet & luonto\",\"Avatar of {displayName}\":\"Käyttäjän {displayName} avatar\",\"Avatar of {displayName}, {status}\":\"Käyttäjän {displayName} avatar, {status}\",\"Cancel changes\":\"Peruuta muutokset\",Choose:\"Valitse\",Close:\"Sulje\",\"Close navigation\":\"Sulje navigaatio\",\"Confirm changes\":\"Vahvista muutokset\",Custom:\"Mukautettu\",\"Edit item\":\"Muokkaa kohdetta\",\"External documentation for {title}\":\"Ulkoinen dokumentaatio kohteelle {title}\",Flags:\"Liput\",\"Food & Drink\":\"Ruoka & juoma\",\"Frequently used\":\"Usein käytetyt\",Global:\"Yleinen\",\"Go back to the list\":\"Siirry takaisin listaan\",\"Message limit of {count} characters reached\":\"Viestin merkken enimmäisimäärä {count} täynnä \",Next:\"Seuraava\",\"No emoji found\":\"Emojia ei löytynyt\",\"No results\":\"Ei tuloksia\",Objects:\"Esineet & asiat\",\"Open navigation\":\"Avaa navigaatio\",\"Pause slideshow\":\"Keskeytä diaesitys\",\"People & Body\":\"Ihmiset & keho\",\"Pick an emoji\":\"Valitse emoji\",\"Please select a time zone:\":\"Valitse aikavyöhyke:\",Previous:\"Edellinen\",Search:\"Etsi\",\"Search results\":\"Hakutulokset\",\"Select a tag\":\"Valitse tagi\",Settings:\"Asetukset\",\"Settings navigation\":\"Asetusnavigaatio\",\"Smileys & Emotion\":\"Hymiöt & tunteet\",\"Start slideshow\":\"Aloita diaesitys\",Submit:\"Lähetä\",Symbols:\"Symbolit\",\"Travel & Places\":\"Matkustus & kohteet\",\"Type to search time zone\":\"Kirjoita etsiäksesi aikavyöhyke\",\"Unable to search the group\":\"Ryhmää ei voi hakea\",\"Undo changes\":\"Kumoa muutokset\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…\"}},{locale:\"fr\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restreint)\",Actions:\"Actions\",Activities:\"Activités\",\"Animals & Nature\":\"Animaux & Nature\",\"Anything shared with the same group of people will show up here\":\"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Annuler les modifications\",\"Change title\":\"Modifier le titre\",Choose:\"Choisir\",\"Clear text\":\"Effacer le texte\",Close:\"Fermer\",\"Close modal\":\"Fermer la fenêtre\",\"Close navigation\":\"Fermer la navigation\",\"Close sidebar\":\"Fermer la barre latérale\",\"Confirm changes\":\"Confirmer les modifications\",Custom:\"Personnalisé\",\"Edit item\":\"Éditer l'élément\",\"Error getting related resources\":\"Erreur à la récupération des ressources liées\",\"Error parsing svg\":\"Erreur d'analyse SVG\",\"External documentation for {title}\":\"Documentation externe pour {title}\",Favorite:\"Favori\",Flags:\"Drapeaux\",\"Food & Drink\":\"Nourriture & Boissons\",\"Frequently used\":\"Utilisés fréquemment\",Global:\"Global\",\"Go back to the list\":\"Retourner à la liste\",\"Hide password\":\"Cacher le mot de passe\",\"Message limit of {count} characters reached\":\"Limite de messages de {count} caractères atteinte\",\"More items …\":\"Plus d'éléments...\",Next:\"Suivant\",\"No emoji found\":\"Pas d’émoji trouvé\",\"No results\":\"Aucun résultat\",Objects:\"Objets\",Open:\"Ouvrir\",'Open link to \"{resourceTitle}\"':'Ouvrir le lien vers \"{resourceTitle}\"',\"Open navigation\":\"Ouvrir la navigation\",\"Password is secure\":\"Le mot de passe est sécurisé\",\"Pause slideshow\":\"Mettre le diaporama en pause\",\"People & Body\":\"Personnes & Corps\",\"Pick an emoji\":\"Choisissez un émoji\",\"Please select a time zone:\":\"Sélectionnez un fuseau horaire : \",Previous:\"Précédent\",\"Related resources\":\"Ressources liées\",Search:\"Chercher\",\"Search results\":\"Résultats de recherche\",\"Select a tag\":\"Sélectionnez une balise\",Settings:\"Paramètres\",\"Settings navigation\":\"Navigation dans les paramètres\",\"Show password\":\"Afficher le mot de passe\",\"Smileys & Emotion\":\"Smileys & Émotions\",\"Start slideshow\":\"Démarrer le diaporama\",Submit:\"Valider\",Symbols:\"Symboles\",\"Travel & Places\":\"Voyage & Lieux\",\"Type to search time zone\":\"Saisissez les premiers lettres pour rechercher un fuseau horaire\",\"Unable to search the group\":\"Impossible de chercher le groupe\",\"Undo changes\":\"Annuler les changements\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Écrire un message, utiliser \"@\" pour mentionner une personne, \":\" pour l\\'autocomplétion des émojis...'}},{locale:\"gl\",translations:{\"{tag} (invisible)\":\"{tag} (invisíbel)\",\"{tag} (restricted)\":\"{tag} (restrinxido)\",Actions:\"Accións\",Activities:\"Actividades\",\"Animals & Nature\":\"Animais e natureza\",\"Cancel changes\":\"Cancelar os cambios\",Choose:\"Escoller\",Close:\"Pechar\",\"Confirm changes\":\"Confirma os cambios\",Custom:\"Personalizado\",\"External documentation for {title}\":\"Documentación externa para {title}\",Flags:\"Bandeiras\",\"Food & Drink\":\"Comida e bebida\",\"Frequently used\":\"Usado con frecuencia\",\"Message limit of {count} characters reached\":\"Acadouse o límite de {count} caracteres por mensaxe\",Next:\"Seguinte\",\"No emoji found\":\"Non se atopou ningún «emoji»\",\"No results\":\"Sen resultados\",Objects:\"Obxectos\",\"Pause slideshow\":\"Pausar o diaporama\",\"People & Body\":\"Persoas e corpo\",\"Pick an emoji\":\"Escolla un «emoji»\",Previous:\"Anterir\",Search:\"Buscar\",\"Search results\":\"Resultados da busca\",\"Select a tag\":\"Seleccione unha etiqueta\",Settings:\"Axustes\",\"Settings navigation\":\"Navegación polos axustes\",\"Smileys & Emotion\":\"Sorrisos e emocións\",\"Start slideshow\":\"Iniciar o diaporama\",Submit:\"Enviar\",Symbols:\"Símbolos\",\"Travel & Places\":\"Viaxes e lugares\",\"Unable to search the group\":\"Non foi posíbel buscar o grupo\",\"Write message, @ to mention someone …\":\"Escriba a mensaxe, @ para mencionar a alguén…\"}},{locale:\"he\",translations:{\"{tag} (invisible)\":\"{tag} (נסתר)\",\"{tag} (restricted)\":\"{tag} (מוגבל)\",Actions:\"פעולות\",Activities:\"פעילויות\",\"Animals & Nature\":\"חיות וטבע\",Choose:\"בחירה\",Close:\"סגירה\",Custom:\"בהתאמה אישית\",Flags:\"דגלים\",\"Food & Drink\":\"מזון ומשקאות\",\"Frequently used\":\"בשימוש תדיר\",Next:\"הבא\",\"No emoji found\":\"לא נמצא אמוג׳י\",\"No results\":\"אין תוצאות\",Objects:\"חפצים\",\"Pause slideshow\":\"השהיית מצגת\",\"People & Body\":\"אנשים וגוף\",\"Pick an emoji\":\"נא לבחור אמוג׳י\",Previous:\"הקודם\",Search:\"חיפוש\",\"Search results\":\"תוצאות חיפוש\",\"Select a tag\":\"בחירת תגית\",Settings:\"הגדרות\",\"Smileys & Emotion\":\"חייכנים ורגשונים\",\"Start slideshow\":\"התחלת המצגת\",Symbols:\"סמלים\",\"Travel & Places\":\"טיולים ומקומות\",\"Unable to search the group\":\"לא ניתן לחפש בקבוצה\"}},{locale:\"hu_HU\",translations:{\"{tag} (invisible)\":\"{tag} (láthatatlan)\",\"{tag} (restricted)\":\"{tag} (korlátozott)\",Actions:\"Műveletek\",Activities:\"Tevékenységek\",\"Animals & Nature\":\"Állatok és természet\",\"Anything shared with the same group of people will show up here\":\"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni\",\"Avatar of {displayName}\":\"{displayName} profilképe\",\"Avatar of {displayName}, {status}\":\"{displayName} profilképe, {status}\",\"Cancel changes\":\"Változtatások elvetése\",\"Change title\":\"Cím megváltoztatása\",Choose:\"Válassszon\",\"Clear text\":\"Szöveg törlése\",Close:\"Bezárás\",\"Close modal\":\"Ablak bezárása\",\"Close navigation\":\"Navigáció bezárása\",\"Close sidebar\":\"Oldalsáv bezárása\",\"Confirm changes\":\"Változtatások megerősítése\",Custom:\"Egyéni\",\"Edit item\":\"Elem szerkesztése\",\"Error getting related resources\":\"Hiba a kapcsolódó erőforrások lekérésekor\",\"Error parsing svg\":\"Hiba az SVG feldolgozásakor\",\"External documentation for {title}\":\"Külső dokumentáció ehhez: {title}\",Favorite:\"Kedvenc\",Flags:\"Zászlók\",\"Food & Drink\":\"Étel és ital\",\"Frequently used\":\"Gyakran használt\",Global:\"Globális\",\"Go back to the list\":\"Ugrás vissza a listához\",\"Hide password\":\"Jelszó elrejtése\",\"Message limit of {count} characters reached\":\"{count} karakteres üzenetkorlát elérve\",\"More items …\":\"További elemek...\",Next:\"Következő\",\"No emoji found\":\"Nem található emodzsi\",\"No results\":\"Nincs találat\",Objects:\"Tárgyak\",Open:\"Megnyitás\",'Open link to \"{resourceTitle}\"':\"A(z) „{resourceTitle}” hivatkozásának megnyitása\",\"Open navigation\":\"Navigáció megnyitása\",\"Password is secure\":\"A jelszó biztonságos\",\"Pause slideshow\":\"Diavetítés szüneteltetése\",\"People & Body\":\"Emberek és test\",\"Pick an emoji\":\"Válasszon egy emodzsit\",\"Please select a time zone:\":\"Válasszon időzónát:\",Previous:\"Előző\",\"Related resources\":\"Kapcsolódó erőforrások\",Search:\"Keresés\",\"Search results\":\"Találatok\",\"Select a tag\":\"Válasszon címkét\",Settings:\"Beállítások\",\"Settings navigation\":\"Navigáció a beállításokban\",\"Show password\":\"Jelszó megjelenítése\",\"Smileys & Emotion\":\"Mosolyok és érzelmek\",\"Start slideshow\":\"Diavetítés indítása\",Submit:\"Beküldés\",Symbols:\"Szimbólumok\",\"Travel & Places\":\"Utazás és helyek\",\"Type to search time zone\":\"Gépeljen az időzóna kereséséhez\",\"Unable to search the group\":\"A csoport nem kereshető\",\"Undo changes\":\"Változtatások visszavonása\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':\"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…\"}},{locale:\"is\",translations:{\"{tag} (invisible)\":\"{tag} (ósýnilegt)\",\"{tag} (restricted)\":\"{tag} (takmarkað)\",Actions:\"Aðgerðir\",Activities:\"Aðgerðir\",\"Animals & Nature\":\"Dýr og náttúra\",Choose:\"Velja\",Close:\"Loka\",Custom:\"Sérsniðið\",Flags:\"Flögg\",\"Food & Drink\":\"Matur og drykkur\",\"Frequently used\":\"Oftast notað\",Next:\"Næsta\",\"No emoji found\":\"Ekkert tjáningartákn fannst\",\"No results\":\"Engar niðurstöður\",Objects:\"Hlutir\",\"Pause slideshow\":\"Gera hlé á skyggnusýningu\",\"People & Body\":\"Fólk og líkami\",\"Pick an emoji\":\"Veldu tjáningartákn\",Previous:\"Fyrri\",Search:\"Leita\",\"Search results\":\"Leitarniðurstöður\",\"Select a tag\":\"Veldu merki\",Settings:\"Stillingar\",\"Smileys & Emotion\":\"Broskallar og tilfinningar\",\"Start slideshow\":\"Byrja skyggnusýningu\",Symbols:\"Tákn\",\"Travel & Places\":\"Staðir og ferðalög\",\"Unable to search the group\":\"Get ekki leitað í hópnum\"}},{locale:\"it\",translations:{\"{tag} (invisible)\":\"{tag} (invisibile)\",\"{tag} (restricted)\":\"{tag} (limitato)\",Actions:\"Azioni\",Activities:\"Attività\",\"Animals & Nature\":\"Animali e natura\",\"Anything shared with the same group of people will show up here\":\"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui\",\"Avatar of {displayName}\":\"Avatar di {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar di {displayName}, {status}\",\"Cancel changes\":\"Annulla modifiche\",\"Change title\":\"Modifica il titolo\",Choose:\"Scegli\",\"Clear text\":\"Cancella il testo\",Close:\"Chiudi\",\"Close modal\":\"Chiudi il messaggio modale\",\"Close navigation\":\"Chiudi la navigazione\",\"Close sidebar\":\"Chiudi la barra laterale\",\"Confirm changes\":\"Conferma modifiche\",Custom:\"Personalizzato\",\"Edit item\":\"Modifica l'elemento\",\"Error getting related resources\":\"Errore nell'ottenere risorse correlate\",\"Error parsing svg\":\"Errore nell'analizzare l'svg\",\"External documentation for {title}\":\"Documentazione esterna per {title}\",Favorite:\"Preferito\",Flags:\"Bandiere\",\"Food & Drink\":\"Cibo e bevande\",\"Frequently used\":\"Usati di frequente\",Global:\"Globale\",\"Go back to the list\":\"Torna all'elenco\",\"Hide password\":\"Nascondi la password\",\"Message limit of {count} characters reached\":\"Limite dei messaggi di {count} caratteri raggiunto\",\"More items …\":\"Più elementi ...\",Next:\"Successivo\",\"No emoji found\":\"Nessun emoji trovato\",\"No results\":\"Nessun risultato\",Objects:\"Oggetti\",Open:\"Apri\",'Open link to \"{resourceTitle}\"':'Apri il link a \"{resourceTitle}\"',\"Open navigation\":\"Apri la navigazione\",\"Password is secure\":\"La password è sicura\",\"Pause slideshow\":\"Presentazione in pausa\",\"People & Body\":\"Persone e corpo\",\"Pick an emoji\":\"Scegli un emoji\",\"Please select a time zone:\":\"Si prega di selezionare un fuso orario:\",Previous:\"Precedente\",\"Related resources\":\"Risorse correlate\",Search:\"Cerca\",\"Search results\":\"Risultati di ricerca\",\"Select a tag\":\"Seleziona un'etichetta\",Settings:\"Impostazioni\",\"Settings navigation\":\"Navigazione delle impostazioni\",\"Show password\":\"Mostra la password\",\"Smileys & Emotion\":\"Faccine ed emozioni\",\"Start slideshow\":\"Avvia presentazione\",Submit:\"Invia\",Symbols:\"Simboli\",\"Travel & Places\":\"Viaggi e luoghi\",\"Type to search time zone\":\"Digita per cercare un fuso orario\",\"Unable to search the group\":\"Impossibile cercare il gruppo\",\"Undo changes\":\"Cancella i cambiamenti\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Scrivi un messaggio, \"@\" per menzionare qualcuno, \":\" per il completamento automatico delle emoji ...'}},{locale:\"ja_JP\",translations:{\"{tag} (invisible)\":\"{タグ} (不可視)\",\"{tag} (restricted)\":\"{タグ} (制限付)\",Actions:\"操作\",Activities:\"アクティビティ\",\"Animals & Nature\":\"動物と自然\",\"Anything shared with the same group of people will show up here\":\"同じグループで共有しているものは、全てここに表示されます\",\"Avatar of {displayName}\":\"{displayName} のアバター\",\"Avatar of {displayName}, {status}\":\"{displayName}, {status} のアバター\",\"Cancel changes\":\"変更をキャンセル\",\"Change title\":\"タイトルを変更\",Choose:\"選択\",\"Clear text\":\"テキストをクリア\",Close:\"閉じる\",\"Close modal\":\"モーダルを閉じる\",\"Close navigation\":\"ナビゲーションを閉じる\",\"Close sidebar\":\"サイドバーを閉じる\",\"Confirm changes\":\"変更を承認\",Custom:\"カスタム\",\"Edit item\":\"編集\",\"Error getting related resources\":\"関連リソースの取得エラー\",\"Error parsing svg\":\"svgの解析エラー\",\"External documentation for {title}\":\"{title} のための添付文書\",Favorite:\"お気に入り\",Flags:\"国旗\",\"Food & Drink\":\"食べ物と飲み物\",\"Frequently used\":\"よく使うもの\",Global:\"全体\",\"Go back to the list\":\"リストに戻る\",\"Hide password\":\"パスワードを非表示\",\"Message limit of {count} characters reached\":\"{count} 文字のメッセージ上限に達しています\",\"More items …\":\"他のアイテム\",Next:\"次\",\"No emoji found\":\"絵文字が見つかりません\",\"No results\":\"なし\",Objects:\"物\",Open:\"開く\",'Open link to \"{resourceTitle}\"':'\"{resourceTitle}\"のリンクを開く',\"Open navigation\":\"ナビゲーションを開く\",\"Password is secure\":\"パスワードは保護されています\",\"Pause slideshow\":\"スライドショーを一時停止\",\"People & Body\":\"様々な人と体の部位\",\"Pick an emoji\":\"絵文字を選択\",\"Please select a time zone:\":\"タイムゾーンを選んで下さい:\",Previous:\"前\",\"Related resources\":\"関連リソース\",Search:\"検索\",\"Search results\":\"検索結果\",\"Select a tag\":\"タグを選択\",Settings:\"設定\",\"Settings navigation\":\"ナビゲーション設定\",\"Show password\":\"パスワードを表示\",\"Smileys & Emotion\":\"感情表現\",\"Start slideshow\":\"スライドショーを開始\",Submit:\"提出\",Symbols:\"記号\",\"Travel & Places\":\"旅行と場所\",\"Type to search time zone\":\"タイムゾーン検索のため入力してください\",\"Unable to search the group\":\"グループを検索できません\",\"Undo changes\":\"変更を取り消し\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'メッセージを記入、\"@\"でメンション、\":\"で絵文字の自動補完 ...'}},{locale:\"lt_LT\",translations:{\"{tag} (invisible)\":\"{tag} (nematoma)\",\"{tag} (restricted)\":\"{tag} (apribota)\",Actions:\"Veiksmai\",Activities:\"Veiklos\",\"Animals & Nature\":\"Gyvūnai ir gamta\",Choose:\"Pasirinkti\",Close:\"Užverti\",Custom:\"Tinkinti\",\"External documentation for {title}\":\"Išorinė {title} dokumentacija\",Flags:\"Vėliavos\",\"Food & Drink\":\"Maistas ir gėrimai\",\"Frequently used\":\"Dažniausiai naudoti\",\"Message limit of {count} characters reached\":\"Pasiekta {count} simbolių žinutės riba\",Next:\"Kitas\",\"No emoji found\":\"Nerasta jaustukų\",\"No results\":\"Nėra rezultatų\",Objects:\"Objektai\",\"Pause slideshow\":\"Pristabdyti skaidrių rodymą\",\"People & Body\":\"Žmonės ir kūnas\",\"Pick an emoji\":\"Pasirinkti jaustuką\",Previous:\"Ankstesnis\",Search:\"Ieškoti\",\"Search results\":\"Paieškos rezultatai\",\"Select a tag\":\"Pasirinkti žymę\",Settings:\"Nustatymai\",\"Settings navigation\":\"Naršymas nustatymuose\",\"Smileys & Emotion\":\"Šypsenos ir emocijos\",\"Start slideshow\":\"Pradėti skaidrių rodymą\",Submit:\"Pateikti\",Symbols:\"Simboliai\",\"Travel & Places\":\"Kelionės ir vietos\",\"Unable to search the group\":\"Nepavyko atlikti paiešką grupėje\",\"Write message, @ to mention someone …\":\"Rašykite žinutę, naudokite @ norėdami kažką paminėti…\"}},{locale:\"lv\",translations:{\"{tag} (invisible)\":\"{tag} (neredzams)\",\"{tag} (restricted)\":\"{tag} (ierobežots)\",Choose:\"Izvēlēties\",Close:\"Aizvērt\",Next:\"Nākamais\",\"No results\":\"Nav rezultātu\",\"Pause slideshow\":\"Pauzēt slaidrādi\",Previous:\"Iepriekšējais\",\"Select a tag\":\"Izvēlēties birku\",Settings:\"Iestatījumi\",\"Start slideshow\":\"Sākt slaidrādi\"}},{locale:\"mk\",translations:{\"{tag} (invisible)\":\"{tag} (невидливо)\",\"{tag} (restricted)\":\"{tag} (ограничено)\",Actions:\"Акции\",Activities:\"Активности\",\"Animals & Nature\":\"Животни & Природа\",\"Avatar of {displayName}\":\"Аватар на {displayName}\",\"Avatar of {displayName}, {status}\":\"Аватар на {displayName}, {status}\",\"Cancel changes\":\"Откажи ги промените\",\"Change title\":\"Промени наслов\",Choose:\"Избери\",Close:\"Затвори\",\"Close modal\":\"Затвори модал\",\"Close navigation\":\"Затвори навигација\",\"Confirm changes\":\"Потврди ги промените\",Custom:\"Прилагодени\",\"Edit item\":\"Уреди\",\"External documentation for {title}\":\"Надворешна документација за {title}\",Favorite:\"Фаворити\",Flags:\"Знамиња\",\"Food & Drink\":\"Храна & Пијалоци\",\"Frequently used\":\"Најчесто користени\",Global:\"Глобално\",\"Go back to the list\":\"Врати се на листата\",items:\"ставки\",\"Message limit of {count} characters reached\":\"Ограничувањето на должината на пораката од {count} карактери е надминато\",\"More {dashboardItemType} …\":\"Повеќе {dashboardItemType} …\",Next:\"Следно\",\"No emoji found\":\"Не се пронајдени емотикони\",\"No results\":\"Нема резултати\",Objects:\"Објекти\",Open:\"Отвори\",\"Open navigation\":\"Отвори навигација\",\"Pause slideshow\":\"Пузирај слајдшоу\",\"People & Body\":\"Луѓе & Тело\",\"Pick an emoji\":\"Избери емотикон\",\"Please select a time zone:\":\"Изберете временска зона:\",Previous:\"Предходно\",Search:\"Барај\",\"Search results\":\"Резултати од барувањето\",\"Select a tag\":\"Избери ознака\",Settings:\"Параметри\",\"Settings navigation\":\"Параметри за навигација\",\"Smileys & Emotion\":\"Смешковци & Емотикони\",\"Start slideshow\":\"Стартувај слајдшоу\",Submit:\"Испрати\",Symbols:\"Симболи\",\"Travel & Places\":\"Патувања & Места\",\"Type to search time zone\":\"Напишете за да пребарате временска зона\",\"Unable to search the group\":\"Неможе да се принајде групата\",\"Undo changes\":\"Врати ги промените\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ...\"}},{locale:\"my\",translations:{\"{tag} (invisible)\":\"{tag} (ကွယ်ဝှက်ထား)\",\"{tag} (restricted)\":\"{tag} (ကန့်သတ်)\",Actions:\"လုပ်ဆောင်ချက်များ\",Activities:\"ပြုလုပ်ဆောင်တာများ\",\"Animals & Nature\":\"တိရစ္ဆာန်များနှင့် သဘာဝ\",\"Avatar of {displayName}\":\"{displayName} ၏ ကိုယ်ပွား\",\"Cancel changes\":\"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်\",Choose:\"ရွေးချယ်ရန်\",Close:\"ပိတ်ရန်\",\"Confirm changes\":\"ပြောင်းလဲမှုများ အတည်ပြုရန်\",Custom:\"အလိုကျချိန်ညှိမှု\",\"External documentation for {title}\":\"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း\",Flags:\"အလံများ\",\"Food & Drink\":\"အစားအသောက်\",\"Frequently used\":\"မကြာခဏအသုံးပြုသော\",Global:\"ကမ္ဘာလုံးဆိုင်ရာ\",\"Message limit of {count} characters reached\":\"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ\",Next:\"နောက်သို့ဆက်ရန်\",\"No emoji found\":\"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ\",\"No results\":\"ရလဒ်မရှိပါ\",Objects:\"အရာဝတ္ထုများ\",\"Pause slideshow\":\"စလိုက်ရှိုး ခေတ္တရပ်ရန်\",\"People & Body\":\"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်\",\"Pick an emoji\":\"အီမိုဂျီရွေးရန်\",\"Please select a time zone:\":\"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ\",Previous:\"ယခင်\",Search:\"ရှာဖွေရန်\",\"Search results\":\"ရှာဖွေမှု ရလဒ်များ\",\"Select a tag\":\"tag ရွေးချယ်ရန်\",Settings:\"ချိန်ညှိချက်များ\",\"Settings navigation\":\"ချိန်ညှိချက်အညွှန်း\",\"Smileys & Emotion\":\"စမိုင်လီများနှင့် အီမိုရှင်း\",\"Start slideshow\":\"စလိုက်ရှိုးအား စတင်ရန်\",Submit:\"တင်သွင်းရန်\",Symbols:\"သင်္ကေတများ\",\"Travel & Places\":\"ခရီးသွားလာခြင်းနှင့် နေရာများ\",\"Type to search time zone\":\"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ\",\"Unable to search the group\":\"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ\",\"Write message, @ to mention someone …\":\"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်...\"}},{locale:\"nb_NO\",translations:{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (beskyttet)\",Actions:\"Handlinger\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Dyr og natur\",\"Anything shared with the same group of people will show up here\":\"Alt som er delt med den samme gruppen vil vises her\",\"Avatar of {displayName}\":\"Avataren til {displayName}\",\"Avatar of {displayName}, {status}\":\"{displayName}'s avatar, {status}\",\"Cancel changes\":\"Avbryt endringer\",\"Change title\":\"Endre tittel\",Choose:\"Velg\",\"Clear text\":\"Fjern tekst\",Close:\"Lukk\",\"Close modal\":\"Lukk modal\",\"Close navigation\":\"Lukk navigasjon\",\"Close sidebar\":\"Lukk sidepanel\",\"Confirm changes\":\"Bekreft endringer\",Custom:\"Tilpasset\",\"Edit item\":\"Rediger\",\"Error getting related resources\":\"Feil ved henting av relaterte ressurser\",\"Error parsing svg\":\"Feil ved parsing av svg\",\"External documentation for {title}\":\"Ekstern dokumentasjon for {title}\",Favorite:\"Favoritt\",Flags:\"Flagg\",\"Food & Drink\":\"Mat og drikke\",\"Frequently used\":\"Ofte brukt\",Global:\"Global\",\"Go back to the list\":\"Gå tilbake til listen\",\"Hide password\":\"Skjul passord\",\"Message limit of {count} characters reached\":\"Karakter begrensing {count} nådd i melding\",\"More items …\":\"Flere gjenstander...\",Next:\"Neste\",\"No emoji found\":\"Fant ingen emoji\",\"No results\":\"Ingen resultater\",Objects:\"Objekter\",Open:\"Åpne\",'Open link to \"{resourceTitle}\"':'Åpne link til \"{resourceTitle}\"',\"Open navigation\":\"Åpne navigasjon\",\"Password is secure\":\"Passordet er sikkert\",\"Pause slideshow\":\"Pause lysbildefremvisning\",\"People & Body\":\"Mennesker og kropp\",\"Pick an emoji\":\"Velg en emoji\",\"Please select a time zone:\":\"Vennligst velg tidssone\",Previous:\"Forrige\",\"Related resources\":\"Relaterte ressurser\",Search:\"Søk\",\"Search results\":\"Søkeresultater\",\"Select a tag\":\"Velg en merkelapp\",Settings:\"Innstillinger\",\"Settings navigation\":\"Navigasjonsinstillinger\",\"Show password\":\"Vis passord\",\"Smileys & Emotion\":\"Smilefjes og følelser\",\"Start slideshow\":\"Start lysbildefremvisning\",Submit:\"Send\",Symbols:\"Symboler\",\"Travel & Places\":\"Reise og steder\",\"Type to search time zone\":\"Tast for å søke etter tidssone\",\"Unable to search the group\":\"Kunne ikke søke i gruppen\",\"Undo changes\":\"Tilbakestill endringer\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv melding, bruk \"@\" for å nevne noen, bruk \":\" for autofullføring av emoji...'}},{locale:\"nl\",translations:{\"{tag} (invisible)\":\"{tag} (onzichtbaar)\",\"{tag} (restricted)\":\"{tag} (beperkt)\",Actions:\"Acties\",Activities:\"Activiteiten\",\"Animals & Nature\":\"Dieren & Natuur\",\"Avatar of {displayName}\":\"Avatar van {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar van {displayName}, {status}\",\"Cancel changes\":\"Wijzigingen annuleren\",Choose:\"Kies\",Close:\"Sluiten\",\"Close navigation\":\"Navigatie sluiten\",\"Confirm changes\":\"Wijzigingen bevestigen\",Custom:\"Aangepast\",\"Edit item\":\"Item bewerken\",\"External documentation for {title}\":\"Externe documentatie voor {title}\",Flags:\"Vlaggen\",\"Food & Drink\":\"Eten & Drinken\",\"Frequently used\":\"Vaak gebruikt\",Global:\"Globaal\",\"Go back to the list\":\"Ga terug naar de lijst\",\"Message limit of {count} characters reached\":\"Berichtlimiet van {count} karakters bereikt\",Next:\"Volgende\",\"No emoji found\":\"Geen emoji gevonden\",\"No results\":\"Geen resultaten\",Objects:\"Objecten\",\"Open navigation\":\"Navigatie openen\",\"Pause slideshow\":\"Pauzeer diavoorstelling\",\"People & Body\":\"Mensen & Lichaam\",\"Pick an emoji\":\"Kies een emoji\",\"Please select a time zone:\":\"Selecteer een tijdzone:\",Previous:\"Vorige\",Search:\"Zoeken\",\"Search results\":\"Zoekresultaten\",\"Select a tag\":\"Selecteer een label\",Settings:\"Instellingen\",\"Settings navigation\":\"Instellingen navigatie\",\"Smileys & Emotion\":\"Smileys & Emotie\",\"Start slideshow\":\"Start diavoorstelling\",Submit:\"Verwerken\",Symbols:\"Symbolen\",\"Travel & Places\":\"Reizen & Plaatsen\",\"Type to search time zone\":\"Type om de tijdzone te zoeken\",\"Unable to search the group\":\"Kan niet in de groep zoeken\",\"Undo changes\":\"Wijzigingen ongedaan maken\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ...\"}},{locale:\"oc\",translations:{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (limit)\",Actions:\"Accions\",Choose:\"Causir\",Close:\"Tampar\",Next:\"Seguent\",\"No results\":\"Cap de resultat\",\"Pause slideshow\":\"Metre en pausa lo diaporama\",Previous:\"Precedent\",\"Select a tag\":\"Seleccionar una etiqueta\",Settings:\"Paramètres\",\"Start slideshow\":\"Lançar lo diaporama\"}},{locale:\"pl\",translations:{\"{tag} (invisible)\":\"{tag} (niewidoczna)\",\"{tag} (restricted)\":\"{tag} (ograniczona)\",Actions:\"Działania\",Activities:\"Aktywność\",\"Animals & Nature\":\"Zwierzęta i natura\",\"Anything shared with the same group of people will show up here\":\"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób\",\"Avatar of {displayName}\":\"Awatar {displayName}\",\"Avatar of {displayName}, {status}\":\"Awatar {displayName}, {status}\",\"Cancel changes\":\"Anuluj zmiany\",\"Change title\":\"Zmień tytuł\",Choose:\"Wybierz\",\"Clear text\":\"Wyczyść tekst\",Close:\"Zamknij\",\"Close modal\":\"Zamknij modal\",\"Close navigation\":\"Zamknij nawigację\",\"Close sidebar\":\"Zamknij pasek boczny\",\"Confirm changes\":\"Potwierdź zmiany\",Custom:\"Zwyczajne\",\"Edit item\":\"Edytuj element\",\"Error getting related resources\":\"Błąd podczas pobierania powiązanych zasobów\",\"Error parsing svg\":\"Błąd podczas analizowania svg\",\"External documentation for {title}\":\"Dokumentacja zewnętrzna dla {title}\",Favorite:\"Ulubiony\",Flags:\"Flagi\",\"Food & Drink\":\"Jedzenie i picie\",\"Frequently used\":\"Często używane\",Global:\"Globalnie\",\"Go back to the list\":\"Powrót do listy\",\"Hide password\":\"Ukryj hasło\",\"Message limit of {count} characters reached\":\"Przekroczono limit wiadomości wynoszący {count} znaków\",\"More items …\":\"Więcej pozycji…\",Next:\"Następny\",\"No emoji found\":\"Nie znaleziono emoji\",\"No results\":\"Brak wyników\",Objects:\"Obiekty\",Open:\"Otwórz\",'Open link to \"{resourceTitle}\"':'Otwórz link do \"{resourceTitle}\"',\"Open navigation\":\"Otwórz nawigację\",\"Password is secure\":\"Hasło jest bezpieczne\",\"Pause slideshow\":\"Wstrzymaj pokaz slajdów\",\"People & Body\":\"Ludzie i ciało\",\"Pick an emoji\":\"Wybierz emoji\",\"Please select a time zone:\":\"Wybierz strefę czasową:\",Previous:\"Poprzedni\",\"Related resources\":\"Powiązane zasoby\",Search:\"Szukaj\",\"Search results\":\"Wyniki wyszukiwania\",\"Select a tag\":\"Wybierz etykietę\",Settings:\"Ustawienia\",\"Settings navigation\":\"Ustawienia nawigacji\",\"Show password\":\"Pokaż hasło\",\"Smileys & Emotion\":\"Buźki i emotikony\",\"Start slideshow\":\"Rozpocznij pokaz slajdów\",Submit:\"Wyślij\",Symbols:\"Symbole\",\"Travel & Places\":\"Podróże i miejsca\",\"Type to search time zone\":\"Wpisz, aby wyszukać strefę czasową\",\"Unable to search the group\":\"Nie można przeszukać grupy\",\"Undo changes\":\"Cofnij zmiany\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Napisz wiadomość, \"@\" aby o kimś wspomnieć, \":\" dla autouzupełniania emoji…'}},{locale:\"pt_BR\",translations:{\"{tag} (invisible)\":\"{tag} (invisível)\",\"{tag} (restricted)\":\"{tag} (restrito) \",Actions:\"Ações\",Activities:\"Atividades\",\"Animals & Nature\":\"Animais & Natureza\",\"Anything shared with the same group of people will show up here\":\"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui\",\"Avatar of {displayName}\":\"Avatar de {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar de {displayName}, {status}\",\"Cancel changes\":\"Cancelar alterações\",\"Change title\":\"Alterar título\",Choose:\"Escolher\",\"Clear text\":\"Limpar texto\",Close:\"Fechar\",\"Close modal\":\"Fechar modal\",\"Close navigation\":\"Fechar navegação\",\"Close sidebar\":\"Fechar barra lateral\",\"Confirm changes\":\"Confirmar alterações\",Custom:\"Personalizado\",\"Edit item\":\"Editar item\",\"Error getting related resources\":\"Erro ao obter recursos relacionados\",\"Error parsing svg\":\"Erro ao analisar svg\",\"External documentation for {title}\":\"Documentação externa para {title}\",Favorite:\"Favorito\",Flags:\"Bandeiras\",\"Food & Drink\":\"Comida & Bebida\",\"Frequently used\":\"Mais usados\",Global:\"Global\",\"Go back to the list\":\"Volte para a lista\",\"Hide password\":\"Ocultar a senha\",\"Message limit of {count} characters reached\":\"Limite de mensagem de {count} caracteres atingido\",\"More items …\":\"Mais itens …\",Next:\"Próximo\",\"No emoji found\":\"Nenhum emoji encontrado\",\"No results\":\"Sem resultados\",Objects:\"Objetos\",Open:\"Aberto\",'Open link to \"{resourceTitle}\"':'Abrir link para \"{resourceTitle}\"',\"Open navigation\":\"Abrir navegação\",\"Password is secure\":\"A senha é segura\",\"Pause slideshow\":\"Pausar apresentação de slides\",\"People & Body\":\"Pessoas & Corpo\",\"Pick an emoji\":\"Escolha um emoji\",\"Please select a time zone:\":\"Selecione um fuso horário: \",Previous:\"Anterior\",\"Related resources\":\"Recursos relacionados\",Search:\"Pesquisar\",\"Search results\":\"Resultados da pesquisa\",\"Select a tag\":\"Selecionar uma tag\",Settings:\"Configurações\",\"Settings navigation\":\"Navegação de configurações\",\"Show password\":\"Mostrar senha\",\"Smileys & Emotion\":\"Smiles & Emoções\",\"Start slideshow\":\"Iniciar apresentação de slides\",Submit:\"Enviar\",Symbols:\"Símbolo\",\"Travel & Places\":\"Viagem & Lugares\",\"Type to search time zone\":\"Digite para pesquisar o fuso horário \",\"Unable to search the group\":\"Não foi possível pesquisar o grupo\",\"Undo changes\":\"Desfazer modificações\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Escreva mensagens, use \"@\" para mencionar algum, use \":\" for autocompletar emoji …'}},{locale:\"pt_PT\",translations:{\"{tag} (invisible)\":\"{tag} (invisivel)\",\"{tag} (restricted)\":\"{tag} (restrito)\",Actions:\"Ações\",Choose:\"Escolher\",Close:\"Fechar\",Next:\"Seguinte\",\"No results\":\"Sem resultados\",\"Pause slideshow\":\"Pausar diaporama\",Previous:\"Anterior\",\"Select a tag\":\"Selecionar uma etiqueta\",Settings:\"Definições\",\"Start slideshow\":\"Iniciar diaporama\",\"Unable to search the group\":\"Não é possível pesquisar o grupo\"}},{locale:\"ro\",translations:{\"{tag} (invisible)\":\"{tag} (invizibil)\",\"{tag} (restricted)\":\"{tag} (restricționat)\",Actions:\"Acțiuni\",Activities:\"Activități\",\"Animals & Nature\":\"Animale și natură\",\"Anything shared with the same group of people will show up here\":\"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici\",\"Avatar of {displayName}\":\"Avatarul lui {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatarul lui {displayName}, {status}\",\"Cancel changes\":\"Anulează modificările\",\"Change title\":\"Modificați titlul\",Choose:\"Alegeți\",\"Clear text\":\"Șterge textul\",Close:\"Închideți\",\"Close modal\":\"Închideți modulul\",\"Close navigation\":\"Închideți navigarea\",\"Close sidebar\":\"Închide bara laterală\",\"Confirm changes\":\"Confirmați modificările\",Custom:\"Personalizat\",\"Edit item\":\"Editați elementul\",\"Error getting related resources\":\" Eroare la returnarea resurselor legate\",\"Error parsing svg\":\"Eroare de analizare a svg\",\"External documentation for {title}\":\"Documentație externă pentru {title}\",Favorite:\"Favorit\",Flags:\"Marcaje\",\"Food & Drink\":\"Alimente și băuturi\",\"Frequently used\":\"Utilizate frecvent\",Global:\"Global\",\"Go back to the list\":\"Întoarceți-vă la listă\",\"Hide password\":\"Ascunde parola\",\"Message limit of {count} characters reached\":\"Limita mesajului de {count} caractere a fost atinsă\",\"More items …\":\"Mai multe articole ...\",Next:\"Următorul\",\"No emoji found\":\"Nu s-a găsit niciun emoji\",\"No results\":\"Nu există rezultate\",Objects:\"Obiecte\",Open:\"Deschideți\",'Open link to \"{resourceTitle}\"':'Deschide legătura la \"{resourceTitle}\"',\"Open navigation\":\"Deschideți navigația\",\"Password is secure\":\"Parola este sigură\",\"Pause slideshow\":\"Pauză prezentare de diapozitive\",\"People & Body\":\"Oameni și corp\",\"Pick an emoji\":\"Alege un emoji\",\"Please select a time zone:\":\"Vă rugăm să selectați un fus orar:\",Previous:\"Anterior\",\"Related resources\":\"Resurse legate\",Search:\"Căutare\",\"Search results\":\"Rezultatele căutării\",\"Select a tag\":\"Selectați o etichetă\",Settings:\"Setări\",\"Settings navigation\":\"Navigare setări\",\"Show password\":\"Arată parola\",\"Smileys & Emotion\":\"Zâmbete și emoții\",\"Start slideshow\":\"Începeți prezentarea de diapozitive\",Submit:\"Trimiteți\",Symbols:\"Simboluri\",\"Travel & Places\":\"Călătorii și locuri\",\"Type to search time zone\":\"Tastați pentru a căuta fusul orar\",\"Unable to search the group\":\"Imposibilitatea de a căuta în grup\",\"Undo changes\":\"Anularea modificărilor\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Scrie un mesaj, folosește \"@\" pentru a menționa pe cineva, folosește \":\" pentru autocompletarea cu emoji ...'}},{locale:\"ru\",translations:{\"{tag} (invisible)\":\"{tag} (невидимое)\",\"{tag} (restricted)\":\"{tag} (ограниченное)\",Actions:\"Действия \",Activities:\"События\",\"Animals & Nature\":\"Животные и природа \",\"Avatar of {displayName}\":\"Аватар {displayName}\",\"Avatar of {displayName}, {status}\":\"Фотография {displayName}, {status}\",\"Cancel changes\":\"Отменить изменения\",Choose:\"Выберите\",Close:\"Закрыть\",\"Close modal\":\"Закрыть модальное окно\",\"Close navigation\":\"Закрыть навигацию\",\"Confirm changes\":\"Подтвердить изменения\",Custom:\"Пользовательское\",\"Edit item\":\"Изменить элемент\",\"External documentation for {title}\":\"Внешняя документация для {title}\",Flags:\"Флаги\",\"Food & Drink\":\"Еда, напиток\",\"Frequently used\":\"Часто используемый\",Global:\"Глобальный\",\"Go back to the list\":\"Вернуться к списку\",items:\"элементов\",\"Message limit of {count} characters reached\":\"Достигнуто ограничение на количество символов в {count}\",\"More {dashboardItemType} …\":\"Больше {dashboardItemType} …\",Next:\"Следующее\",\"No emoji found\":\"Эмодзи не найдено\",\"No results\":\"Результаты отсуствуют\",Objects:\"Объекты\",Open:\"Открыть\",\"Open navigation\":\"Открыть навигацию\",\"Pause slideshow\":\"Приостановить показ слйдов\",\"People & Body\":\"Люди и тело\",\"Pick an emoji\":\"Выберите эмодзи\",\"Please select a time zone:\":\"Пожалуйста, выберите часовой пояс:\",Previous:\"Предыдущее\",Search:\"Поиск\",\"Search results\":\"Результаты поиска\",\"Select a tag\":\"Выберите метку\",Settings:\"Параметры\",\"Settings navigation\":\"Навигация по настройкам\",\"Smileys & Emotion\":\"Смайлики и эмоции\",\"Start slideshow\":\"Начать показ слайдов\",Submit:\"Утвердить\",Symbols:\"Символы\",\"Travel & Places\":\"Путешествия и места\",\"Type to search time zone\":\"Введите для поиска часового пояса\",\"Unable to search the group\":\"Невозможно найти группу\",\"Undo changes\":\"Отменить изменения\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …\"}},{locale:\"sk_SK\",translations:{\"{tag} (invisible)\":\"{tag} (neviditeľný)\",\"{tag} (restricted)\":\"{tag} (obmedzený)\",Actions:\"Akcie\",Activities:\"Aktivity\",\"Animals & Nature\":\"Zvieratá a príroda\",\"Avatar of {displayName}\":\"Avatar {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar {displayName}, {status}\",\"Cancel changes\":\"Zrušiť zmeny\",Choose:\"Vybrať\",Close:\"Zatvoriť\",\"Close navigation\":\"Zavrieť navigáciu\",\"Confirm changes\":\"Potvrdiť zmeny\",Custom:\"Zvyk\",\"Edit item\":\"Upraviť položku\",\"External documentation for {title}\":\"Externá dokumentácia pre {title}\",Flags:\"Vlajky\",\"Food & Drink\":\"Jedlo a nápoje\",\"Frequently used\":\"Často používané\",Global:\"Globálne\",\"Go back to the list\":\"Naspäť na zoznam\",\"Message limit of {count} characters reached\":\"Limit správy na {count} znakov dosiahnutý\",Next:\"Ďalší\",\"No emoji found\":\"Nenašli sa žiadne emodži\",\"No results\":\"Žiadne výsledky\",Objects:\"Objekty\",\"Open navigation\":\"Otvoriť navigáciu\",\"Pause slideshow\":\"Pozastaviť prezentáciu\",\"People & Body\":\"Ľudia a telo\",\"Pick an emoji\":\"Vyberte si emodži\",\"Please select a time zone:\":\"Prosím vyberte časovú zónu:\",Previous:\"Predchádzajúci\",Search:\"Hľadať\",\"Search results\":\"Výsledky vyhľadávania\",\"Select a tag\":\"Vybrať štítok\",Settings:\"Nastavenia\",\"Settings navigation\":\"Navigácia v nastaveniach\",\"Smileys & Emotion\":\"Smajlíky a emócie\",\"Start slideshow\":\"Začať prezentáciu\",Submit:\"Odoslať\",Symbols:\"Symboly\",\"Travel & Places\":\"Cestovanie a miesta\",\"Type to search time zone\":\"Začníte písať pre vyhľadávanie časovej zóny\",\"Unable to search the group\":\"Skupinu sa nepodarilo nájsť\",\"Undo changes\":\"Vrátiť zmeny\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…\"}},{locale:\"sl\",translations:{\"{tag} (invisible)\":\"{tag} (nevidno)\",\"{tag} (restricted)\":\"{tag} (omejeno)\",Actions:\"Dejanja\",Activities:\"Dejavnosti\",\"Animals & Nature\":\"Živali in Narava\",\"Avatar of {displayName}\":\"Podoba {displayName}\",\"Avatar of {displayName}, {status}\":\"Prikazna slika {displayName}, {status}\",\"Cancel changes\":\"Prekliči spremembe\",\"Change title\":\"Spremeni naziv\",Choose:\"Izbor\",\"Clear text\":\"Počisti besedilo\",Close:\"Zapri\",\"Close modal\":\"Zapri pojavno okno\",\"Close navigation\":\"Zapri krmarjenje\",\"Close sidebar\":\"Zapri stransko vrstico\",\"Confirm changes\":\"Potrdi spremembe\",Custom:\"Po meri\",\"Edit item\":\"Uredi predmet\",\"Error getting related resources\":\"Napaka pridobivanja povezanih virov\",\"External documentation for {title}\":\"Zunanja dokumentacija za {title}\",Favorite:\"Priljubljeno\",Flags:\"Zastavice\",\"Food & Drink\":\"Hrana in Pijača\",\"Frequently used\":\"Pogostost uporabe\",Global:\"Splošno\",\"Go back to the list\":\"Vrni se na seznam\",\"Hide password\":\"Skrij geslo\",\"Message limit of {count} characters reached\":\"Dosežena omejitev {count} znakov na sporočilo.\",\"More items …\":\"Več predmetov ...\",Next:\"Naslednji\",\"No emoji found\":\"Ni najdenih izraznih ikon\",\"No results\":\"Ni zadetkov\",Objects:\"Predmeti\",Open:\"Odpri\",'Open link to \"{resourceTitle}\"':\"Odpri povezavo do »{resourceTitle}«\",\"Open navigation\":\"Odpri krmarjenje\",\"Password is secure\":\"Geslo je varno\",\"Pause slideshow\":\"Ustavi predstavitev\",\"People & Body\":\"Ljudje in Telo\",\"Pick a date\":\"Izbor datuma\",\"Pick a date and a time\":\"Izbor datuma in časa\",\"Pick a month\":\"Izbor meseca\",\"Pick a time\":\"Izbor časa\",\"Pick a week\":\"Izbor tedna\",\"Pick a year\":\"Izbor leta\",\"Pick an emoji\":\"Izbor izrazne ikone\",\"Please select a time zone:\":\"Izbor časovnega pasu:\",Previous:\"Predhodni\",\"Related resources\":\"Povezani viri\",Search:\"Iskanje\",\"Search results\":\"Zadetki iskanja\",\"Select a tag\":\"Izbor oznake\",Settings:\"Nastavitve\",\"Settings navigation\":\"Krmarjenje nastavitev\",\"Show password\":\"Pokaži geslo\",\"Smileys & Emotion\":\"Izrazne ikone\",\"Start slideshow\":\"Začni predstavitev\",Submit:\"Pošlji\",Symbols:\"Simboli\",\"Travel & Places\":\"Potovanja in Kraji\",\"Type to search time zone\":\"Vpišite niz za iskanje časovnega pasu\",\"Unable to search the group\":\"Ni mogoče iskati po skupini\",\"Undo changes\":\"Razveljavi spremembe\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …\"}},{locale:\"sr\",translations:{\"{tag} (invisible)\":\"{tag} (nevidljivo)\",\"{tag} (restricted)\":\"{tag} (ograničeno)\",Actions:\"Radnje\",Activities:\"Aktivnosti\",\"Animals & Nature\":\"Životinje i Priroda\",\"Avatar of {displayName}\":\"Avatar za {displayName}\",\"Avatar of {displayName}, {status}\":\"Avatar za {displayName}, {status}\",\"Cancel changes\":\"Otkaži izmene\",\"Change title\":\"Izmeni naziv\",Choose:\"Изаберите\",Close:\"Затвори\",\"Close modal\":\"Zatvori modal\",\"Close navigation\":\"Zatvori navigaciju\",\"Close sidebar\":\"Zatvori bočnu traku\",\"Confirm changes\":\"Potvrdite promene\",Custom:\"Po meri\",\"Edit item\":\"Uredi stavku\",\"External documentation for {title}\":\"Eksterna dokumentacija za {title}\",Favorite:\"Omiljeni\",Flags:\"Zastave\",\"Food & Drink\":\"Hrana i Piće\",\"Frequently used\":\"Često korišćeno\",Global:\"Globalno\",\"Go back to the list\":\"Natrag na listu\",items:\"stavke\",\"Message limit of {count} characters reached\":\"Dostignuto je ograničenje za poruke od {count} znakova\",\"More {dashboardItemType} …\":\"Više {dashboardItemType} …\",Next:\"Следеће\",\"No emoji found\":\"Nije pronađen nijedan emodži\",\"No results\":\"Нема резултата\",Objects:\"Objekti\",Open:\"Otvori\",\"Open navigation\":\"Otvori navigaciju\",\"Pause slideshow\":\"Паузирај слајд шоу\",\"People & Body\":\"Ljudi i Telo\",\"Pick an emoji\":\"Izaberi emodži\",\"Please select a time zone:\":\"Molimo izaberite vremensku zonu:\",Previous:\"Претходно\",Search:\"Pretraži\",\"Search results\":\"Rezultati pretrage\",\"Select a tag\":\"Изаберите ознаку\",Settings:\"Поставке\",\"Settings navigation\":\"Navigacija u podešavanjima\",\"Smileys & Emotion\":\"Smajli i Emocije\",\"Start slideshow\":\"Покрени слајд шоу\",Submit:\"Prihvati\",Symbols:\"Simboli\",\"Travel & Places\":\"Putovanja i Mesta\",\"Type to search time zone\":\"Ukucaj da pretražiš vremenske zone\",\"Unable to search the group\":\"Nije moguće pretražiti grupu\",\"Undo changes\":\"Poništi promene\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…\"}},{locale:\"sv\",translations:{\"{tag} (invisible)\":\"{tag} (osynlig)\",\"{tag} (restricted)\":\"{tag} (begränsad)\",Actions:\"Åtgärder\",Activities:\"Aktiviteter\",\"Animals & Nature\":\"Djur & Natur\",\"Anything shared with the same group of people will show up here\":\"Något som delats med samma grupp av personer kommer att visas här\",\"Avatar of {displayName}\":\"{displayName}s avatar\",\"Avatar of {displayName}, {status}\":\"{displayName}s avatar, {status}\",\"Cancel changes\":\"Avbryt ändringar\",\"Change title\":\"Ändra titel\",Choose:\"Välj\",\"Clear text\":\"Ta bort text\",Close:\"Stäng\",\"Close modal\":\"Stäng modal\",\"Close navigation\":\"Stäng navigering\",\"Close sidebar\":\"Stäng sidopanel\",\"Confirm changes\":\"Bekräfta ändringar\",Custom:\"Anpassad\",\"Edit item\":\"Ändra\",\"Error getting related resources\":\"Problem att hämta relaterade resurser\",\"Error parsing svg\":\"Fel vid inläsning av svg\",\"External documentation for {title}\":\"Extern dokumentation för {title}\",Favorite:\"Favorit\",Flags:\"Flaggor\",\"Food & Drink\":\"Mat & Dryck\",\"Frequently used\":\"Används ofta\",Global:\"Global\",\"Go back to the list\":\"Gå tillbaka till listan\",\"Hide password\":\"Göm lössenordet\",\"Message limit of {count} characters reached\":\"Meddelandegräns {count} tecken används\",\"More items …\":\"Fler objekt\",Next:\"Nästa\",\"No emoji found\":\"Hittade inga emojis\",\"No results\":\"Inga resultat\",Objects:\"Objekt\",Open:\"Öppna\",'Open link to \"{resourceTitle}\"':'Öppna länk till \"{resourceTitle}\"',\"Open navigation\":\"Öppna navigering\",\"Password is secure\":\"Lössenordet är säkert\",\"Pause slideshow\":\"Pausa bildspelet\",\"People & Body\":\"Kropp & Själ\",\"Pick an emoji\":\"Välj en emoji\",\"Please select a time zone:\":\"Välj tidszon:\",Previous:\"Föregående\",\"Related resources\":\"Relaterade resurser\",Search:\"Sök\",\"Search results\":\"Sökresultat\",\"Select a tag\":\"Välj en tag\",Settings:\"Inställningar\",\"Settings navigation\":\"Inställningsmeny\",\"Show password\":\"Visa lössenordet\",\"Smileys & Emotion\":\"Selfies & Känslor\",\"Start slideshow\":\"Starta bildspelet\",Submit:\"Skicka\",Symbols:\"Symboler\",\"Travel & Places\":\"Resor & Sevärdigheter\",\"Type to search time zone\":\"Skriv för att välja tidszon\",\"Unable to search the group\":\"Kunde inte söka i gruppen\",\"Undo changes\":\"Ångra ändringar\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'Skriv meddelande, använd \"@\" för att nämna någon, använd \":\" för automatiska emojiförslag ...'}},{locale:\"tr\",translations:{\"{tag} (invisible)\":\"{tag} (görünmez)\",\"{tag} (restricted)\":\"{tag} (kısıtlı)\",Actions:\"İşlemler\",Activities:\"Etkinlikler\",\"Animals & Nature\":\"Hayvanlar ve Doğa\",\"Anything shared with the same group of people will show up here\":\"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir\",\"Avatar of {displayName}\":\"{displayName} avatarı\",\"Avatar of {displayName}, {status}\":\"{displayName}, {status} avatarı\",\"Cancel changes\":\"Değişiklikleri iptal et\",\"Change title\":\"Başlığı değiştir\",Choose:\"Seçin\",\"Clear text\":\"Metni temizle\",Close:\"Kapat\",\"Close modal\":\"Üste açılan pencereyi kapat\",\"Close navigation\":\"Gezinmeyi kapat\",\"Close sidebar\":\"Yan çubuğu kapat\",\"Confirm changes\":\"Değişiklikleri onayla\",Custom:\"Özel\",\"Edit item\":\"Ögeyi düzenle\",\"Error getting related resources\":\"İlgili kaynaklar alınırken sorun çıktı\",\"Error parsing svg\":\"svg işlenirken sorun çıktı\",\"External documentation for {title}\":\"{title} için dış belgeler\",Favorite:\"Sık kullanılanlara ekle\",Flags:\"Bayraklar\",\"Food & Drink\":\"Yeme ve İçme\",\"Frequently used\":\"Sık kullanılanlar\",Global:\"Evrensel\",\"Go back to the list\":\"Listeye dön\",\"Hide password\":\"Parolayı gizle\",\"Message limit of {count} characters reached\":\"{count} karakter ileti sınırına ulaşıldı\",\"More items …\":\"Diğer ögeler…\",Next:\"Sonraki\",\"No emoji found\":\"Herhangi bir emoji bulunamadı\",\"No results\":\"Herhangi bir sonuç bulunamadı\",Objects:\"Nesneler\",Open:\"Aç\",'Open link to \"{resourceTitle}\"':'\"{resourceTitle}\" bağlantısını aç',\"Open navigation\":\"Gezinmeyi aç\",\"Password is secure\":\"Parola güvenli\",\"Pause slideshow\":\"Slayt sunumunu duraklat\",\"People & Body\":\"İnsanlar ve Beden\",\"Pick an emoji\":\"Bir emoji seçin\",\"Please select a time zone:\":\"Lütfen bir saat dilimi seçin:\",Previous:\"Önceki\",\"Related resources\":\"İlgili kaynaklar\",Search:\"Arama\",\"Search results\":\"Arama sonuçları\",\"Select a tag\":\"Bir etiket seçin\",Settings:\"Ayarlar\",\"Settings navigation\":\"Gezinme ayarları\",\"Show password\":\"Parolayı görüntüle\",\"Smileys & Emotion\":\"İfadeler ve Duygular\",\"Start slideshow\":\"Slayt sunumunu başlat\",Submit:\"Gönder\",Symbols:\"Simgeler\",\"Travel & Places\":\"Gezi ve Yerler\",\"Type to search time zone\":\"Saat dilimi aramak için yazmaya başlayın\",\"Unable to search the group\":\"Grupta arama yapılamadı\",\"Undo changes\":\"Değişiklikleri geri al\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için \":\" kullanın…'}},{locale:\"uk\",translations:{\"{tag} (invisible)\":\"{tag} (невидимий)\",\"{tag} (restricted)\":\"{tag} (обмежений)\",Actions:\"Дії\",Activities:\"Діяльність\",\"Animals & Nature\":\"Тварини та природа\",\"Avatar of {displayName}\":\"Аватар {displayName}\",\"Avatar of {displayName}, {status}\":\"Аватар {displayName}, {status}\",\"Cancel changes\":\"Скасувати зміни\",\"Change title\":\"Змінити назву\",Choose:\"ВиберітьВиберіть\",\"Clear text\":\"Очистити текст\",Close:\"Закрити\",\"Close modal\":\"Закрити модаль\",\"Close navigation\":\"Закрити навігацію\",\"Close sidebar\":\"Закрити бічну панель\",\"Confirm changes\":\"Підтвердити зміни\",Custom:\"Власне\",\"Edit item\":\"Редагувати елемент\",\"External documentation for {title}\":\"Зовнішня документація для {title}\",Favorite:\"Улюблений\",Flags:\"Прапори\",\"Food & Drink\":\"Їжа та напої\",\"Frequently used\":\"Найчастіші\",Global:\"Глобальний\",\"Go back to the list\":\"Повернутися до списку\",\"Hide password\":\"Приховати пароль\",items:\"елементи\",\"Message limit of {count} characters reached\":\"Вичерпано ліміт у {count} символів для повідомлення\",\"More {dashboardItemType} …\":\"Більше {dashboardItemType}…\",Next:\"Вперед\",\"No emoji found\":\"Емоційки відсутні\",\"No results\":\"Відсутні результати\",Objects:\"Об'єкти\",Open:\"Відкрити\",\"Open navigation\":\"Відкрити навігацію\",\"Password is secure\":\"Пароль безпечний\",\"Pause slideshow\":\"Пауза у показі слайдів\",\"People & Body\":\"Люди та жести\",\"Pick an emoji\":\"Виберіть емоційку\",\"Please select a time zone:\":\"Виберіть часовий пояс:\",Previous:\"Назад\",Search:\"Пошук\",\"Search results\":\"Результати пошуку\",\"Select a tag\":\"Виберіть позначку\",Settings:\"Налаштування\",\"Settings navigation\":\"Навігація у налаштуваннях\",\"Show password\":\"Показати пароль\",\"Smileys & Emotion\":\"Смайли та емоції\",\"Start slideshow\":\"Почати показ слайдів\",Submit:\"Надіслати\",Symbols:\"Символи\",\"Travel & Places\":\"Поїздки та місця\",\"Type to search time zone\":\"Введіть для пошуку часовий пояс\",\"Unable to search the group\":\"Неможливо шукати в групі\",\"Undo changes\":\"Скасувати зміни\",\"Write message, @ to mention someone, : for emoji autocompletion …\":\"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…\"}},{locale:\"zh_CN\",translations:{\"{tag} (invisible)\":\"{tag} (不可见)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"行为\",Activities:\"活动\",\"Animals & Nature\":\"动物 & 自然\",\"Anything shared with the same group of people will show up here\":\"与同组用户分享的所有内容都会显示于此\",\"Avatar of {displayName}\":\"{displayName}的头像\",\"Avatar of {displayName}, {status}\":\"{displayName}的头像,{status}\",\"Cancel changes\":\"取消更改\",\"Change title\":\"更改标题\",Choose:\"选择\",\"Clear text\":\"清除文本\",Close:\"关闭\",\"Close modal\":\"关闭窗口\",\"Close navigation\":\"关闭导航\",\"Close sidebar\":\"关闭侧边栏\",\"Confirm changes\":\"确认更改\",Custom:\"自定义\",\"Edit item\":\"编辑项目\",\"Error getting related resources\":\"获取相关资源时出错\",\"Error parsing svg\":\"解析 svg 时出错\",\"External documentation for {title}\":\"{title}的外部文档\",Favorite:\"喜爱\",Flags:\"旗帜\",\"Food & Drink\":\"食物 & 饮品\",\"Frequently used\":\"经常使用\",Global:\"全局\",\"Go back to the list\":\"返回至列表\",\"Hide password\":\"隐藏密码\",\"Message limit of {count} characters reached\":\"已达到 {count} 个字符的消息限制\",\"More items …\":\"更多项目…\",Next:\"下一个\",\"No emoji found\":\"表情未找到\",\"No results\":\"无结果\",Objects:\"物体\",Open:\"打开\",'Open link to \"{resourceTitle}\"':'打开\"{resourceTitle}\"的连接',\"Open navigation\":\"开启导航\",\"Password is secure\":\"密码安全\",\"Pause slideshow\":\"暂停幻灯片\",\"People & Body\":\"人 & 身体\",\"Pick an emoji\":\"选择一个表情\",\"Please select a time zone:\":\"请选择一个时区:\",Previous:\"上一个\",\"Related resources\":\"相关资源\",Search:\"搜索\",\"Search results\":\"搜索结果\",\"Select a tag\":\"选择一个标签\",Settings:\"设置\",\"Settings navigation\":\"设置向导\",\"Show password\":\"显示密码\",\"Smileys & Emotion\":\"笑脸 & 情感\",\"Start slideshow\":\"开始幻灯片\",Submit:\"提交\",Symbols:\"符号\",\"Travel & Places\":\"旅游 & 地点\",\"Type to search time zone\":\"打字以搜索时区\",\"Unable to search the group\":\"无法搜索分组\",\"Undo changes\":\"撤销更改\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'写信息,使用\"@\"来提及某人,使用\":\"进行表情符号自动完成 ...'}},{locale:\"zh_HK\",translations:{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"動作\",Activities:\"活動\",\"Animals & Nature\":\"動物與自然\",\"Anything shared with the same group of people will show up here\":\"與同一組人共享的任何內容都會顯示在此處\",\"Avatar of {displayName}\":\"{displayName} 的頭像\",\"Avatar of {displayName}, {status}\":\"{displayName} 的頭像,{status}\",\"Cancel changes\":\"取消更改\",\"Change title\":\"更改標題\",Choose:\"選擇\",\"Clear text\":\"清除文本\",Close:\"關閉\",\"Close modal\":\"關閉模態\",\"Close navigation\":\"關閉導航\",\"Close sidebar\":\"關閉側邊欄\",\"Confirm changes\":\"確認更改\",Custom:\"自定義\",\"Edit item\":\"編輯項目\",\"Error getting related resources\":\"獲取相關資源出錯\",\"Error parsing svg\":\"解析 svg 時出錯\",\"External documentation for {title}\":\"{title} 的外部文檔\",Favorite:\"喜愛\",Flags:\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"經常使用\",Global:\"全球的\",\"Go back to the list\":\"返回清單\",\"Hide password\":\"隱藏密碼\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",\"More items …\":\"更多項目 …\",Next:\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",Objects:\"物件\",Open:\"打開\",'Open link to \"{resourceTitle}\"':\"打開指向 “{resourceTitle}” 的鏈結\",\"Open navigation\":\"開啟導航\",\"Password is secure\":\"密碼是安全的\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",\"Please select a time zone:\":\"請選擇時區:\",Previous:\"上一個\",\"Related resources\":\"相關資源\",Search:\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",Settings:\"設定\",\"Settings navigation\":\"設定值導覽\",\"Show password\":\"顯示密碼\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",Submit:\"提交\",Symbols:\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Type to search time zone\":\"鍵入以搜索時區\",\"Unable to search the group\":\"無法搜尋群組\",\"Undo changes\":\"取消更改\",'Write message, use \"@\" to mention someone, use \":\" for emoji autocompletion …':'寫訊息,使用 \"@\" 來指代某人,使用 \":\" 用於表情符號自動填充 ...'}},{locale:\"zh_TW\",translations:{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",Actions:\"動作\",Activities:\"活動\",\"Animals & Nature\":\"動物與自然\",Choose:\"選擇\",Close:\"關閉\",Custom:\"自定義\",Flags:\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"最近使用\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",Next:\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",Objects:\"物件\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",Previous:\"上一個\",Search:\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",Settings:\"設定\",\"Settings navigation\":\"設定值導覽\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",Symbols:\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Unable to search the group\":\"無法搜尋群組\",\"Write message, @ to mention someone …\":\"輸入訊息時可使用 @ 來標示某人...\"}}].forEach((e=>{const t={};for(const a in e.translations)e.translations[a].pluralId?t[a]={msgid:a,msgid_plural:e.translations[a].pluralId,msgstr:e.translations[a].msgstr}:t[a]={msgid:a,msgstr:[e.translations[a]]};n.addTranslation(e.locale,{translations:{\"\":t}})}));const i=n.build(),r=(i.ngettext.bind(i),i.gettext.bind(i))},723:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>i});var o=a(2734),n=a.n(o);const i={before(){this.$slots.default&&\"\"!==this.text.trim()||(n().util.warn(\"\".concat(this.$options.name,\" cannot be empty and requires a meaningful text content\"),this),this.$destroy(),this.$el.remove())},beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?this.$slots.default[0].text.trim():\"\"}}}},1139:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>i});var o=a(723);const n=function(e,t){let a=e.$parent;for(;a;){if(a.$options.name===t)return a;a=a.$parent}},i={mixins:[o.Z],props:{icon:{type:String,default:\"\"},name:{type:String,default:null},title:{type:String,default:\"\"},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:\"\"},ariaHidden:{type:Boolean,default:null}},emits:[\"click\"],computed:{nameTitleFallback(){return null===this.name&&this.title?(console.warn(\"The `title` prop was renamed. Please use the `name` prop instead if you intend to set the main content text.\"),this.title):this.name},isIconUrl(){try{return new URL(this.icon)}catch(e){return!1}}},methods:{onClick(e){if(this.$emit(\"click\",e),this.closeAfterClick){const e=n(this,\"NcActions\");e&&e.closeMenu&&e.closeMenu(!1)}}}}},1205:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>o});const o=e=>Math.random().toString(36).replace(/[^a-z]+/g,\"\").slice(0,e||5)},1206:(e,t,a)=>{\"use strict\";a.d(t,{L:()=>o});a(4505);const o=function(){return Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]}),window._nc_focus_trap}},4953:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),n=a.n(o),i=a(3645),r=a.n(i)()(n());r.push([e.id,\".material-design-icon[data-v-4c8a3330]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.active[data-v-4c8a3330]{background-color:var(--color-background-hover);border-radius:6px;padding:0}.action-link[data-v-4c8a3330]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:rgba(0,0,0,0);box-shadow:none;font-weight:normal;font-size:var(--default-font-size);line-height:44px}.action-link>span[data-v-4c8a3330]{cursor:pointer;white-space:nowrap}.action-link__icon[data-v-4c8a3330]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px;background-repeat:no-repeat}.action-link[data-v-4c8a3330] .material-design-icon{width:44px;height:44px;opacity:1}.action-link[data-v-4c8a3330] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-link p[data-v-4c8a3330]{max-width:220px;line-height:1.6em;padding:10.8px 0;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis}.action-link__longtext[data-v-4c8a3330]{cursor:pointer;white-space:pre-wrap}.action-link__title[data-v-4c8a3330]{font-weight:bold;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline-block}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/assets/action.scss\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCiBC,2BACC,8CAAA,CACA,iBAAA,CACA,SAAA,CAqBF,8BACC,YAAA,CACA,sBAAA,CAEA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,kBCxBY,CDyBZ,qBAAA,CAEA,cAAA,CACA,kBAAA,CAEA,4BAAA,CACA,QAAA,CACA,eAAA,CACA,8BAAA,CACA,eAAA,CAEA,kBAAA,CACA,kCAAA,CACA,gBC9Ce,CDgDf,mCACC,cAAA,CACA,kBAAA,CAGD,oCACC,UCtDc,CDuDd,WCvDc,CDwDd,SCrCY,CDsCZ,+BAAA,CACA,oBCtDS,CDuDT,2BAAA,CAGD,oDACC,UC/Dc,CDgEd,WChEc,CDiEd,SC9CY,CDgDZ,+EACC,qBAAA,CAKF,gCACC,eAAA,CACA,iBAAA,CAGA,gBAAA,CAEA,cAAA,CACA,eAAA,CAGA,eAAA,CACA,sBAAA,CAGD,wCACC,cAAA,CAEA,oBAAA,CAGD,qCACC,gBAAA,CACA,sBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,oBAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n * @author Marco Ambrosini \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n@mixin action-active {\\n\\tli {\\n\\t\\t&.active {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder-radius: 6px;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n@mixin action--disabled {\\n\\t.action--disabled {\\n\\t\\tpointer-events: none;\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t&:hover, &:focus {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\topacity: $opacity_disabled;\\n\\t\\t}\\n\\t\\t& * {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\\n@mixin action-item($name) {\\n\\t.action-#{$name} {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\n\\t\\twidth: 100%;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tpadding-right: $icon-margin;\\n\\t\\tbox-sizing: border-box; // otherwise router-link overflows in Firefox\\n\\n\\t\\tcursor: pointer;\\n\\t\\twhite-space: nowrap;\\n\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tbox-shadow: none;\\n\\n\\t\\tfont-weight: normal;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tline-height: $clickable-area;\\n\\n\\t\\t& > span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t&__icon {\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t\\tbackground-position: $icon-margin center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t}\\n\\n\\t\\t&:deep(.material-design-icon) {\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\topacity: $opacity_full;\\n\\n\\t\\t\\t.material-design-icon__svg {\\n\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\tp {\\n\\t\\t\\tmax-width: 220px;\\n\\t\\t\\tline-height: 1.6em;\\n\\n\\t\\t\\t// 14px are currently 1em line-height. Mixing units as '44px - 1.6em' does not work.\\n\\t\\t\\tpadding: #{math.div($clickable-area - 1.6 * 14px, 2)} 0;\\n\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\ttext-align: left;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t&__longtext {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\t// allow the use of `\\\\n`\\n\\t\\t\\twhite-space: pre-wrap;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},2180:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),n=a.n(o),i=a(3645),r=a.n(i)()(n());r.push([e.id,\".material-design-icon[data-v-ab5e8848]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.active[data-v-ab5e8848]{background-color:var(--color-background-hover);border-radius:6px;padding:0}.action-router[data-v-ab5e8848]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:rgba(0,0,0,0);box-shadow:none;font-weight:normal;font-size:var(--default-font-size);line-height:44px}.action-router>span[data-v-ab5e8848]{cursor:pointer;white-space:nowrap}.action-router__icon[data-v-ab5e8848]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px;background-repeat:no-repeat}.action-router[data-v-ab5e8848] .material-design-icon{width:44px;height:44px;opacity:1}.action-router[data-v-ab5e8848] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-router p[data-v-ab5e8848]{max-width:220px;line-height:1.6em;padding:10.8px 0;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis}.action-router__longtext[data-v-ab5e8848]{cursor:pointer;white-space:pre-wrap}.action-router__title[data-v-ab5e8848]{font-weight:bold;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline-block}.action--disabled[data-v-ab5e8848]{pointer-events:none;opacity:.5}.action--disabled[data-v-ab5e8848]:hover,.action--disabled[data-v-ab5e8848]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-ab5e8848]{opacity:1 !important}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/assets/action.scss\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCiBC,2BACC,8CAAA,CACA,iBAAA,CACA,SAAA,CAqBF,gCACC,YAAA,CACA,sBAAA,CAEA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,kBCxBY,CDyBZ,qBAAA,CAEA,cAAA,CACA,kBAAA,CAEA,4BAAA,CACA,QAAA,CACA,eAAA,CACA,8BAAA,CACA,eAAA,CAEA,kBAAA,CACA,kCAAA,CACA,gBC9Ce,CDgDf,qCACC,cAAA,CACA,kBAAA,CAGD,sCACC,UCtDc,CDuDd,WCvDc,CDwDd,SCrCY,CDsCZ,+BAAA,CACA,oBCtDS,CDuDT,2BAAA,CAGD,sDACC,UC/Dc,CDgEd,WChEc,CDiEd,SC9CY,CDgDZ,iFACC,qBAAA,CAKF,kCACC,eAAA,CACA,iBAAA,CAGA,gBAAA,CAEA,cAAA,CACA,eAAA,CAGA,eAAA,CACA,sBAAA,CAGD,0CACC,cAAA,CAEA,oBAAA,CAGD,uCACC,gBAAA,CACA,sBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,oBAAA,CA3FF,mCACC,mBAAA,CACA,UCMiB,CDLjB,kFACC,cAAA,CACA,UCGgB,CDDjB,qCACC,oBAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n * @author Marco Ambrosini \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n@mixin action-active {\\n\\tli {\\n\\t\\t&.active {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder-radius: 6px;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n@mixin action--disabled {\\n\\t.action--disabled {\\n\\t\\tpointer-events: none;\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t&:hover, &:focus {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\topacity: $opacity_disabled;\\n\\t\\t}\\n\\t\\t& * {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\\n@mixin action-item($name) {\\n\\t.action-#{$name} {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\n\\t\\twidth: 100%;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tpadding-right: $icon-margin;\\n\\t\\tbox-sizing: border-box; // otherwise router-link overflows in Firefox\\n\\n\\t\\tcursor: pointer;\\n\\t\\twhite-space: nowrap;\\n\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tbox-shadow: none;\\n\\n\\t\\tfont-weight: normal;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tline-height: $clickable-area;\\n\\n\\t\\t& > span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t&__icon {\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t\\tbackground-position: $icon-margin center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t}\\n\\n\\t\\t&:deep(.material-design-icon) {\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\topacity: $opacity_full;\\n\\n\\t\\t\\t.material-design-icon__svg {\\n\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\tp {\\n\\t\\t\\tmax-width: 220px;\\n\\t\\t\\tline-height: 1.6em;\\n\\n\\t\\t\\t// 14px are currently 1em line-height. Mixing units as '44px - 1.6em' does not work.\\n\\t\\t\\tpadding: #{math.div($clickable-area - 1.6 * 14px, 2)} 0;\\n\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\ttext-align: left;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t&__longtext {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\t// allow the use of `\\\\n`\\n\\t\\t\\twhite-space: pre-wrap;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},8827:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),n=a.n(o),i=a(3645),r=a.n(i)()(n());r.push([e.id,\".material-design-icon[data-v-20a3e950]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-20a3e950]{display:flex;align-items:center}.action-items>button[data-v-20a3e950]{margin-right:7px}.action-item[data-v-20a3e950]{--open-background-color: var(--color-background-hover, $action-background-hover);position:relative;display:inline-block}.action-item.action-item--primary[data-v-20a3e950]{--open-background-color: var(--color-primary-element-hover)}.action-item.action-item--secondary[data-v-20a3e950]{--open-background-color: var(--color-primary-element-light-hover)}.action-item.action-item--error[data-v-20a3e950]{--open-background-color: var(--color-error-hover)}.action-item.action-item--warning[data-v-20a3e950]{--open-background-color: var(--color-warning-hover)}.action-item.action-item--success[data-v-20a3e950]{--open-background-color: var(--color-success-hover)}.action-item.action-item--tertiary-no-background[data-v-20a3e950]{--open-background-color: transparent}.action-item.action-item--open .action-item__menutoggle[data-v-20a3e950]{background-color:var(--open-background-color)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcActions/NcActions.vue\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,+BACC,YAAA,CACA,kBAAA,CAGA,sCACC,gBAAA,CAIF,8BACC,gFAAA,CACA,iBAAA,CACA,oBAAA,CAEA,mDACC,2DAAA,CAGD,qDACC,iEAAA,CAGD,iDACC,iDAAA,CAGD,mDACC,mDAAA,CAGD,mDACC,mDAAA,CAGD,kEACC,oCAAA,CAGD,yEACC,6CAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n// Inline buttons\\n.action-items {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\n\\t// Spacing between buttons\\n\\t& > button {\\n\\t\\tmargin-right: math.div($icon-margin, 2);\\n\\t}\\n}\\n\\n.action-item {\\n\\t--open-background-color: var(--color-background-hover, $action-background-hover);\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\n\\t&.action-item--primary {\\n\\t\\t--open-background-color: var(--color-primary-element-hover);\\n\\t}\\n\\n\\t&.action-item--secondary {\\n\\t\\t--open-background-color: var(--color-primary-element-light-hover);\\n\\t}\\n\\n\\t&.action-item--error {\\n\\t\\t--open-background-color: var(--color-error-hover);\\n\\t}\\n\\n\\t&.action-item--warning {\\n\\t\\t--open-background-color: var(--color-warning-hover);\\n\\t}\\n\\n\\t&.action-item--success {\\n\\t\\t--open-background-color: var(--color-success-hover);\\n\\t}\\n\\n\\t&.action-item--tertiary-no-background {\\n\\t\\t--open-background-color: transparent;\\n\\t}\\n\\n\\t&.action-item--open .action-item__menutoggle {\\n\\t\\tbackground-color: var(--open-background-color);\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=r},5565:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),n=a.n(o),i=a(3645),r=a.n(i)()(n());r.push([e.id,\".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper{border-radius:var(--border-radius-large);overflow:hidden}.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner{border-radius:var(--border-radius-large);padding:4px;max-height:calc(50vh - 16px);overflow:auto}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcActions/NcActions.vue\"],names:[],mappings:\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCJD,kFACC,wCAAA,CACA,eAAA,CAEA,mGACC,wCAAA,CACA,WAAA,CACA,4BAAA,CACA,aAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n// We overwrote the popover base class, so we can style\\n// the popover__inner for actions only.\\n.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper {\\n\\tborder-radius: var(--border-radius-large);\\n\\toverflow:hidden;\\n\\n\\t.v-popper__inner {\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: 4px;\\n\\t\\tmax-height: calc(50vh - 16px);\\n\\t\\toverflow: auto;\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=r},9560:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),n=a.n(o),i=a(3645),r=a.n(i)()(n());r.push([e.id,\".material-design-icon[data-v-74afe090]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-crumb[data-v-74afe090]{background-image:none;display:inline-flex;height:44px;padding:0}.vue-crumb[data-v-74afe090]:last-child{max-width:210px;font-weight:bold}.vue-crumb:last-child .vue-crumb__separator[data-v-74afe090]{display:none}.vue-crumb>a[data-v-74afe090]:hover,.vue-crumb>a[data-v-74afe090]:focus{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb--hidden[data-v-74afe090]{display:none}.vue-crumb.vue-crumb--hovered>a[data-v-74afe090]{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb__separator[data-v-74afe090]{padding:0;color:var(--color-text-maxcontrast)}.vue-crumb>a[data-v-74afe090]{overflow:hidden;color:var(--color-text-maxcontrast);padding:12px;min-width:44px;max-width:100%;border-radius:var(--border-radius-pill);align-items:center;display:inline-flex;justify-content:center}.vue-crumb>a>span[data-v-74afe090]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vue-crumb[data-v-74afe090]:not(.dropdown) .action-item{max-width:100%}.vue-crumb[data-v-74afe090]:not(.dropdown) .action-item .button-vue{padding:0 4px 0 16px}.vue-crumb[data-v-74afe090]:not(.dropdown) .action-item .button-vue__wrapper{flex-direction:row-reverse}.vue-crumb[data-v-74afe090]:not(.dropdown) .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-dark);color:var(--color-main-text)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcBreadcrumb/NcBreadcrumb.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,4BACC,qBAAA,CACA,mBAAA,CACA,WCmBgB,CDlBhB,SAAA,CAEA,uCACC,eAAA,CACA,gBAAA,CAGA,6DACC,YAAA,CAKF,wEAEC,6CAAA,CACA,4BAAA,CAGD,oCACC,YAAA,CAGD,iDACC,6CAAA,CACA,4BAAA,CAGD,uCACC,SAAA,CACA,mCAAA,CAGD,8BACC,eAAA,CACA,mCAAA,CACA,YAAA,CACA,cCnBe,CDoBf,cAAA,CACA,uCAAA,CACA,kBAAA,CACA,mBAAA,CACA,sBAAA,CAEA,mCACC,eAAA,CACA,sBAAA,CACA,kBAAA,CAMF,wDAEC,cAAA,CAEA,oEACC,oBAAA,CAEA,6EACC,0BAAA,CAKF,mGACC,6CAAA,CACA,4BAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.vue-crumb {\\n\\tbackground-image: none;\\n\\tdisplay: inline-flex;\\n\\theight: $clickable-area;\\n\\tpadding: 0;\\n\\n\\t&:last-child {\\n\\t\\tmax-width: 210px;\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t// Don't show breadcrumb separator for last crumb\\n\\t\\t.vue-crumb__separator {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t// Hover and focus effect for crumbs\\n\\t& > a:hover,\\n\\t& > a:focus {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\t&--hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t&#{&}--hovered > a {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\t&__separator {\\n\\t\\tpadding: 0;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t> a {\\n\\t\\toverflow: hidden;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding: 12px;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\tmax-width: 100%;\\n\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\talign-items: center;\\n\\t\\tdisplay: inline-flex;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t> span {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust action item appearance for crumbs with actions\\n\\t// to match other crumbs\\n\\t&:not(.dropdown) :deep(.action-item) {\\n\\t\\t// Adjustments necessary to correctly shrink on small screens\\n\\t\\tmax-width: 100%;\\n\\n\\t\\t.button-vue {\\n\\t\\t\\tpadding: 0 4px 0 16px;\\n\\n\\t\\t\\t&__wrapper {\\n\\t\\t\\t\\tflex-direction: row-reverse;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Adjust the background of the last crumb when the action is open\\n\\t\\t&.action-item--open .action-item__menutoggle {\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},7154:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),n=a.n(o),i=a(3645),r=a.n(i)()(n());r.push([e.id,\".material-design-icon[data-v-636ca0d0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.breadcrumb[data-v-636ca0d0]{width:100%;flex-grow:1;display:inline-flex}.breadcrumb--collapsed .vue-crumb[data-v-636ca0d0]:last-child{min-width:100px;flex-shrink:1}.breadcrumb nav[data-v-636ca0d0]{flex-shrink:1;max-width:100%;min-width:228px}.breadcrumb .breadcrumb__crumbs[data-v-636ca0d0]{max-width:100%}.breadcrumb .breadcrumb__crumbs[data-v-636ca0d0],.breadcrumb .breadcrumb__actions[data-v-636ca0d0]{display:inline-flex}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcBreadcrumbs/NcBreadcrumbs.vue\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,6BACC,UAAA,CACA,WAAA,CACA,mBAAA,CAEA,8DACC,eAAA,CACA,aAAA,CAGD,iCACC,aAAA,CACA,cAAA,CAKA,eAAA,CAGD,iDACC,cAAA,CAGD,mGAEC,mBAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n.breadcrumb {\\n\\twidth: 100%;\\n\\tflex-grow: 1;\\n\\tdisplay: inline-flex;\\n\\n\\t&--collapsed .vue-crumb:last-child {\\n\\t\\tmin-width: 100px;\\n\\t\\tflex-shrink: 1;\\n\\t}\\n\\n\\tnav {\\n\\t\\tflex-shrink: 1;\\n\\t\\tmax-width: 100%;\\n\\t\\t/**\\n\\t\\t * This value is given by the min-width of the last crumb (100px) plus\\n\\t\\t * two times the width of a crumb with an icon (first crumb and hidden crumbs actions).\\n\\t\\t */\\n\\t\\tmin-width: 228px;\\n\\t}\\n\\n\\t& #{&}__crumbs {\\n\\t\\tmax-width: 100%;\\n\\t}\\n\\n\\t& #{&}__crumbs,\\n\\t& #{&}__actions {\\n\\t\\tdisplay: inline-flex;\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=r},7233:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),n=a.n(o),i=a(3645),r=a.n(i)()(n());r.push([e.id,\".material-design-icon[data-v-488fcfba]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-488fcfba]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue *[data-v-488fcfba],.button-vue span[data-v-488fcfba]{cursor:pointer}.button-vue[data-v-488fcfba]:focus{outline:none}.button-vue[data-v-488fcfba]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-488fcfba]{cursor:default}.button-vue[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-488fcfba]:active{background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-488fcfba]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue__icon[data-v-488fcfba]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-488fcfba]{font-weight:bold;margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue--icon-only[data-v-488fcfba]{width:44px !important}.button-vue--text-only[data-v-488fcfba]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-488fcfba]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-488fcfba]{padding:0 16px 0 4px}.button-vue--wide[data-v-488fcfba]{width:100%}.button-vue[data-v-488fcfba]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-488fcfba]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.button-vue--vue-primary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-488fcfba]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-488fcfba]{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue--vue-secondary[data-v-488fcfba]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--vue-tertiary[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{color:var(--color-primary-element-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-488fcfba]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-488fcfba]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-488fcfba]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-488fcfba]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-488fcfba]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-488fcfba]:active{background-color:var(--color-error)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcButton/NcButton.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAKA,kBAAA,CACA,uDAAA,CACA,uBAAA,CACA,iCAAA,CAkBA,6CAAA,CACA,mDAAA,CA1BA,iEAEC,cAAA,CAQD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCIiB,CDFjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,yDAAA,CAKD,oCACC,mDAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAGD,mCACC,WCvCe,CDwCf,UCxCe,CDyCf,eCzCe,CD0Cf,cC1Ce,CD2Cf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,mDAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,uCAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,6CAAA,CACA,mDAAA,CACA,iEACC,6CAAA,CACA,yDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,uCAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.button-vue {\\n\\tposition: relative;\\n\\twidth: fit-content;\\n\\toverflow: hidden;\\n\\tborder: 0;\\n\\tpadding: 0;\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\tmin-height: $clickable-area;\\n\\tmin-width: $clickable-area;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\n\\t// Cursor pointer on element and all children\\n\\tcursor: pointer;\\n\\t& *,\\n\\tspan {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\tborder-radius: math.div($clickable-area, 2);\\n\\ttransition-property: color, border-color, background-color;\\n\\ttransition-duration: 0.1s;\\n\\ttransition-timing-function: linear;\\n\\n\\t// No outline feedback for focus. Handled with a toggled class in js (see data)\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&:disabled {\\n\\t\\tcursor: default;\\n\\t\\t& * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t// Gives a wash out effect\\n\\t\\tfilter: saturate($opacity_normal);\\n\\t}\\n\\n\\t// Default button type\\n\\tcolor: var(--color-primary-element-light-text);\\n\\tbackground-color: var(--color-primary-element-light);\\n\\t&:hover:not(:disabled) {\\n\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t}\\n\\n\\t// Back to the default color for this button when active\\n\\t// TODO: add ripple effect\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\theight: $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-height: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__text {\\n\\t\\tfont-weight: bold;\\n\\t\\tmargin-bottom: 1px;\\n\\t\\tpadding: 2px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// Icon-only button\\n\\t&--icon-only {\\n\\t\\twidth: $clickable-area !important;\\n\\t}\\n\\n\\t// Text-only button\\n\\t&--text-only {\\n\\t\\tpadding: 0 12px;\\n\\t\\t& .button-vue__text {\\n\\t\\t\\tmargin-left: 4px;\\n\\t\\t\\tmargin-right: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon and text button\\n\\t&--icon-and-text {\\n\\t\\tpadding: 0 16px 0 4px;\\n\\t}\\n\\n\\t// Wide button spans the whole width of the container\\n\\t&--wide {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t&.button-vue--vue-tertiary-on-primary {\\n\\t\\t\\toutline: 2px solid var(--color-primary-element-text);\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Button types\\n\\n\\t// Primary\\n\\t&--vue-primary {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-primary-element-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t// Secondary\\n\\t&--vue-secondary {\\n\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary\\n\\t&--vue-tertiary {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary, no background\\n\\t&--vue-tertiary-no-background {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary on primary color (like the header)\\n\\t&--vue-tertiary-on-primary {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\tbackground-color: transparent;\\n\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Success\\n\\t&--vue-success {\\n\\t\\tbackground-color: var(--color-success);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-success-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// : add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-success);\\n\\t\\t}\\n\\t}\\n\\n\\t// Warning\\n\\t&--vue-warning {\\n\\t\\tbackground-color: var(--color-warning);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-warning-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-warning);\\n\\t\\t}\\n\\t}\\n\\n\\t// Error\\n\\t&--vue-error {\\n\\t\\tbackground-color: var(--color-error);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-error-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const s=r},1625:(e,t,a)=>{\"use strict\";a.d(t,{Z:()=>s});var o=a(7537),n=a.n(o),i=a(3645),r=a.n(i)()(n());r.push([e.id,\".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:rgba(0,0,0,0);pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown.v-popper__popper{z-index:100000;top:0;left:0;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-dropdown.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius-large);overflow:hidden;background:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-10px;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcPopover/NcPopover.vue\"],names:[],mappings:\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,iBACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,8BAAA,CACA,mBAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CAGD,wBACC,aAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,eAAA,CACA,mBAAA,CACA,UAAA,CAMA,2CACC,cAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CAEA,sDAAA,CAEA,4DACC,SAAA,CACA,4BAAA,CACA,wCAAA,CACA,eAAA,CACA,uCAAA,CAGD,sEACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBA1BW,CA6BZ,kGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAGD,qGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAGD,oGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAGD,mGACC,WAAA,CACA,oBAAA,CACA,8CAAA,CAGD,6DACC,iBAAA,CACA,2EAAA,CACA,SAAA,CAGD,8DACC,kBAAA,CACA,yCAAA,CACA,SAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.resize-observer {\\n\\tposition:absolute;\\n\\ttop:0;\\n\\tleft:0;\\n\\tz-index:-1;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tborder:none;\\n\\tbackground-color:transparent;\\n\\tpointer-events:none;\\n\\tdisplay:block;\\n\\toverflow:hidden;\\n\\topacity:0\\n}\\n\\n.resize-observer object {\\n\\tdisplay:block;\\n\\tposition:absolute;\\n\\ttop:0;\\n\\tleft:0;\\n\\theight:100%;\\n\\twidth:100%;\\n\\toverflow:hidden;\\n\\tpointer-events:none;\\n\\tz-index:-1\\n}\\n\\n$arrow-width: 10px;\\n\\n.v-popper--theme-dropdown {\\n\\t&.v-popper__popper {\\n\\t\\tz-index: 100000;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tdisplay: block !important;\\n\\n\\t\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t\\t.v-popper__inner {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t.v-popper__arrow-container {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tz-index: 1;\\n\\t\\t\\twidth: 0;\\n\\t\\t\\theight: 0;\\n\\t\\t\\tborder-style: solid;\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tborder-width: $arrow-width;\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='top'] .v-popper__arrow-container {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tborder-bottom-width: 0;\\n\\t\\t\\tborder-top-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tborder-top-width: 0;\\n\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='right'] .v-popper__arrow-container {\\n\\t\\t\\tleft: -$arrow-width;\\n\\t\\t\\tborder-left-width: 0;\\n\\t\\t\\tborder-right-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='left'] .v-popper__arrow-container {\\n\\t\\t\\tright: -$arrow-width;\\n\\t\\t\\tborder-right-width: 0;\\n\\t\\t\\tborder-left-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[aria-hidden='true'] {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t\\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\n\\t\\t&[aria-hidden='false'] {\\n\\t\\t\\tvisibility: visible;\\n\\t\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],sourceRoot:\"\"}]);const s=r},3645:e=>{\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var a=\"\",o=void 0!==t[5];return t[4]&&(a+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(a+=\"@media \".concat(t[2],\" {\")),o&&(a+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),a+=e(t),o&&(a+=\"}\"),t[2]&&(a+=\"}\"),t[4]&&(a+=\"}\"),a})).join(\"\")},t.i=function(e,a,o,n,i){\"string\"==typeof e&&(e=[[null,e,void 0]]);var r={};if(o)for(var s=0;s0?\" \".concat(d[5]):\"\",\" {\").concat(d[1],\"}\")),d[5]=i),a&&(d[2]?(d[1]=\"@media \".concat(d[2],\" {\").concat(d[1],\"}\"),d[2]=a):d[2]=a),n&&(d[4]?(d[1]=\"@supports (\".concat(d[4],\") {\").concat(d[1],\"}\"),d[4]=n):d[4]=\"\".concat(n)),t.push(d))}},t}},7537:e=>{\"use strict\";e.exports=function(e){var t=e[1],a=e[3];if(!a)return t;if(\"function\"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),n=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(o),i=\"/*# \".concat(n,\" */\");return[t].concat([i]).join(\"\\n\")}return[t].join(\"\\n\")}},3379:e=>{\"use strict\";var t=[];function a(e){for(var a=-1,o=0;o{\"use strict\";var t={};e.exports=function(e,a){var o=function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(e){a=null}t[e]=a}return t[e]}(e);if(!o)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");o.appendChild(a)}},9216:e=>{\"use strict\";e.exports=function(e){var t=document.createElement(\"style\");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,a)=>{\"use strict\";e.exports=function(e){var t=a.nc;t&&e.setAttribute(\"nonce\",t)}},7795:e=>{\"use strict\";e.exports=function(e){if(\"undefined\"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(a){!function(e,t,a){var o=\"\";a.supports&&(o+=\"@supports (\".concat(a.supports,\") {\")),a.media&&(o+=\"@media \".concat(a.media,\" {\"));var n=void 0!==a.layer;n&&(o+=\"@layer\".concat(a.layer.length>0?\" \".concat(a.layer):\"\",\" {\")),o+=a.css,n&&(o+=\"}\"),a.media&&(o+=\"}\"),a.supports&&(o+=\"}\");var i=a.sourceMap;i&&\"undefined\"!=typeof btoa&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i)))),\" */\")),t.styleTagTransform(o,e,t.options)}(t,e,a)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},9158:()=>{},5727:()=>{},6591:()=>{},1753:()=>{},2102:()=>{},2405:()=>{},1900:(e,t,a)=>{\"use strict\";function o(e,t,a,o,n,i,r,s){var l,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=a,c._compiled=!0),o&&(c.functional=!0),i&&(c._scopeId=\"data-v-\"+i),r?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=l):n&&(l=s?function(){n.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:n),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:c}}a.d(t,{Z:()=>o})},542:e=>{\"use strict\";e.exports=require(\"@nextcloud/event-bus\")},7931:e=>{\"use strict\";e.exports=require(\"@nextcloud/l10n/gettext\")},3465:e=>{\"use strict\";e.exports=require(\"debounce\")},9454:e=>{\"use strict\";e.exports=require(\"floating-vue\")},4505:e=>{\"use strict\";e.exports=require(\"focus-trap\")},2734:e=>{\"use strict\";e.exports=require(\"vue\")},9044:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/ChevronRight.vue\")},1441:e=>{\"use strict\";e.exports=require(\"vue-material-design-icons/DotsHorizontal.vue\")}},t={};function a(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={id:o,exports:{}};return e[o](i,i.exports,a),i.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.nc=void 0;var o={};return(()=>{\"use strict\";a.r(o),a.d(o,{default:()=>D});var e=a(644),t=a(1484),n=a(6704),i=a(6882),r=a(2734),s=a.n(r);const l=(e,t,a)=>{if(void 0!==e)for(let o=e.length-1;o>=0;o--){const n=e[o],i=!n.componentOptions&&n.tag&&-1===t.indexOf(n.tag),r=!!n.componentOptions&&\"string\"==typeof n.componentOptions.tag,l=r&&-1===t.indexOf(n.componentOptions.tag);(i||!r||l)&&((i||l)&&s().util.warn(\"\".concat(i?n.tag:n.componentOptions.tag,\" is not allowed inside the \").concat(a.$options.name,\" component\"),a),e.splice(o,1))}};var c=a(542);const d=require(\"vue-material-design-icons/Folder.vue\");var u=a.n(d),p=a(3465),m=a.n(p);const A=\"vue-crumb\",g={name:\"NcBreadcrumbs\",components:{NcActions:e.default,NcActionRouter:t.default,NcActionLink:n.default,NcBreadcrumb:i.default,IconFolder:u()},props:{rootIcon:{type:String,default:\"icon-home\"}},emits:[\"dropped\"],data:()=>({hiddenCrumbs:[],hiddenIndices:[],menuBreadcrumbProps:{name:\"\",forceMenu:!0,disableDrop:!0,open:!1}}),beforeMount(){l(this.$slots.default,[\"NcBreadcrumb\"],this)},beforeUpdate(){l(this.$slots.default,[\"NcBreadcrumb\"],this)},created(){window.addEventListener(\"resize\",m()((()=>{this.handleWindowResize()}),100)),(0,c.subscribe)(\"navigation-toggled\",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.delayedHideCrumbs()},beforeDestroy(){window.removeEventListener(\"resize\",this.handleWindowResize),(0,c.unsubscribe)(\"navigation-toggled\",this.delayedResize)},methods:{delayedHideCrumbs(){this.$nextTick((()=>{const e=this.$slots.default||[];this.hideCrumbs(e)}))},closeActions(e){this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},delayedResize(){this.$nextTick((()=>{this.handleWindowResize()}))},handleWindowResize(){const e=this.$slots.default||[];if(this.$refs.container){const t=e.length,a=[],o=this.$refs.container.offsetWidth;let n=this.getTotalWidth(e);this.$refs.breadcrumb__actions&&(n+=this.$refs.breadcrumb__actions.offsetWidth);let i=n-o;i+=i>0?64:0;let r=0;const s=Math.floor(t/2);for(;i>0&&re-t)))||(this.hiddenCrumbs=a.map((t=>e[t])),this.hiddenIndices=a)}},arraysEqual(e,t){if(e.length!==t.length)return!1;if(e===t)return!0;if(null===e||null===t)return!1;for(let a=0;ae+this.getWidth(t.elm)),0)},getWidth(e){if(!e.classList)return 0;const t=e.classList.contains(\"\".concat(A,\"--hidden\"));e.style.minWidth=\"auto\",e.classList.remove(\"\".concat(A,\"--hidden\"));const a=e.offsetWidth;return t&&e.classList.add(\"\".concat(A,\"--hidden\")),e.style.minWidth=\"\",a},preventDefault:e=>(e.preventDefault&&e.preventDefault(),!1),dragStart(e){return this.preventDefault(e)},dropped(e,t,a){a||this.$emit(\"dropped\",e,t),this.menuBreadcrumbProps.open=!1;return document.querySelectorAll(\".\".concat(A)).forEach((e=>{e.classList.remove(\"\".concat(A,\"--hovered\"))})),this.preventDefault(e)},dragOver(e){return this.preventDefault(e)},dragEnter(e,t){if(!t&&e.target.closest){const t=e.target.closest(\".\".concat(A));if(t.classList&&t.classList.contains(A)){document.querySelectorAll(\".\".concat(A)).forEach((e=>{e.classList.remove(\"\".concat(A,\"--hovered\"))})),t.classList.add(\"\".concat(A,\"--hovered\"))}}},dragLeave(e,t){if(!t&&!e.target.contains(e.relatedTarget)&&e.target.closest){const t=e.target.closest(\".\".concat(A));if(t.contains(e.relatedTarget))return;t.classList&&t.classList.contains(A)&&t.classList.remove(\"\".concat(A,\"--hovered\"))}},hideCrumbs(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;e.forEach(((e,a)=>{var o;null!=e&&null!==(o=e.elm)&&void 0!==o&&o.classList&&(this.hiddenIndices.includes(a+t)?e.elm.classList.add(\"\".concat(A,\"--hidden\")):e.elm.classList.remove(\"\".concat(A,\"--hidden\")))}))}},render(e){const t=this.$slots.default||[];if(0===t.length)return;s().set(t[0].componentOptions.propsData,\"icon\",this.rootIcon);let a=[];if(this.hiddenCrumbs.length){a=t.slice(0,Math.round(t.length/2)),this.hideCrumbs(a),a.push(e(\"NcBreadcrumb\",{class:\"dropdown\",props:this.menuBreadcrumbProps,attrs:{\"aria-hidden\":!0},ref:\"actionsBreadcrumb\",key:\"actions-breadcrumb-1\",nativeOn:{dragstart:this.dragStart,dragenter:()=>{this.menuBreadcrumbProps.open=!0},dragleave:this.closeActions},on:{\"update:open\":e=>{this.menuBreadcrumbProps.open=e}}},this.hiddenCrumbs.map((t=>{const a=t.componentOptions.propsData.to,o=t.componentOptions.propsData.href,n=t.componentOptions.propsData.disableDrop,i=t.componentOptions.propsData.title,r=t.componentOptions.propsData.name||i;let s=\"NcActionLink\",l=o;a&&(s=\"NcActionRouter\",l=a);const c=e(\"IconFolder\",{props:{size:20},slot:\"icon\"});return e(s,{class:A,props:{href:o,title:i,name:\"\",to:a},attrs:{draggable:!1},nativeOn:{dragstart:this.dragStart,drop:e=>this.dropped(e,l,n),dragover:this.dragOver,dragenter:e=>this.dragEnter(e,n),dragleave:e=>this.dragLeave(e,n)}},[c,r])}))));const o=t.slice(Math.round(t.length/2));a=a.concat(o),this.hideCrumbs(o,a.length-1)}else a=t,this.hideCrumbs(a);const o=[e(\"nav\",{},[e(\"ul\",{class:\"breadcrumb__crumbs\"},a)])];return this.$slots.actions&&o.push(e(\"div\",{class:\"breadcrumb__actions\",ref:\"breadcrumb__actions\"},this.$slots.actions)),e(\"div\",{class:[\"breadcrumb\",{\"breadcrumb--collapsed\":this.hiddenCrumbs.length===t.length-2}],ref:\"container\"},o)}};var h=a(3379),v=a.n(h),b=a(7795),f=a.n(b),C=a(569),y=a.n(C),k=a(3565),w=a.n(k),S=a(9216),x=a.n(S),N=a(4589),z=a.n(N),j=a(7154),P={};P.styleTagTransform=z(),P.setAttributes=w(),P.insert=y().bind(null,\"head\"),P.domAPI=f(),P.insertStyleElement=x();v()(j.Z,P);j.Z&&j.Z.locals&&j.Z.locals;var E=a(1900),B=a(1753),_=a.n(B),T=(0,E.Z)(g,undefined,undefined,!1,null,\"636ca0d0\",null);\"function\"==typeof _()&&_()(T);const D=T.exports})(),o})()));\n//# sourceMappingURL=NcBreadcrumbs.js.map","/*! For license information please see NcIconSvgWrapper.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"NextcloudVue\",[],t):\"object\"==typeof exports?exports.NextcloudVue=t():(e.NextcloudVue=e.NextcloudVue||{},e.NextcloudVue[\"Components/NcIconSvgWrapper\"]=t())}(self,(()=>(()=>{var e={8973:(e,t,n)=>{\"use strict\";n.d(t,{Z:()=>s});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,\".material-design-icon[data-v-a3da3488]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-vue[data-v-a3da3488]{display:flex;justify-content:center;align-items:center;min-width:44px;min-height:44px;opacity:1}.icon-vue[data-v-a3da3488] svg{fill:currentColor;max-width:20px;max-height:20px}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcIconSvgWrapper/NcIconSvgWrapper.vue\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,2BACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,cAAA,CACA,eAAA,CACA,SAAA,CAEA,+BACC,iBAAA,CACA,cAAA,CACA,eAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n.icon-vue {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\tmin-width: 44px;\\n\\tmin-height: 44px;\\n\\topacity: 1;\\n\\n\\t&:deep(svg) {\\n\\t\\tfill: currentColor;\\n\\t\\tmax-width: 20px;\\n\\t\\tmax-height: 20px;\\n\\t}\\n}\\n\"],sourceRoot:\"\"}]);const s=a},3645:e=>{\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=\"\",r=void 0!==t[5];return t[4]&&(n+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(n+=\"@media \".concat(t[2],\" {\")),r&&(n+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),n+=e(t),r&&(n+=\"}\"),t[2]&&(n+=\"}\"),t[4]&&(n+=\"}\"),n})).join(\"\")},t.i=function(e,n,r,o,i){\"string\"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var s=0;s0?\" \".concat(l[5]):\"\",\" {\").concat(l[1],\"}\")),l[5]=i),n&&(l[2]?(l[1]=\"@media \".concat(l[2],\" {\").concat(l[1],\"}\"),l[2]=n):l[2]=n),o&&(l[4]?(l[1]=\"@supports (\".concat(l[4],\") {\").concat(l[1],\"}\"),l[4]=o):l[4]=\"\".concat(o)),t.push(l))}},t}},7537:e=>{\"use strict\";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if(\"function\"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(r),i=\"/*# \".concat(o,\" */\");return[t].concat([i]).join(\"\\n\")}return[t].join(\"\\n\")}},3379:e=>{\"use strict\";var t=[];function n(e){for(var n=-1,r=0;r{\"use strict\";var t={};e.exports=function(e,n){var r=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!r)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");r.appendChild(n)}},9216:e=>{\"use strict\";e.exports=function(e){var t=document.createElement(\"style\");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{\"use strict\";e.exports=function(e){var t=n.nc;t&&e.setAttribute(\"nonce\",t)}},7795:e=>{\"use strict\";e.exports=function(e){if(\"undefined\"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r=\"\";n.supports&&(r+=\"@supports (\".concat(n.supports,\") {\")),n.media&&(r+=\"@media \".concat(n.media,\" {\"));var o=void 0!==n.layer;o&&(r+=\"@layer\".concat(n.layer.length>0?\" \".concat(n.layer):\"\",\" {\")),r+=n.css,o&&(r+=\"}\"),n.media&&(r+=\"}\"),n.supports&&(r+=\"}\");var i=n.sourceMap;i&&\"undefined\"!=typeof btoa&&(r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i)))),\" */\")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},1287:()=>{},1900:(e,t,n)=>{\"use strict\";function r(e,t,n,r,o,i,a,s){var c,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId=\"data-v-\"+i),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var p=u.beforeCreate;u.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:u}}n.d(t,{Z:()=>r})}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={id:r,exports:{}};return e[r](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.nc=void 0;var r={};return(()=>{\"use strict\";n.r(r),n.d(r,{default:()=>b});const e=require(\"@skjnldsv/sanitize-svg\"),t={name:\"NcIconSvgWrapper\",props:{svg:{type:String,default:\"\"},title:{type:String,default:\"\"}},data:()=>({cleanSvg:\"\"}),async beforeMount(){await this.sanitizeSVG()},methods:{async sanitizeSVG(){this.svg&&(this.cleanSvg=await(0,e.sanitizeSVG)(this.svg))}}};var o=n(3379),i=n.n(o),a=n(7795),s=n.n(a),c=n(569),u=n.n(c),l=n(3565),p=n.n(l),d=n(9216),f=n.n(d),v=n(4589),A=n.n(v),m=n(8973),h={};h.styleTagTransform=A(),h.setAttributes=p(),h.insert=u().bind(null,\"head\"),h.domAPI=s(),h.insertStyleElement=f();i()(m.Z,h);m.Z&&m.Z.locals&&m.Z.locals;var y=n(1900),g=n(1287),C=n.n(g),x=(0,y.Z)(t,(function(){var e=this;return(0,e._self._c)(\"span\",{staticClass:\"icon-vue\",attrs:{role:\"img\",\"aria-hidden\":!e.title,\"aria-label\":e.title},domProps:{innerHTML:e._s(e.cleanSvg)}})}),[],!1,null,\"a3da3488\",null);\"function\"==typeof C()&&C()(x);const b=x.exports})(),r})()));\n//# sourceMappingURL=NcIconSvgWrapper.js.map","/*! For license information please see NcInputField.js.LICENSE.txt */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"NextcloudVue\",[],e):\"object\"==typeof exports?exports.NextcloudVue=e():(t.NextcloudVue=t.NextcloudVue||{},t.NextcloudVue[\"Components/NcInputField\"]=e())}(self,(()=>(()=>{var t={1631:(t,e,n)=>{\"use strict\";n.d(e,{default:()=>y});const r={name:\"NcButton\",props:{disabled:{type:Boolean,default:!1},type:{type:String,validator:t=>-1!==[\"primary\",\"secondary\",\"tertiary\",\"tertiary-no-background\",\"tertiary-on-primary\",\"error\",\"warning\",\"success\"].indexOf(t),default:\"secondary\"},nativeType:{type:String,validator:t=>-1!==[\"submit\",\"reset\",\"button\"].indexOf(t),default:\"button\"},wide:{type:Boolean,default:!1},ariaLabel:{type:String,default:null},href:{type:String,default:null},download:{type:String,default:null},to:{type:[String,Object],default:null},exact:{type:Boolean,default:!1},ariaHidden:{type:Boolean,default:null}},render(t){var e,n,r,o,a,i=this;const l=null===(e=this.$slots.default)||void 0===e||null===(n=e[0])||void 0===n||null===(r=n.text)||void 0===r||null===(o=r.trim)||void 0===o?void 0:o.call(r),c=!!l,s=null===(a=this.$slots)||void 0===a?void 0:a.icon;l||this.ariaLabel||console.warn(\"You need to fill either the text or the ariaLabel props in the button component.\",{text:l,ariaLabel:this.ariaLabel},this);const A=function(){let{navigate:e,isActive:n,isExactActive:r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(i.to||!i.href?\"button\":\"a\",{class:[\"button-vue\",{\"button-vue--icon-only\":s&&!c,\"button-vue--text-only\":c&&!s,\"button-vue--icon-and-text\":s&&c,[\"button-vue--vue-\".concat(i.type)]:i.type,\"button-vue--wide\":i.wide,active:n,\"router-link-exact-active\":r}],attrs:{\"aria-label\":i.ariaLabel,disabled:i.disabled,type:i.href?null:i.nativeType,role:i.href?\"button\":null,href:!i.to&&i.href?i.href:null,target:!i.to&&i.href?\"_self\":null,rel:!i.to&&i.href?\"nofollow noreferrer noopener\":null,download:!i.to&&i.href&&i.download?i.download:null,...i.$attrs},on:{...i.$listeners,click:t=>{var n,r;null===(n=i.$listeners)||void 0===n||null===(r=n.click)||void 0===r||r.call(n,t),null==e||e(t)}}},[t(\"span\",{class:\"button-vue__wrapper\"},[s?t(\"span\",{class:\"button-vue__icon\",attrs:{\"aria-hidden\":i.ariaHidden}},[i.$slots.icon]):null,c?t(\"span\",{class:\"button-vue__text\"},[l]):null])])};return this.to?t(\"router-link\",{props:{custom:!0,to:this.to,exact:this.exact},scopedSlots:{default:A}}):A()}};var o=n(3379),a=n.n(o),i=n(7795),l=n.n(i),c=n(569),s=n.n(c),A=n(3565),d=n.n(A),u=n(9216),p=n.n(u),C=n(4589),v=n.n(C),f=n(7233),b={};b.styleTagTransform=v(),b.setAttributes=d(),b.insert=s().bind(null,\"head\"),b.domAPI=l(),b.insertStyleElement=p();a()(f.Z,b);f.Z&&f.Z.locals&&f.Z.locals;var h=n(1900),g=n(2102),m=n.n(g),x=(0,h.Z)(r,undefined,undefined,!1,null,\"488fcfba\",null);\"function\"==typeof m()&&m()(x);const y=x.exports},7233:(t,e,n)=>{\"use strict\";n.d(e,{Z:()=>l});var r=n(7537),o=n.n(r),a=n(3645),i=n.n(a)()(o());i.push([t.id,\".material-design-icon[data-v-488fcfba]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-488fcfba]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue *[data-v-488fcfba],.button-vue span[data-v-488fcfba]{cursor:pointer}.button-vue[data-v-488fcfba]:focus{outline:none}.button-vue[data-v-488fcfba]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-488fcfba]{cursor:default}.button-vue[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-488fcfba]:active{background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-488fcfba]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue__icon[data-v-488fcfba]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-488fcfba]{font-weight:bold;margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue--icon-only[data-v-488fcfba]{width:44px !important}.button-vue--text-only[data-v-488fcfba]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-488fcfba]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-488fcfba]{padding:0 16px 0 4px}.button-vue--wide[data-v-488fcfba]{width:100%}.button-vue[data-v-488fcfba]:focus-visible{outline:2px solid var(--color-main-text) !important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius);background-color:rgba(0,0,0,0)}.button-vue--vue-primary[data-v-488fcfba]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.button-vue--vue-primary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-488fcfba]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-488fcfba]{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.button-vue--vue-secondary[data-v-488fcfba]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--vue-tertiary[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-no-background[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]{color:var(--color-primary-element-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary-on-primary[data-v-488fcfba]:hover:not(:disabled){background-color:rgba(0,0,0,0)}.button-vue--vue-success[data-v-488fcfba]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-488fcfba]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-488fcfba]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-488fcfba]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-488fcfba]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-488fcfba]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-488fcfba]:active{background-color:var(--color-error)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcButton/NcButton.vue\",\"webpack://./src/assets/variables.scss\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAKA,kBAAA,CACA,uDAAA,CACA,uBAAA,CACA,iCAAA,CAkBA,6CAAA,CACA,mDAAA,CA1BA,iEAEC,cAAA,CAQD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCIiB,CDFjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,yDAAA,CAKD,oCACC,mDAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAGD,mCACC,WCvCe,CDwCf,UCxCe,CDyCf,eCzCe,CD0Cf,cC1Ce,CD2Cf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAGD,2CACC,mDAAA,CACA,+EACC,mDAAA,CACA,kCAAA,CACA,8BAAA,CAOF,0CACC,6CAAA,CACA,uCAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,6CAAA,CACA,mDAAA,CACA,iEACC,6CAAA,CACA,yDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,8EACC,8BAAA,CAKF,sDACC,uCAAA,CACA,8BAAA,CAEA,2EACC,8BAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.button-vue {\\n\\tposition: relative;\\n\\twidth: fit-content;\\n\\toverflow: hidden;\\n\\tborder: 0;\\n\\tpadding: 0;\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\tmin-height: $clickable-area;\\n\\tmin-width: $clickable-area;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\n\\t// Cursor pointer on element and all children\\n\\tcursor: pointer;\\n\\t& *,\\n\\tspan {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\tborder-radius: math.div($clickable-area, 2);\\n\\ttransition-property: color, border-color, background-color;\\n\\ttransition-duration: 0.1s;\\n\\ttransition-timing-function: linear;\\n\\n\\t// No outline feedback for focus. Handled with a toggled class in js (see data)\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&:disabled {\\n\\t\\tcursor: default;\\n\\t\\t& * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t// Gives a wash out effect\\n\\t\\tfilter: saturate($opacity_normal);\\n\\t}\\n\\n\\t// Default button type\\n\\tcolor: var(--color-primary-element-light-text);\\n\\tbackground-color: var(--color-primary-element-light);\\n\\t&:hover:not(:disabled) {\\n\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t}\\n\\n\\t// Back to the default color for this button when active\\n\\t// TODO: add ripple effect\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\theight: $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-height: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__text {\\n\\t\\tfont-weight: bold;\\n\\t\\tmargin-bottom: 1px;\\n\\t\\tpadding: 2px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// Icon-only button\\n\\t&--icon-only {\\n\\t\\twidth: $clickable-area !important;\\n\\t}\\n\\n\\t// Text-only button\\n\\t&--text-only {\\n\\t\\tpadding: 0 12px;\\n\\t\\t& .button-vue__text {\\n\\t\\t\\tmargin-left: 4px;\\n\\t\\t\\tmargin-right: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon and text button\\n\\t&--icon-and-text {\\n\\t\\tpadding: 0 16px 0 4px;\\n\\t}\\n\\n\\t// Wide button spans the whole width of the container\\n\\t&--wide {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t&.button-vue--vue-tertiary-on-primary {\\n\\t\\t\\toutline: 2px solid var(--color-primary-element-text);\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Button types\\n\\n\\t// Primary\\n\\t&--vue-primary {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-primary-element-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t// Secondary\\n\\t&--vue-secondary {\\n\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\t\\tbackground-color: var(--color-primary-element-light-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary\\n\\t&--vue-tertiary {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary, no background\\n\\t&--vue-tertiary-no-background {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary on primary color (like the header)\\n\\t&--vue-tertiary-on-primary {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\tbackground-color: transparent;\\n\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// Success\\n\\t&--vue-success {\\n\\t\\tbackground-color: var(--color-success);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-success-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// : add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-success);\\n\\t\\t}\\n\\t}\\n\\n\\t// Warning\\n\\t&--vue-warning {\\n\\t\\tbackground-color: var(--color-warning);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-warning-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-warning);\\n\\t\\t}\\n\\t}\\n\\n\\t// Error\\n\\t&--vue-error {\\n\\t\\tbackground-color: var(--color-error);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-error-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($clickable-area - $icon-size, 2);\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\\n// top-bar spacing\\n$topbar-margin: 4px;\\n\\n// navigation spacing\\n$app-navigation-settings-margin: 3px;\\n\"],sourceRoot:\"\"}]);const l=i},4326:(t,e,n)=>{\"use strict\";n.d(e,{Z:()=>l});var r=n(7537),o=n.n(r),a=n(3645),i=n.n(a)()(o());i.push([t.id,\".material-design-icon[data-v-474d33a2]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-474d33a2]{position:relative;width:100%;border-radius:var(--border-radius-large)}.input-field__main-wrapper[data-v-474d33a2]{height:36px;position:relative}.input-field__input[data-v-474d33a2]{margin:0;padding:0 12px;font-size:var(--default-font-size);background-color:var(--color-main-background);color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);height:36px !important;border-radius:var(--border-radius-large);text-overflow:ellipsis;cursor:pointer;width:100%;-webkit-appearance:textfield !important;-moz-appearance:textfield !important}.input-field__input[data-v-474d33a2]:active:not([disabled]),.input-field__input[data-v-474d33a2]:hover:not([disabled]),.input-field__input[data-v-474d33a2]:focus:not([disabled]){border-color:var(--color-primary-element)}.input-field__input[data-v-474d33a2]:focus{cursor:text}.input-field__input[data-v-474d33a2]:focus-visible{box-shadow:unset !important}.input-field__input--success[data-v-474d33a2]{border-color:var(--color-success) !important}.input-field__input--success[data-v-474d33a2]:focus-visible{box-shadow:#f8fafc 0px 0px 0px 2px,var(--color-primary-element) 0px 0px 0px 4px,rgba(0,0,0,.05) 0px 1px 2px 0px}.input-field__input--error[data-v-474d33a2]{border-color:var(--color-error) !important}.input-field__input--error[data-v-474d33a2]:focus-visible{box-shadow:#f8fafc 0px 0px 0px 2px,var(--color-primary-element) 0px 0px 0px 4px,rgba(0,0,0,.05) 0px 1px 2px 0px}.input-field__input--leading-icon[data-v-474d33a2]{padding-left:28px}.input-field__input--trailing-icon[data-v-474d33a2]{padding-right:28px}.input-field__label[data-v-474d33a2]{padding:4px 0;display:block}.input-field__label--hidden[data-v-474d33a2]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.input-field__icon[data-v-474d33a2]{position:absolute;height:32px;width:32px;display:flex;align-items:center;justify-content:center;opacity:.7}.input-field__icon--leading[data-v-474d33a2]{bottom:2px;left:2px}.input-field__icon--trailing[data-v-474d33a2]{bottom:2px;right:2px}.input-field__clear-button.button-vue[data-v-474d33a2]{position:absolute;top:2px;right:1px;min-width:unset;min-height:unset;height:32px;width:32px !important;border-radius:var(--border-radius-large)}.input-field__helper-text-message[data-v-474d33a2]{padding:4px 0;display:flex;align-items:center}.input-field__helper-text-message__icon[data-v-474d33a2]{margin-right:8px;align-self:start;margin-top:4px}.input-field__helper-text-message--error[data-v-474d33a2]{color:var(--color-error)}.input-field__helper-text-message--success[data-v-474d33a2]{color:var(--color-success)}\",\"\",{version:3,sources:[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcInputField/NcInputField.vue\"],names:[],mappings:\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,8BACC,iBAAA,CACA,UAAA,CACA,wCAAA,CAEA,4CACC,WAAA,CACA,iBAAA,CAGD,qCACC,QAAA,CACA,cAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,gDAAA,CACA,sBAAA,CACA,wCAAA,CACA,sBAAA,CACA,cAAA,CACA,UAAA,CACA,uCAAA,CACA,oCAAA,CAEA,kLAGC,yCAAA,CAGD,2CACC,WAAA,CAGD,mDACC,2BAAA,CAGD,8CACC,4CAAA,CACA,4DACC,+GAAA,CAIF,4CACC,0CAAA,CACA,0DACC,+GAAA,CAIF,mDACC,iBAAA,CAGD,oDACC,kBAAA,CAIF,qCACC,aAAA,CACA,aAAA,CAEA,6CACC,iBAAA,CACA,aAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,eAAA,CAIF,oCACC,iBAAA,CACA,WAAA,CACA,UAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,6CACC,UAAA,CACA,QAAA,CAGD,8CACC,UAAA,CACA,SAAA,CAIF,uDACC,iBAAA,CACA,OAAA,CACA,SAAA,CACA,eAAA,CACA,gBAAA,CACA,WAAA,CACA,qBAAA,CACA,wCAAA,CAGD,mDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,yDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,0DACC,wBAAA,CAGD,4DACC,0BAAA\",sourcesContent:[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"@use 'sass:math'; $scope_version:\\\"cdfec4c\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.input-field {\\n\\tposition: relative;\\n\\twidth: 100%;\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t&__main-wrapper {\\n\\t\\theight: 36px;\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__input {\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0 12px;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 2px solid var(--color-border-maxcontrast);\\n\\t\\theight: 36px !important;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcursor: pointer;\\n\\t\\twidth: 100%;\\n\\t\\t-webkit-appearance: textfield !important;\\n\\t\\t-moz-appearance: textfield !important;\\n\\n\\t\\t&:active:not([disabled]),\\n\\t\\t&:hover:not([disabled]),\\n\\t\\t&:focus:not([disabled]) {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\n\\t\\t&:focus {\\n\\t\\t\\tcursor: text;\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\tbox-shadow: unset !important; // Override server rules\\n\\t\\t}\\n\\n\\t\\t&--success {\\n\\t\\t\\tborder-color: var(--color-success) !important; //Override hover border color\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tborder-color: var(--color-error) !important; //Override hover border color\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--leading-icon {\\n\\t\\t\\tpadding-left: 28px;\\n\\t\\t}\\n\\n\\t\\t&--trailing-icon {\\n\\t\\t\\tpadding-right: 28px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__label {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: block;\\n\\n\\t\\t&--hidden {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: -10000px;\\n\\t\\t\\ttop: auto;\\n\\t\\t\\twidth: 1px;\\n\\t\\t\\theight: 1px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: absolute;\\n\\t\\theight: 32px;\\n\\t\\twidth: 32px;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\topacity: 0.7;\\n\\t\\t&--leading {\\n\\t\\t\\tbottom: 2px;\\n\\t\\t\\tleft: 2px;\\n\\t\\t}\\n\\n\\t\\t&--trailing {\\n\\t\\t\\tbottom: 2px;\\n\\t\\t\\tright: 2px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__clear-button.button-vue {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 2px;\\n\\t\\tright: 1px;\\n\\t\\tmin-width: unset;\\n\\t\\tmin-height: unset;\\n\\t\\theight: 32px;\\n\\t\\twidth: 32px !important;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t&--success {\\n\\t\\t\\tcolor: var(--color-success);\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],sourceRoot:\"\"}]);const l=i},3645:t=>{\"use strict\";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=\"\",r=void 0!==e[5];return e[4]&&(n+=\"@supports (\".concat(e[4],\") {\")),e[2]&&(n+=\"@media \".concat(e[2],\" {\")),r&&(n+=\"@layer\".concat(e[5].length>0?\" \".concat(e[5]):\"\",\" {\")),n+=t(e),r&&(n+=\"}\"),e[2]&&(n+=\"}\"),e[4]&&(n+=\"}\"),n})).join(\"\")},e.i=function(t,n,r,o,a){\"string\"==typeof t&&(t=[[null,t,void 0]]);var i={};if(r)for(var l=0;l0?\" \".concat(A[5]):\"\",\" {\").concat(A[1],\"}\")),A[5]=a),n&&(A[2]?(A[1]=\"@media \".concat(A[2],\" {\").concat(A[1],\"}\"),A[2]=n):A[2]=n),o&&(A[4]?(A[1]=\"@supports (\".concat(A[4],\") {\").concat(A[1],\"}\"),A[4]=o):A[4]=\"\".concat(o)),e.push(A))}},e}},7537:t=>{\"use strict\";t.exports=function(t){var e=t[1],n=t[3];if(!n)return e;if(\"function\"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(r),a=\"/*# \".concat(o,\" */\");return[e].concat([a]).join(\"\\n\")}return[e].join(\"\\n\")}},3379:t=>{\"use strict\";var e=[];function n(t){for(var n=-1,r=0;r{\"use strict\";var e={};t.exports=function(t,n){var r=function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}(t);if(!r)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");r.appendChild(n)}},9216:t=>{\"use strict\";t.exports=function(t){var e=document.createElement(\"style\");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},3565:(t,e,n)=>{\"use strict\";t.exports=function(t){var e=n.nc;e&&t.setAttribute(\"nonce\",e)}},7795:t=>{\"use strict\";t.exports=function(t){if(\"undefined\"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(n){!function(t,e,n){var r=\"\";n.supports&&(r+=\"@supports (\".concat(n.supports,\") {\")),n.media&&(r+=\"@media \".concat(n.media,\" {\"));var o=void 0!==n.layer;o&&(r+=\"@layer\".concat(n.layer.length>0?\" \".concat(n.layer):\"\",\" {\")),r+=n.css,o&&(r+=\"}\"),n.media&&(r+=\"}\"),n.supports&&(r+=\"}\");var a=n.sourceMap;a&&\"undefined\"!=typeof btoa&&(r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a)))),\" */\")),e.styleTagTransform(r,t,e.options)}(e,t,n)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},4589:t=>{\"use strict\";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},2102:()=>{},4348:()=>{},1900:(t,e,n)=>{\"use strict\";function r(t,e,n,r,o,a,i,l){var c,s=\"function\"==typeof t?t.options:t;if(e&&(s.render=e,s.staticRenderFns=n,s._compiled=!0),r&&(s.functional=!0),a&&(s._scopeId=\"data-v-\"+a),i?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},s._ssrRegister=c):o&&(c=l?function(){o.call(this,(s.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(s.functional){s._injectStyles=c;var A=s.render;s.render=function(t,e){return c.call(e),A(t,e)}}else{var d=s.beforeCreate;s.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:s}}n.d(e,{Z:()=>r})}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var a=e[r]={id:r,exports:{}};return t[r](a,a.exports,n),a.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.nc=void 0;var r={};return(()=>{\"use strict\";n.r(r),n.d(r,{default:()=>D});var t=n(1631);const e=t=>Math.random().toString(36).replace(/[^a-z]+/g,\"\").slice(0,t||5),o=require(\"vue-material-design-icons/AlertCircleOutline.vue\");var a=n.n(o);const i=require(\"vue-material-design-icons/Check.vue\");var l=n.n(i);const c={name:\"NcInputField\",components:{NcButton:t.default,AlertCircle:a(),Check:l()},inheritAttrs:!1,props:{value:{type:String,required:!0},type:{type:String,default:\"text\",validator:t=>[\"text\",\"password\",\"email\",\"tel\",\"url\",\"search\",\"number\"].includes(t)},label:{type:String,default:void 0},labelOutside:{type:Boolean,default:!1},labelVisible:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},showTrailingButton:{type:Boolean,default:!1},trailingButtonLabel:{type:String,default:\"\"},success:{type:Boolean,default:!1},error:{type:Boolean,default:!1},helperText:{type:String,default:\"\"},disabled:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:\"\"}},emits:[\"update:value\",\"trailing-button-click\"],computed:{computedId(){return this.$attrs.id&&\"\"!==this.$attrs.id?this.$attrs.id:this.inputName},inputName:()=>\"input\"+e(),hasLeadingIcon(){return this.$slots.default},hasTrailingIcon(){return this.success},hasPlaceholder(){return\"\"!==this.placeholder&&void 0!==this.placeholder},computedPlaceholder(){return this.labelVisible?this.hasPlaceholder?this.placeholder:\"\":this.hasPlaceholder?this.placeholder:this.label},isValidLabel(){const t=this.label||this.labelOutside;return t||console.warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\"),t}},methods:{focus(){this.$refs.input.focus()},select(){this.$refs.input.select()},handleInput(t){this.$emit(\"update:value\",t.target.value)},handleTrailingButtonClick(t){this.$emit(\"trailing-button-click\",t)}}};var s=n(3379),A=n.n(s),d=n(7795),u=n.n(d),p=n(569),C=n.n(p),v=n(3565),f=n.n(v),b=n(9216),h=n.n(b),g=n(4589),m=n.n(g),x=n(4326),y={};y.styleTagTransform=m(),y.setAttributes=f(),y.insert=C().bind(null,\"head\"),y.domAPI=u(),y.insertStyleElement=h();A()(x.Z,y);x.Z&&x.Z.locals&&x.Z.locals;var _=n(1900),w=n(4348),k=n.n(w),B=(0,_.Z)(c,(function(){var t=this,e=t._self._c;return e(\"div\",{staticClass:\"input-field\"},[!t.labelOutside&&t.isValidLabel?e(\"label\",{staticClass:\"input-field__label\",class:{\"input-field__label--hidden\":!t.labelVisible},attrs:{for:t.computedId}},[t._v(\"\\n\\t\\t\"+t._s(t.label)+\"\\n\\t\")]):t._e(),t._v(\" \"),e(\"div\",{staticClass:\"input-field__main-wrapper\"},[e(\"input\",t._g(t._b({ref:\"input\",staticClass:\"input-field__input\",class:[t.inputClass,{\"input-field__input--trailing-icon\":t.showTrailingButton||t.hasTrailingIcon,\"input-field__input--leading-icon\":t.hasLeadingIcon,\"input-field__input--success\":t.success,\"input-field__input--error\":t.error}],attrs:{id:t.computedId,type:t.type,disabled:t.disabled,placeholder:t.computedPlaceholder,\"aria-describedby\":t.helperText.length>0?\"\".concat(t.inputName,\"-helper-text\"):\"\",\"aria-live\":\"polite\"},domProps:{value:t.value},on:{input:t.handleInput}},\"input\",t.$attrs,!1),t.$listeners)),t._v(\" \"),e(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.hasLeadingIcon,expression:\"hasLeadingIcon\"}],staticClass:\"input-field__icon input-field__icon--leading\"},[t._t(\"default\")],2),t._v(\" \"),t.showTrailingButton?e(\"NcButton\",{staticClass:\"input-field__clear-button\",attrs:{type:\"tertiary-no-background\",\"aria-label\":t.trailingButtonLabel,disabled:t.disabled},on:{click:t.handleTrailingButtonClick},scopedSlots:t._u([{key:\"icon\",fn:function(){return[t._t(\"trailing-button-icon\")]},proxy:!0}],null,!0)}):t.success||t.error?e(\"div\",{staticClass:\"input-field__icon input-field__icon--trailing\"},[t.success?e(\"Check\",{attrs:{size:18}}):t.error?e(\"AlertCircle\",{attrs:{size:18}}):t._e()],1):t._e()],1),t._v(\" \"),t.helperText.length>0?e(\"p\",{staticClass:\"input-field__helper-text-message\",class:{\"input-field__helper-text-message--error\":t.error,\"input-field__helper-text-message--success\":t.success},attrs:{id:\"\".concat(t.inputName,\"-helper-text\")}},[t.success?e(\"Check\",{staticClass:\"input-field__helper-text-message__icon\",attrs:{size:18}}):t.error?e(\"AlertCircle\",{staticClass:\"input-field__helper-text-message__icon\",attrs:{size:18}}):t._e(),t._v(\"\\n\\t\\t\"+t._s(t.helperText)+\"\\n\\t\")],1):t._e()])}),[],!1,null,\"474d33a2\",null);\"function\"==typeof k()&&k()(B);const D=B.exports})(),r})()));\n//# sourceMappingURL=NcInputField.js.map","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport const getRootPath = function() {\n\tif (getCurrentUser()) {\n\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`)\n\t} else {\n\t\treturn generateRemoteUrl('webdav').replace('/remote.php', '/public.php')\n\t}\n}\n\nexport const isPublic = function() {\n\treturn !getCurrentUser()\n}\n\nexport const getToken = function() {\n\treturn document.getElementById('sharingToken') && document.getElementById('sharingToken').value\n}\n\n/**\n * Return the current directory, fallback to root\n *\n * @return {string}\n */\nexport const getCurrentDirectory = function() {\n\tconst currentDirInfo = OCA?.Files?.App?.currentFileList?.dirInfo\n\t\t|| { path: '/', name: '' }\n\n\t// Make sure we don't have double slashes\n\treturn `${currentDirInfo.path}/${currentDirInfo.name}`.replace(/\\/\\//gi, '/')\n}\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePreview.vue?vue&type=template&id=5b09ec60&scoped=true&\"\nimport script from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b09ec60\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"template-picker__item\"},[_c('input',{staticClass:\"radio\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"template-picker\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onCheck}}),_vm._v(\" \"),_c('label',{staticClass:\"template-picker__label\",attrs:{\"for\":_vm.id}},[_c('div',{staticClass:\"template-picker__preview\",class:_vm.failedPreview ? 'template-picker__preview--failed' : ''},[_c('img',{staticClass:\"template-picker__image\",attrs:{\"src\":_vm.realPreviewUrl,\"alt\":\"\",\"draggable\":\"false\"},on:{\"error\":_vm.onFailure}})]),_vm._v(\" \"),_c('span',{staticClass:\"template-picker__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.nameWithoutExt)+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nexport const getTemplates = async function() {\n\tconst response = await axios.get(generateOcsUrl('apps/files/api/v1/templates'))\n\treturn response.data.ocs.data\n}\n\n/**\n * Create a new file from a specified template\n *\n * @param {string} filePath The new file destination path\n * @param {string} templatePath The template source path\n * @param {string} templateType The template type e.g 'user'\n */\nexport const createFromTemplate = async function(filePath, templatePath, templateType) {\n\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/create'), {\n\t\tfilePath,\n\t\ttemplatePath,\n\t\ttemplateType,\n\t})\n\treturn response.data.ocs.data\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePicker.vue?vue&type=template&id=d46f1dc6&scoped=true&\"\nimport script from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d46f1dc6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.opened)?_c('NcModal',{staticClass:\"templates-picker\",attrs:{\"clear-view-delay\":-1,\"size\":\"large\"},on:{\"close\":_vm.close}},[_c('form',{staticClass:\"templates-picker__form\",style:(_vm.style),on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onSubmit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Pick a template for {name}', { name: _vm.nameWithoutExt })))]),_vm._v(\" \"),_c('ul',{staticClass:\"templates-picker__list\"},[_c('TemplatePreview',_vm._b({attrs:{\"checked\":_vm.checked === _vm.emptyTemplate.fileid},on:{\"check\":_vm.onCheck}},'TemplatePreview',_vm.emptyTemplate,false)),_vm._v(\" \"),_vm._l((_vm.provider.templates),function(template){return _c('TemplatePreview',_vm._b({key:template.fileid,attrs:{\"checked\":_vm.checked === template.fileid,\"ratio\":_vm.provider.ratio},on:{\"check\":_vm.onCheck}},'TemplatePreview',template,false))})],2),_vm._v(\" \"),_c('div',{staticClass:\"templates-picker__buttons\"},[_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('files', 'Create a new file with the selected template')},domProps:{\"value\":_vm.t('files', 'Create')}})])]),_vm._v(\" \"),(_vm.loading)?_c('NcEmptyContent',{staticClass:\"templates-picker__loading\",attrs:{\"icon\":\"icon-loading\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files', 'Creating file'))+\"\\n\\t\")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentDirectory } from './utils/davUtils.js'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\n\nimport TemplatePickerView from './views/TemplatePicker.vue'\nimport { showError } from '@nextcloud/dialogs'\n\n// Set up logger\nconst logger = getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\n// Create document root\nconst TemplatePickerRoot = document.createElement('div')\nTemplatePickerRoot.id = 'template-picker'\ndocument.body.appendChild(TemplatePickerRoot)\n\n// Retrieve and init templates\nlet templates = loadState('files', 'templates', [])\nlet templatesPath = loadState('files', 'templates_path', false)\nlogger.debug('Templates providers', templates)\nlogger.debug('Templates folder', { templatesPath })\n\n// Init vue app\nconst View = Vue.extend(TemplatePickerView)\nconst TemplatePicker = new View({\n\tname: 'TemplatePicker',\n\tpropsData: {\n\t\tlogger,\n\t},\n})\nTemplatePicker.$mount('#template-picker')\n\n// Init template engine after load to make sure it's the last injected entry\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (!templatesPath) {\n\t\tlogger.debug('Templates folder not initialized')\n\t\tconst initTemplatesPlugin = {\n\t\t\tattach(menu) {\n\t\t\t\t// register the new menu entry\n\t\t\t\tmenu.addMenuEntry({\n\t\t\t\t\tid: 'template-init',\n\t\t\t\t\tdisplayName: t('files', 'Set up templates folder'),\n\t\t\t\t\ttemplateName: t('files', 'Templates'),\n\t\t\t\t\ticonClass: 'icon-template-add',\n\t\t\t\t\tfileType: 'file',\n\t\t\t\t\tactionLabel: t('files', 'Create new templates folder'),\n\t\t\t\t\tactionHandler(name) {\n\t\t\t\t\t\tinitTemplatesFolder(name)\n\t\t\t\t\t\tmenu.removeMenuEntry('template-init')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t\tOC.Plugins.register('OCA.Files.NewFileMenu', initTemplatesPlugin)\n\t}\n})\n\n// Init template files menu\ntemplates.forEach((provider, index) => {\n\tconst newTemplatePlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: `template-new-${provider.app}-${index}`,\n\t\t\t\tdisplayName: provider.label,\n\t\t\t\ttemplateName: provider.label + provider.extension,\n\t\t\t\ticonClass: provider.iconClass || 'icon-file',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionLabel: provider.actionLabel,\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tTemplatePicker.open(name, provider)\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newTemplatePlugin)\n})\n\n/**\n * Init the template directory\n *\n * @param {string} name the templates folder name\n */\nconst initTemplatesFolder = async function(name) {\n\tconst templatePath = (getCurrentDirectory() + `/${name}`).replace('//', '/')\n\ttry {\n\t\tlogger.debug('Initializing the templates directory', { templatePath })\n\t\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n\t\t\ttemplatePath,\n\t\t\tcopySystemTemplates: true,\n\t\t})\n\n\t\t// Go to template directory\n\t\tOCA.Files.App.currentFileList.changeDirectory(templatePath, true, true)\n\n\t\ttemplates = response.data.ocs.data.templates\n\t\ttemplatesPath = response.data.ocs.data.template_path\n\t} catch (error) {\n\t\tlogger.error('Unable to initialize the templates directory')\n\t\tshowError(t('files', 'Unable to initialize the templates directory'))\n\t}\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\n(function() {\n\n\tconst FilesPlugin = {\n\t\tattach(fileList) {\n\t\t\tsubscribe('nextcloud:unified-search.search', ({ query }) => {\n\t\t\t\tfileList.setFilter(query)\n\t\t\t})\n\t\t\tsubscribe('nextcloud:unified-search.reset', () => {\n\t\t\t\tthis.query = null\n\t\t\t\tfileList.setFilter('')\n\t\t\t})\n\n\t\t},\n\t}\n\n\twindow.OC.Plugins.register('OCA.Files.FileList', FilesPlugin)\n\n})()\n","import { getCanonicalLocale } from '@nextcloud/l10n';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { join, basename, extname, dirname } from 'path';\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst humanList = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\nconst humanListBinary = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];\n/**\n * Format a file size in a human-like format. e.g. 42GB\n *\n * @param size in bytes\n * @param skipSmallSizes avoid rendering tiny sizes and return '< 1 KB' instead\n */\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false) {\n if (typeof size === 'string') {\n size = Number(size);\n }\n /*\n * @note This block previously used Log base 1024, per IEC 80000-13;\n * however, the wrong prefix was used. Now we use decimal calculation\n * with base 1000 per the SI. Base 1024 calculation with binary\n * prefixes is optional, but has yet to be added to the UI.\n */\n // Calculate Log with base 1024 or 1000: size = base ** order\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(binaryPrefixes ? 1024 : 1000)) : 0;\n // Stay in range of the byte sizes that are defined\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(binaryPrefixes ? 1024 : 1000, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== '0.0' ? '< 1 ' : '0 ') + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n }\n else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + ' ' + readableFormat;\n}\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst getLogger = user => {\n if (user === null) {\n return getLoggerBuilder()\n .setApp('files')\n .build();\n }\n return getLoggerBuilder()\n .setApp('files')\n .setUid(user.uid)\n .build();\n};\nvar logger = getLogger(getCurrentUser());\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === 'string'\n ? this.getEntryIndex(entry)\n : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn('Entry not found, nothing removed', { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\n getEntries(context) {\n if (context) {\n return this._entries\n .filter(entry => typeof entry.if === 'function' ? entry.if(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex(entry => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass)) {\n throw new Error('Invalid entry');\n }\n if (typeof entry.id !== 'string'\n || typeof entry.displayName !== 'string') {\n throw new Error('Invalid id or displayName property');\n }\n if ((entry.iconClass && typeof entry.iconClass !== 'string')\n || (entry.iconSvgInline && typeof entry.iconSvgInline !== 'string')) {\n throw new Error('Invalid icon provided');\n }\n if (entry.if !== undefined && typeof entry.if !== 'function') {\n throw new Error('Invalid if property');\n }\n if (entry.templateName && typeof entry.templateName !== 'string') {\n throw new Error('Invalid templateName property');\n }\n if (entry.handler && typeof entry.handler !== 'function') {\n throw new Error('Invalid handler property');\n }\n if (!entry.templateName && !entry.handler) {\n throw new Error('At least a templateName or a handler must be provided');\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error('Duplicate entry');\n }\n }\n}\nconst getNewFileMenu = function () {\n if (typeof window._nc_newfilemenu === 'undefined') {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug('NewFileMenu initialized');\n }\n return window._nc_newfilemenu;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar FileType;\n(function (FileType) {\n FileType[\"Folder\"] = \"folder\";\n FileType[\"File\"] = \"file\";\n})(FileType || (FileType = {}));\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Permission;\n(function (Permission) {\n Permission[Permission[\"NONE\"] = 0] = \"NONE\";\n Permission[Permission[\"CREATE\"] = 4] = \"CREATE\";\n Permission[Permission[\"READ\"] = 1] = \"READ\";\n Permission[Permission[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission[Permission[\"DELETE\"] = 8] = \"DELETE\";\n Permission[Permission[\"SHARE\"] = 16] = \"SHARE\";\n Permission[Permission[\"ALL\"] = 31] = \"ALL\";\n})(Permission || (Permission = {}));\n/**\n * Parse the webdav permission string to a permission enum\n * @see https://github.com/nextcloud/server/blob/71f698649f578db19a22457cb9d420fb62c10382/lib/public/Files/DavUtil.php#L58-L88\n */\nconst parseWebdavPermissions = function (permString = '') {\n let permissions = Permission.NONE;\n if (!permString)\n return permissions;\n if (permString.includes('C') || permString.includes('K'))\n permissions |= Permission.CREATE;\n if (permString.includes('G'))\n permissions |= Permission.READ;\n if (permString.includes('W') || permString.includes('N') || permString.includes('V'))\n permissions |= Permission.UPDATE;\n if (permString.includes('D'))\n permissions |= Permission.DELETE;\n if (permString.includes('R'))\n permissions |= Permission.SHARE;\n return permissions;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst isDavRessource = function (source, davService) {\n return source.match(davService) !== null;\n};\n/**\n * Validate Node construct data\n */\nconst validateData = (data, davService) => {\n if ('id' in data && (typeof data.id !== 'number' || data.id < 0)) {\n throw new Error('Invalid id type of value');\n }\n if (!data.source) {\n throw new Error('Missing mandatory source');\n }\n try {\n new URL(data.source);\n }\n catch (e) {\n throw new Error('Invalid source format, source must be a valid URL');\n }\n if (!data.source.startsWith('http')) {\n throw new Error('Invalid source format, only http(s) is supported');\n }\n if ('mtime' in data && !(data.mtime instanceof Date)) {\n throw new Error('Invalid mtime type');\n }\n if ('crtime' in data && !(data.crtime instanceof Date)) {\n throw new Error('Invalid crtime type');\n }\n if (!data.mime || typeof data.mime !== 'string'\n || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error('Missing or invalid mandatory mime');\n }\n if ('size' in data && typeof data.size !== 'number') {\n throw new Error('Invalid size type');\n }\n if ('permissions' in data && !(typeof data.permissions === 'number'\n && data.permissions >= Permission.NONE\n && data.permissions <= Permission.ALL)) {\n throw new Error('Invalid permissions');\n }\n if ('owner' in data\n && data.owner !== null\n && typeof data.owner !== 'string') {\n throw new Error('Invalid owner type');\n }\n if ('attributes' in data && typeof data.attributes !== 'object') {\n throw new Error('Invalid attributes format');\n }\n if ('root' in data && typeof data.root !== 'string') {\n throw new Error('Invalid root format');\n }\n if (data.root && !data.root.startsWith('/')) {\n throw new Error('Root must start with a leading slash');\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error('Root must be part of the source');\n }\n if (data.root && isDavRessource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error('The root must be relative to the service. e.g /files/emma');\n }\n }\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(data, davService) {\n // Validate data\n validateData(data, davService || this._knownDavService);\n this._data = data;\n const handler = {\n set: (target, prop, value) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.deleteProperty(target, prop);\n },\n };\n // Proxy the attributes to update the mtime on change\n this._attributes = new Proxy(data.attributes || {}, handler);\n delete this._data.attributes;\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n */\n get source() {\n // strip any ending slash\n return this._data.source.replace(/\\/$/i, '');\n }\n /**\n * Get this object name\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return dirname(this.source.slice(firstMatch + this.root.length) || '/');\n }\n // This should always be a valid URL\n // as this is tested in the constructor\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n // If this is not a dav ressource, we can only read it\n if (this.owner === null && !this.isDavRessource) {\n return Permission.READ;\n }\n // If the permissions are not defined, we have none\n return this._data.permissions !== undefined\n ? this._data.permissions\n : Permission.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n // Remote ressources have no owner\n if (!this.isDavRessource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return isDavRessource(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n // If provided (recommended), use the root and strip away the ending slash\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, '$1');\n }\n // Use the source to get the root from the dav service\n if (this.isDavRessource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return this.source.slice(firstMatch + this.root.length) || '/';\n }\n return (this.dirname + '/' + this.basename).replace(/\\/\\//g, '/');\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n this._data.source = destination;\n this._data.mtime = new Date();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n */\n rename(basename) {\n if (basename.includes('/')) {\n throw new Error('Invalid basename');\n }\n this.move(dirname(this.source) + '/' + basename);\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Folder extends Node {\n constructor(data) {\n // enforcing mimes\n super({\n ...data,\n mime: 'httpd/unix-directory'\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return 'httpd/unix-directory';\n }\n}\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nconst registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function () {\n return window._nc_fileactions || [];\n};\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n/**\n * Add a new menu entry to the upload manager menu\n */\nconst addNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\n/**\n * Remove a previously registered entry from the upload menu\n */\nconst removeNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\n/**\n * Get the list of registered entries from the upload menu\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\nconst getNewFileMenuEntries = function (context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context);\n};\n\nexport { File, FileAction, FileType, Folder, Node, Permission, addNewFileMenuEntry, formatFileSize, getFileActions, getNewFileMenuEntries, parseWebdavPermissions, registerFileAction, removeNewFileMenuEntry };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport logger from '../logger';\nexport var DefaultType;\n(function (DefaultType) {\n DefaultType[\"DEFAULT\"] = \"default\";\n DefaultType[\"HIDDEN\"] = \"hidden\";\n})(DefaultType || (DefaultType = {}));\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { Permission, Node } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport TrashCanSvg from '@mdi/svg/svg/trash-can.svg?raw';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nimport logger from '../logger.js';\nexport const action = new FileAction({\n id: 'delete',\n displayName(nodes, view) {\n return view.id === 'trashbin'\n ? t('files_trashbin', 'Delete permanently')\n : t('files', 'Delete');\n },\n iconSvgInline: () => TrashCanSvg,\n enabled(nodes) {\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.DELETE) !== 0);\n },\n async exec(node) {\n try {\n await axios.delete(node.source);\n // Let's delete even if it's moved to the trashbin\n // since it has been removed from the current view\n // and changing the view will trigger a reload anyway.\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n logger.error('Error while deleting a file', { error, source: node.source, node });\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 100,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, Node, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport ArrowDownSvg from '@mdi/svg/svg/arrow-down.svg?raw';\nimport { registerFileAction, FileAction, DefaultType } from '../services/FileAction';\nimport { generateUrl } from '@nextcloud/router';\nconst triggerDownload = function (url) {\n const hiddenElement = document.createElement('a');\n hiddenElement.download = '';\n hiddenElement.href = url;\n hiddenElement.click();\n};\nconst downloadNodes = function (dir, nodes) {\n const secret = Math.random().toString(36).substring(2);\n const url = generateUrl('/apps/files/ajax/download.php?dir={dir}&files={files}&downloadStartSecret={secret}', {\n dir,\n secret,\n files: JSON.stringify(nodes.map(node => node.basename)),\n });\n triggerDownload(url);\n};\nexport const action = new FileAction({\n id: 'download',\n displayName: () => t('files', 'Download'),\n iconSvgInline: () => ArrowDownSvg,\n enabled(nodes) {\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.READ) !== 0);\n },\n async exec(node, view, dir) {\n if (node.type === FileType.Folder) {\n downloadNodes(dir, [node]);\n return null;\n }\n triggerDownload(node.source);\n return null;\n },\n async execBatch(nodes, view, dir) {\n if (nodes.length === 1) {\n this.exec(nodes[0], view, dir);\n return [null];\n }\n downloadNodes(dir, nodes);\n return new Array(nodes.length).fill(null);\n },\n order: 30,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { encodePath } from '@nextcloud/paths';\nimport { Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport LaptopSvg from '@mdi/svg/svg/laptop.svg?raw';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { registerFileAction, FileAction, DefaultType } from '../services/FileAction';\nimport { showError } from '@nextcloud/dialogs';\nconst openLocalClient = async function (path) {\n const link = generateOcsUrl('apps/files/api/v1') + '/openlocaleditor?format=json';\n try {\n const result = await axios.post(link, { path });\n const uid = getCurrentUser()?.uid;\n let url = `nc://open/${uid}@` + window.location.host + encodePath(path);\n url += '?token=' + result.data.ocs.data.token;\n window.location.href = url;\n }\n catch (error) {\n showError(t('files', 'Failed to redirect to client'));\n }\n};\nexport const action = new FileAction({\n id: 'edit-locally',\n displayName: () => t('files', 'Edit locally'),\n iconSvgInline: () => LaptopSvg,\n // Only works on single files\n enabled(nodes) {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n return (nodes[0].permissions & Permission.UPDATE) !== 0;\n },\n async exec(node) {\n openLocalClient(node.path);\n return null;\n },\n order: 25,\n});\nif (!/Android|iPhone|iPad|iPod/i.test(navigator.userAgent)) {\n registerFileAction(action);\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nimport StarOutlineSvg from '@mdi/svg/svg/star-outline.svg?raw';\nimport StarSvg from '@mdi/svg/svg/star.svg?raw';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nimport logger from '../logger.js';\n// If any of the nodes is not favorited, we display the favorite action.\nconst shouldFavorite = (nodes) => {\n return nodes.some(node => node.attributes.favorite !== 1);\n};\nexport const favoriteNode = async (node, view, willFavorite) => {\n try {\n // TODO: migrate to webdav tags plugin\n const url = generateUrl('/apps/files/api/v1/files') + node.path;\n await axios.post(url, {\n tags: willFavorite\n ? [window.OC.TAG_FAVORITE]\n : [],\n });\n // Let's delete if we are in the favourites view\n // AND if it is removed from the user favorites\n // AND it's in the root of the favorites view\n if (view.id === 'favorites' && !willFavorite && node.dirname === '/') {\n emit('files:node:deleted', node);\n }\n // Update the node webdav attribute\n Vue.set(node.attributes, 'favorite', willFavorite ? 1 : 0);\n // Dispatch event to whoever is interested\n if (willFavorite) {\n emit('files:favorites:added', node);\n }\n else {\n emit('files:favorites:removed', node);\n }\n return true;\n }\n catch (error) {\n const action = willFavorite ? 'adding a file to favourites' : 'removing a file from favourites';\n logger.error('Error while ' + action, { error, source: node.source, node });\n return false;\n }\n};\nexport const action = new FileAction({\n id: 'favorite',\n displayName(nodes) {\n return shouldFavorite(nodes)\n ? t('files', 'Add to favorites')\n : t('files', 'Remove from favorites');\n },\n iconSvgInline: (nodes) => {\n return shouldFavorite(nodes)\n ? StarOutlineSvg\n : StarSvg;\n },\n enabled(nodes) {\n // We can only favorite nodes within files and with permissions\n return !nodes.some(node => !node.root?.startsWith?.('/files'))\n && nodes.every(node => node.permissions !== Permission.NONE);\n },\n async exec(node, view) {\n const willFavorite = shouldFavorite([node]);\n return await favoriteNode(node, view, willFavorite);\n },\n async execBatch(nodes, view) {\n const willFavorite = shouldFavorite(nodes);\n return Promise.all(nodes.map(async (node) => await favoriteNode(node, view, willFavorite)));\n },\n order: -50,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, Node, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport FolderSvg from '@mdi/svg/svg/folder.svg?raw';\nimport { join } from 'path';\nimport { registerFileAction, FileAction, DefaultType } from '../services/FileAction';\nexport const action = new FileAction({\n id: 'open-folder',\n displayName(files) {\n // Only works on single node\n const displayName = files[0].attributes.displayName || files[0].basename;\n return t('files', 'Open folder {displayName}', { displayName });\n },\n iconSvgInline: () => FolderSvg,\n enabled(nodes) {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n if (!node.isDavRessource) {\n return false;\n }\n return node.type === FileType.Folder\n && (node.permissions & Permission.READ) !== 0;\n },\n async exec(node, view, dir) {\n if (!node || node.type !== FileType.Folder) {\n return false;\n }\n window.OCP.Files.Router.goToRoute(null, null, { dir: join(dir, node.basename) });\n return null;\n },\n // Main action if enabled, meaning folders only\n default: DefaultType.HIDDEN,\n order: -100,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport PencilSvg from '@mdi/svg/svg/pencil.svg?raw';\nimport { emit } from '@nextcloud/event-bus';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: 'rename',\n displayName: () => t('files', 'Rename'),\n iconSvgInline: () => PencilSvg,\n enabled: (nodes) => {\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.UPDATE) !== 0);\n },\n async exec(node) {\n // Renaming is a built-in feature of the files app\n emit('files:node:rename', node);\n return null;\n },\n order: 10,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport { Permission } from '@nextcloud/files';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n window?.OCA?.Files?.Sidebar?.open?.(node.path);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Node, FileType, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move.svg?raw';\nimport { join } from 'path';\nimport { registerFileAction, FileAction } from '../services/FileAction';\nexport const action = new FileAction({\n id: 'view-in-folder',\n displayName() {\n return t('files', 'View in folder');\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled(nodes) {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n if (!node.isDavRessource) {\n return false;\n }\n if (node.permissions === Permission.NONE) {\n return false;\n }\n return node.type === FileType.File;\n },\n async exec(node, view, dir) {\n if (!node || node.type !== FileType.File) {\n return false;\n }\n window.OCP.Files.Router.goToRoute(null, { view: 'files', fileid: node.fileid }, { dir: node.dirname, fileid: node.fileid });\n return null;\n },\n order: 80,\n});\nregisterFileAction(action);\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-ignore\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = global.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n","import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n","/*!\n * pinia v2.1.4\n * (c) 2023 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n return (o &&\n typeof o === 'object' &&\n Object.prototype.toString.call(o) === '[object Object]' &&\n typeof o.toJSON !== 'function');\n}\n// type DeepReadonly = { readonly [P in keyof T]: DeepReadonly }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n /**\n * Direct mutation of the state:\n *\n * - `store.name = 'new name'`\n * - `store.$state.name = 'new name'`\n * - `store.list.push('new item')`\n */\n MutationType[\"direct\"] = \"direct\";\n /**\n * Mutated the state with `$patch` and an object\n *\n * - `store.$patch({ name: 'newName' })`\n */\n MutationType[\"patchObject\"] = \"patch object\";\n /**\n * Mutated the state with `$patch` and a function\n *\n * - `store.$patch(state => state.name = 'newName')`\n */\n MutationType[\"patchFunction\"] = \"patch function\";\n // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n/**\n * Should we add the devtools plugins.\n * - only if dev mode or forced through the prod devtools flag\n * - not in test\n * - only if window exists (could change in the future)\n */\nconst USE_DEVTOOLS = ((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test') && IS_CLIENT;\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n ? window\n : typeof self === 'object' && self.self === self\n ? self\n : typeof global === 'object' && global.global === global\n ? global\n : typeof globalThis === 'object'\n ? globalThis\n : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (autoBom &&\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n }\n return blob;\n}\nfunction download(url, name, opts) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n saveAs(xhr.response, name, opts);\n };\n xhr.onerror = function () {\n console.error('could not download file');\n };\n xhr.send();\n}\nfunction corsEnabled(url) {\n const xhr = new XMLHttpRequest();\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false);\n try {\n xhr.send();\n }\n catch (e) { }\n return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'));\n }\n catch (e) {\n const evt = document.createEvent('MouseEvents');\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\n node.dispatchEvent(evt);\n }\n}\nconst _navigator = \n typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n /AppleWebKit/.test(_navigator.userAgent) &&\n !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n ? () => { } // noop\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n typeof HTMLAnchorElement !== 'undefined' &&\n 'download' in HTMLAnchorElement.prototype &&\n !isMacOSWebView\n ? downloadSaveAs\n : // Use msSaveOrOpenBlob as a second approach\n 'msSaveOrOpenBlob' in _navigator\n ? msSaveAs\n : // Fallback to using FileReader and a popup\n fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n const a = document.createElement('a');\n a.download = name;\n a.rel = 'noopener'; // tabnabbing\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob;\n if (a.origin !== location.origin) {\n if (corsEnabled(a.href)) {\n download(blob, name, opts);\n }\n else {\n a.target = '_blank';\n click(a);\n }\n }\n else {\n click(a);\n }\n }\n else {\n // Support blobs\n a.href = URL.createObjectURL(blob);\n setTimeout(function () {\n URL.revokeObjectURL(a.href);\n }, 4e4); // 40s\n setTimeout(function () {\n click(a);\n }, 0);\n }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts);\n }\n else {\n const a = document.createElement('a');\n a.href = blob;\n a.target = '_blank';\n setTimeout(function () {\n click(a);\n });\n }\n }\n else {\n // @ts-ignore: works on windows\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank');\n if (popup) {\n popup.document.title = popup.document.body.innerText = 'downloading...';\n }\n if (typeof blob === 'string')\n return download(blob, name, opts);\n const force = blob.type === 'application/octet-stream';\n const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n const reader = new FileReader();\n reader.onloadend = function () {\n let url = reader.result;\n if (typeof url !== 'string') {\n popup = null;\n throw new Error('Wrong reader.result type');\n }\n url = isChromeIOS\n ? url\n : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n if (popup) {\n popup.location.href = url;\n }\n else {\n location.assign(url);\n }\n popup = null; // reverse-tabnabbing #460\n };\n reader.readAsDataURL(blob);\n }\n else {\n const url = URL.createObjectURL(blob);\n if (popup)\n popup.location.assign(url);\n else\n location.href = url;\n popup = null; // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url);\n }, 4e4); // 40s\n }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n const piniaMessage = '🍍 ' + message;\n if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n // No longer available :(\n __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n }\n else if (type === 'error') {\n console.error(piniaMessage);\n }\n else if (type === 'warn') {\n console.warn(piniaMessage);\n }\n else {\n console.log(piniaMessage);\n }\n}\nfunction isPinia(o) {\n return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n if (!('clipboard' in navigator)) {\n toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n return true;\n }\n}\nfunction checkNotFocusedError(error) {\n if (error instanceof Error &&\n error.message.toLowerCase().includes('document is not focused')) {\n toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n return true;\n }\n return false;\n}\nasync function actionGlobalCopyState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n toastMessage('Global state copied to clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalPasteState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n pinia.state.value = JSON.parse(await navigator.clipboard.readText());\n toastMessage('Global state pasted from clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalSaveState(pinia) {\n try {\n saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n type: 'text/plain;charset=utf-8',\n }), 'pinia-state.json');\n }\n catch (error) {\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nlet fileInput;\nfunction getFileOpener() {\n if (!fileInput) {\n fileInput = document.createElement('input');\n fileInput.type = 'file';\n fileInput.accept = '.json';\n }\n function openFile() {\n return new Promise((resolve, reject) => {\n fileInput.onchange = async () => {\n const files = fileInput.files;\n if (!files)\n return resolve(null);\n const file = files.item(0);\n if (!file)\n return resolve(null);\n return resolve({ text: await file.text(), file });\n };\n // @ts-ignore: TODO: changed from 4.3 to 4.4\n fileInput.oncancel = () => resolve(null);\n fileInput.onerror = reject;\n fileInput.click();\n });\n }\n return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n try {\n const open = await getFileOpener();\n const result = await open();\n if (!result)\n return;\n const { text, file } = result;\n pinia.state.value = JSON.parse(text);\n toastMessage(`Global state imported from \"${file.name}\".`);\n }\n catch (error) {\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\n\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n return isPinia(store)\n ? {\n id: PINIA_ROOT_ID,\n label: PINIA_ROOT_LABEL,\n }\n : {\n id: store.$id,\n label: store.$id,\n };\n}\nfunction formatStoreForInspectorState(store) {\n if (isPinia(store)) {\n const storeNames = Array.from(store._s.keys());\n const storeMap = store._s;\n const state = {\n state: storeNames.map((storeId) => ({\n editable: true,\n key: storeId,\n value: store.state.value[storeId],\n })),\n getters: storeNames\n .filter((id) => storeMap.get(id)._getters)\n .map((id) => {\n const store = storeMap.get(id);\n return {\n editable: false,\n key: id,\n value: store._getters.reduce((getters, key) => {\n getters[key] = store[key];\n return getters;\n }, {}),\n };\n }),\n };\n return state;\n }\n const state = {\n state: Object.keys(store.$state).map((key) => ({\n editable: true,\n key,\n value: store.$state[key],\n })),\n };\n // avoid adding empty getters\n if (store._getters && store._getters.length) {\n state.getters = store._getters.map((getterName) => ({\n editable: false,\n key: getterName,\n value: store[getterName],\n }));\n }\n if (store._customProperties.size) {\n state.customProperties = Array.from(store._customProperties).map((key) => ({\n editable: true,\n key,\n value: store[key],\n }));\n }\n return state;\n}\nfunction formatEventData(events) {\n if (!events)\n return {};\n if (Array.isArray(events)) {\n // TODO: handle add and delete for arrays and objects\n return events.reduce((data, event) => {\n data.keys.push(event.key);\n data.operations.push(event.type);\n data.oldValue[event.key] = event.oldValue;\n data.newValue[event.key] = event.newValue;\n return data;\n }, {\n oldValue: {},\n keys: [],\n operations: [],\n newValue: {},\n });\n }\n else {\n return {\n operation: formatDisplay(events.type),\n key: formatDisplay(events.key),\n oldValue: events.oldValue,\n newValue: events.newValue,\n };\n }\n}\nfunction formatMutationType(type) {\n switch (type) {\n case MutationType.direct:\n return 'mutation';\n case MutationType.patchFunction:\n return '$patch';\n case MutationType.patchObject:\n return '$patch';\n default:\n return 'unknown';\n }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => '🍍 ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n }, (api) => {\n if (typeof api.now !== 'function') {\n toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: `Pinia 🍍`,\n color: 0xe5df88,\n });\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Pinia 🍍',\n icon: 'storage',\n treeFilterPlaceholder: 'Search stores',\n actions: [\n {\n icon: 'content_copy',\n action: () => {\n actionGlobalCopyState(pinia);\n },\n tooltip: 'Serialize and copy the state',\n },\n {\n icon: 'content_paste',\n action: async () => {\n await actionGlobalPasteState(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Replace the state with the content of your clipboard',\n },\n {\n icon: 'save',\n action: () => {\n actionGlobalSaveState(pinia);\n },\n tooltip: 'Save the state as a JSON file',\n },\n {\n icon: 'folder_open',\n action: async () => {\n await actionGlobalOpenStateFile(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Import the state from a JSON file',\n },\n ],\n nodeActions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state (with \"$reset\")',\n action: (nodeId) => {\n const store = pinia._s.get(nodeId);\n if (!store) {\n toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n }\n else if (typeof store.$reset !== 'function') {\n toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n }\n else {\n store.$reset();\n toastMessage(`Store \"${nodeId}\" reset.`);\n }\n },\n },\n ],\n });\n api.on.inspectComponent((payload, ctx) => {\n const proxy = (payload.componentInstance &&\n payload.componentInstance.proxy);\n if (proxy && proxy._pStores) {\n const piniaStores = payload.componentInstance.proxy._pStores;\n Object.values(piniaStores).forEach((store) => {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'state',\n editable: true,\n value: store._isOptionsAPI\n ? {\n _custom: {\n value: toRaw(store.$state),\n actions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state of this store',\n action: () => store.$reset(),\n },\n ],\n },\n }\n : // NOTE: workaround to unwrap transferred refs\n Object.keys(store.$state).reduce((state, key) => {\n state[key] = store.$state[key];\n return state;\n }, {}),\n });\n if (store._getters && store._getters.length) {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'getters',\n editable: false,\n value: store._getters.reduce((getters, key) => {\n try {\n getters[key] = store[key];\n }\n catch (error) {\n // @ts-expect-error: we just want to show it in devtools\n getters[key] = error;\n }\n return getters;\n }, {}),\n });\n }\n });\n }\n });\n api.on.getInspectorTree((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n let stores = [pinia];\n stores = stores.concat(Array.from(pinia._s.values()));\n payload.rootNodes = (payload.filter\n ? stores.filter((store) => '$id' in store\n ? store.$id\n .toLowerCase()\n .includes(payload.filter.toLowerCase())\n : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n : stores).map(formatStoreForInspectorTree);\n }\n });\n api.on.getInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n // this could be the selected store restored for a different project\n // so it's better not to say anything here\n return;\n }\n if (inspectedStore) {\n payload.state = formatStoreForInspectorState(inspectedStore);\n }\n }\n });\n api.on.editInspectorState((payload, ctx) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (!isPinia(inspectedStore)) {\n // access only the state\n if (path.length !== 1 ||\n !inspectedStore._customProperties.has(path[0]) ||\n path[0] in inspectedStore.$state) {\n path.unshift('$state');\n }\n }\n else {\n // Root access, we can omit the `.value` because the devtools API does it for us\n path.unshift('state');\n }\n isTimelineActive = false;\n payload.set(inspectedStore, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n api.on.editComponentState((payload) => {\n if (payload.type.startsWith('🍍')) {\n const storeId = payload.type.replace(/^🍍\\s*/, '');\n const store = pinia._s.get(storeId);\n if (!store) {\n return toastMessage(`store \"${storeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (path[0] !== 'state') {\n return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n }\n // rewrite the first entry to be able to directly set the state as\n // well as any other path\n path[0] = '$state';\n isTimelineActive = false;\n payload.set(store, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n });\n}\nfunction addStoreToDevtools(app, store) {\n if (!componentStateTypes.includes(getStoreType(store.$id))) {\n componentStateTypes.push(getStoreType(store.$id));\n }\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n settings: {\n logStoreChanges: {\n label: 'Notify about new/deleted stores',\n type: 'boolean',\n defaultValue: true,\n },\n // useEmojis: {\n // label: 'Use emojis in messages ⚡️',\n // type: 'boolean',\n // defaultValue: true,\n // },\n },\n }, (api) => {\n // gracefully handle errors\n const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n store.$onAction(({ after, onError, name, args }) => {\n const groupId = runningActionId++;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛫 ' + name,\n subtitle: 'start',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n },\n groupId,\n },\n });\n after((result) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛬 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n result,\n },\n groupId,\n },\n });\n });\n onError((error) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n logType: 'error',\n title: '💥 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n error,\n },\n groupId,\n },\n });\n });\n }, true);\n store._customProperties.forEach((name) => {\n watch(() => unref(store[name]), (newValue, oldValue) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (isTimelineActive) {\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: 'Change',\n subtitle: name,\n data: {\n newValue,\n oldValue,\n },\n groupId: activeAction,\n },\n });\n }\n }, { deep: true });\n });\n store.$subscribe(({ events, type }, state) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (!isTimelineActive)\n return;\n // rootStore.state[store.id] = state\n const eventData = {\n time: now(),\n title: formatMutationType(type),\n data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n groupId: activeAction,\n };\n if (type === MutationType.patchFunction) {\n eventData.subtitle = '⤵️';\n }\n else if (type === MutationType.patchObject) {\n eventData.subtitle = '🧩';\n }\n else if (events && !Array.isArray(events)) {\n eventData.subtitle = events.type;\n }\n if (events) {\n eventData.data['rawEvent(s)'] = {\n _custom: {\n display: 'DebuggerEvent',\n type: 'object',\n tooltip: 'raw DebuggerEvent[]',\n value: events,\n },\n };\n }\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: eventData,\n });\n }, { detached: true, flush: 'sync' });\n const hotUpdate = store._hotUpdate;\n store._hotUpdate = markRaw((newStore) => {\n hotUpdate(newStore);\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🔥 ' + store.$id,\n subtitle: 'HMR update',\n data: {\n store: formatDisplay(store.$id),\n info: formatDisplay(`HMR update`),\n },\n },\n });\n // update the devtools too\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n });\n const { $dispose } = store;\n store.$dispose = () => {\n $dispose();\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n };\n // trigger an update so it can display new registered stores\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`\"${store.$id}\" store installed 🆕`);\n });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n // original actions of the store as they are given by pinia. We are going to override them\n const actions = actionNames.reduce((storeActions, actionName) => {\n // use toRaw to avoid tracking #541\n storeActions[actionName] = toRaw(store)[actionName];\n return storeActions;\n }, {});\n for (const actionName in actions) {\n store[actionName] = function () {\n // the running action id is incremented in a before action hook\n const _actionId = runningActionId;\n const trackedStore = wrapWithProxy\n ? new Proxy(store, {\n get(...args) {\n activeAction = _actionId;\n return Reflect.get(...args);\n },\n set(...args) {\n activeAction = _actionId;\n return Reflect.set(...args);\n },\n })\n : store;\n // For Setup Stores we need https://github.com/tc39/proposal-async-context\n activeAction = _actionId;\n const retValue = actions[actionName].apply(trackedStore, arguments);\n // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n activeAction = undefined;\n return retValue;\n };\n }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n // HMR module\n if (store.$id.startsWith('__hot:')) {\n return;\n }\n // detect option api vs setup api\n store._isOptionsAPI = !!options.state;\n patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n // Upgrade the HMR to also update the new actions\n const originalHotUpdate = store._hotUpdate;\n toRaw(store)._hotUpdate = function (newStore) {\n originalHotUpdate.apply(this, arguments);\n patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n };\n addStoreToDevtools(app, \n // FIXME: is there a way to allow the assignment from Store to StoreGeneric?\n store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n const scope = effectScope(true);\n // NOTE: here we could check the window object for a state and directly set it\n // if there is anything like it with Vue 3 SSR\n const state = scope.run(() => ref({}));\n let _p = [];\n // plugins added before calling app.use(pinia)\n let toBeInstalled = [];\n const pinia = markRaw({\n install(app) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n if (!isVue2) {\n pinia._a = app;\n app.provide(piniaSymbol, pinia);\n app.config.globalProperties.$pinia = pinia;\n /* istanbul ignore else */\n if (USE_DEVTOOLS) {\n registerPiniaDevtools(app, pinia);\n }\n toBeInstalled.forEach((plugin) => _p.push(plugin));\n toBeInstalled = [];\n }\n },\n use(plugin) {\n if (!this._a && !isVue2) {\n toBeInstalled.push(plugin);\n }\n else {\n _p.push(plugin);\n }\n return this;\n },\n _p,\n // it's actually undefined here\n // @ts-expect-error\n _a: null,\n _e: scope,\n _s: new Map(),\n state,\n });\n // pinia devtools rely on dev only features so they cannot be forced unless\n // the dev build of Vue is used. Avoid old browsers like IE11.\n if (USE_DEVTOOLS && typeof Proxy !== 'undefined') {\n pinia.use(devtoolsPlugin);\n }\n return pinia;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in oldState) {\n const subPatch = oldState[key];\n // skip the whole sub tree\n if (!(key in newState)) {\n continue;\n }\n const targetValue = newState[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n newState[key] = patchObject(targetValue, subPatch);\n }\n else {\n // objects are either a bit more complex (e.g. refs) or primitives, so we\n // just set the whole thing\n if (isVue2) {\n set(newState, key, subPatch);\n }\n else {\n newState[key] = subPatch;\n }\n }\n }\n return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n // strip as much as possible from iife.prod\n if (!(process.env.NODE_ENV !== 'production')) {\n return () => { };\n }\n return (newModule) => {\n const pinia = hot.data.pinia || initialUseStore._pinia;\n if (!pinia) {\n // this store is still not used\n return;\n }\n // preserve the pinia instance across loads\n hot.data.pinia = pinia;\n // console.log('got data', newStore)\n for (const exportName in newModule) {\n const useStore = newModule[exportName];\n // console.log('checking for', exportName)\n if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n // console.log('Accepting update for', useStore.$id)\n const id = useStore.$id;\n if (id !== initialUseStore.$id) {\n console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n // return import.meta.hot.invalidate()\n return hot.invalidate();\n }\n const existingStore = pinia._s.get(id);\n if (!existingStore) {\n console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n return;\n }\n useStore(pinia, existingStore);\n }\n }\n };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n subscriptions.push(callback);\n const removeSubscription = () => {\n const idx = subscriptions.indexOf(callback);\n if (idx > -1) {\n subscriptions.splice(idx, 1);\n onCleanup();\n }\n };\n if (!detached && getCurrentScope()) {\n onScopeDispose(removeSubscription);\n }\n return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n subscriptions.slice().forEach((callback) => {\n callback(...args);\n });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\nfunction mergeReactiveObjects(target, patchToApply) {\n // Handle Map instances\n if (target instanceof Map && patchToApply instanceof Map) {\n patchToApply.forEach((value, key) => target.set(key, value));\n }\n // Handle Set instances\n if (target instanceof Set && patchToApply instanceof Set) {\n patchToApply.forEach(target.add, target);\n }\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in patchToApply) {\n if (!patchToApply.hasOwnProperty(key))\n continue;\n const subPatch = patchToApply[key];\n const targetValue = target[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n target.hasOwnProperty(key) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n target[key] = mergeReactiveObjects(targetValue, subPatch);\n }\n else {\n // @ts-expect-error: subPatch is a valid value\n target[key] = subPatch;\n }\n }\n return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n ? Symbol('pinia:skipHydration')\n : /* istanbul ignore next */ Symbol();\nconst skipHydrateMap = /*#__PURE__*/ new WeakMap();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n return isVue2\n ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\n /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\n : Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n return isVue2\n ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\n : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n const { state, actions, getters } = options;\n const initialState = pinia.state.value[id];\n let store;\n function setup() {\n if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value, id, state ? state() : {});\n }\n else {\n pinia.state.value[id] = state ? state() : {};\n }\n }\n // avoid creating a state in pinia.state.value\n const localState = (process.env.NODE_ENV !== 'production') && hot\n ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n toRefs(ref(state ? state() : {}).value)\n : toRefs(pinia.state.value[id]);\n return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n if ((process.env.NODE_ENV !== 'production') && name in localState) {\n console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n }\n computedGetters[name] = markRaw(computed(() => {\n setActivePinia(pinia);\n // it was created just before\n const store = pinia._s.get(id);\n // allow cross using stores\n /* istanbul ignore next */\n if (isVue2 && !store._r)\n return;\n // @ts-expect-error\n // return getters![name].call(context, context)\n // TODO: avoid reading the getter while assigning with a global variable\n return getters[name].call(store, store);\n }));\n return computedGetters;\n }, {}));\n }\n store = createSetupStore(id, setup, options, pinia, hot, true);\n return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n let scope;\n const optionsForPlugin = assign({ actions: {} }, options);\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n throw new Error('Pinia destroyed');\n }\n // watcher options for $subscribe\n const $subscribeOptions = {\n deep: true,\n // flush: 'post',\n };\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production') && !isVue2) {\n $subscribeOptions.onTrigger = (event) => {\n /* istanbul ignore else */\n if (isListening) {\n debuggerEvents = event;\n // avoid triggering this while the store is being built and the state is being set in pinia\n }\n else if (isListening == false && !store._hotUpdating) {\n // let patch send all the events together later\n /* istanbul ignore else */\n if (Array.isArray(debuggerEvents)) {\n debuggerEvents.push(event);\n }\n else {\n console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n }\n }\n };\n }\n // internal state\n let isListening; // set to true at the end\n let isSyncListening; // set to true at the end\n let subscriptions = [];\n let actionSubscriptions = [];\n let debuggerEvents;\n const initialState = pinia.state.value[$id];\n // avoid setting the state for option stores if it is set\n // by the setup\n if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value, $id, {});\n }\n else {\n pinia.state.value[$id] = {};\n }\n }\n const hotState = ref({});\n // avoid triggering too many listeners\n // https://github.com/vuejs/pinia/issues/1129\n let activeListener;\n function $patch(partialStateOrMutator) {\n let subscriptionMutation;\n isListening = isSyncListening = false;\n // reset the debugger events since patches are sync\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n debuggerEvents = [];\n }\n if (typeof partialStateOrMutator === 'function') {\n partialStateOrMutator(pinia.state.value[$id]);\n subscriptionMutation = {\n type: MutationType.patchFunction,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n else {\n mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n subscriptionMutation = {\n type: MutationType.patchObject,\n payload: partialStateOrMutator,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n const myListenerId = (activeListener = Symbol());\n nextTick().then(() => {\n if (activeListener === myListenerId) {\n isListening = true;\n }\n });\n isSyncListening = true;\n // because we paused the watcher, we need to manually call the subscriptions\n triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n }\n const $reset = isOptionsStore\n ? function $reset() {\n const { state } = options;\n const newState = state ? state() : {};\n // we use a patch to group all changes into one single subscription\n this.$patch(($state) => {\n assign($state, newState);\n });\n }\n : /* istanbul ignore next */\n (process.env.NODE_ENV !== 'production')\n ? () => {\n throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n }\n : noop;\n function $dispose() {\n scope.stop();\n subscriptions = [];\n actionSubscriptions = [];\n pinia._s.delete($id);\n }\n /**\n * Wraps an action to handle subscriptions.\n *\n * @param name - name of the action\n * @param action - action to wrap\n * @returns a wrapped action to handle subscriptions\n */\n function wrapAction(name, action) {\n return function () {\n setActivePinia(pinia);\n const args = Array.from(arguments);\n const afterCallbackList = [];\n const onErrorCallbackList = [];\n function after(callback) {\n afterCallbackList.push(callback);\n }\n function onError(callback) {\n onErrorCallbackList.push(callback);\n }\n // @ts-expect-error\n triggerSubscriptions(actionSubscriptions, {\n args,\n name,\n store,\n after,\n onError,\n });\n let ret;\n try {\n ret = action.apply(this && this.$id === $id ? this : store, args);\n // handle sync errors\n }\n catch (error) {\n triggerSubscriptions(onErrorCallbackList, error);\n throw error;\n }\n if (ret instanceof Promise) {\n return ret\n .then((value) => {\n triggerSubscriptions(afterCallbackList, value);\n return value;\n })\n .catch((error) => {\n triggerSubscriptions(onErrorCallbackList, error);\n return Promise.reject(error);\n });\n }\n // trigger after callbacks\n triggerSubscriptions(afterCallbackList, ret);\n return ret;\n };\n }\n const _hmrPayload = /*#__PURE__*/ markRaw({\n actions: {},\n getters: {},\n state: [],\n hotState,\n });\n const partialStore = {\n _p: pinia,\n // _s: scope,\n $id,\n $onAction: addSubscription.bind(null, actionSubscriptions),\n $patch,\n $reset,\n $subscribe(callback, options = {}) {\n const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n if (options.flush === 'sync' ? isSyncListening : isListening) {\n callback({\n storeId: $id,\n type: MutationType.direct,\n events: debuggerEvents,\n }, state);\n }\n }, assign({}, $subscribeOptions, options)));\n return removeSubscription;\n },\n $dispose,\n };\n /* istanbul ignore if */\n if (isVue2) {\n // start as non ready\n partialStore._r = false;\n }\n const store = reactive((process.env.NODE_ENV !== 'production') || USE_DEVTOOLS\n ? assign({\n _hmrPayload,\n _customProperties: markRaw(new Set()), // devtools custom properties\n }, partialStore\n // must be added later\n // setupStore\n )\n : partialStore);\n // store the partial store now so the setup of stores can instantiate each other before they are finished without\n // creating infinite loops.\n pinia._s.set($id, store);\n const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n const setupStore = pinia._e.run(() => {\n scope = effectScope();\n return runWithContext(() => scope.run(setup));\n });\n // overwrite existing actions to support $onAction\n for (const key in setupStore) {\n const prop = setupStore[key];\n if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n // mark it as a piece of state to be serialized\n if ((process.env.NODE_ENV !== 'production') && hot) {\n set(hotState.value, key, toRef(setupStore, key));\n // createOptionStore directly sets the state in pinia.state.value so we\n // can just skip that\n }\n else if (!isOptionsStore) {\n // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n if (initialState && shouldHydrate(prop)) {\n if (isRef(prop)) {\n prop.value = initialState[key];\n }\n else {\n // probably a reactive object, lets recursively assign\n // @ts-expect-error: prop is unknown\n mergeReactiveObjects(prop, initialState[key]);\n }\n }\n // transfer the ref to the pinia state to keep everything in sync\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value[$id], key, prop);\n }\n else {\n pinia.state.value[$id][key] = prop;\n }\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.state.push(key);\n }\n // action\n }\n else if (typeof prop === 'function') {\n // @ts-expect-error: we are overriding the function we avoid wrapping if\n const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : wrapAction(key, prop);\n // this a hot module replacement store because the hotUpdate method needs\n // to do it with the right context\n /* istanbul ignore if */\n if (isVue2) {\n set(setupStore, key, actionValue);\n }\n else {\n // @ts-expect-error\n setupStore[key] = actionValue;\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.actions[key] = prop;\n }\n // list actions so they can be used in plugins\n // @ts-expect-error\n optionsForPlugin.actions[key] = prop;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n // add getters for devtools\n if (isComputed(prop)) {\n _hmrPayload.getters[key] = isOptionsStore\n ? // @ts-expect-error\n options.getters[key]\n : prop;\n if (IS_CLIENT) {\n const getters = setupStore._getters ||\n // @ts-expect-error: same\n (setupStore._getters = markRaw([]));\n getters.push(key);\n }\n }\n }\n }\n // add the state, getters, and action properties\n /* istanbul ignore if */\n if (isVue2) {\n Object.keys(setupStore).forEach((key) => {\n set(store, key, setupStore[key]);\n });\n }\n else {\n assign(store, setupStore);\n // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n // Make `storeToRefs()` work with `reactive()` #799\n assign(toRaw(store), setupStore);\n }\n // use this instead of a computed with setter to be able to create it anywhere\n // without linking the computed lifespan to wherever the store is first\n // created.\n Object.defineProperty(store, '$state', {\n get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n set: (state) => {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && hot) {\n throw new Error('cannot set hotState');\n }\n $patch(($state) => {\n assign($state, state);\n });\n },\n });\n // add the hotUpdate before plugins to allow them to override it\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n store._hotUpdate = markRaw((newStore) => {\n store._hotUpdating = true;\n newStore._hmrPayload.state.forEach((stateKey) => {\n if (stateKey in store.$state) {\n const newStateTarget = newStore.$state[stateKey];\n const oldStateSource = store.$state[stateKey];\n if (typeof newStateTarget === 'object' &&\n isPlainObject(newStateTarget) &&\n isPlainObject(oldStateSource)) {\n patchObject(newStateTarget, oldStateSource);\n }\n else {\n // transfer the ref\n newStore.$state[stateKey] = oldStateSource;\n }\n }\n // patch direct access properties to allow store.stateProperty to work as\n // store.$state.stateProperty\n set(store, stateKey, toRef(newStore.$state, stateKey));\n });\n // remove deleted state properties\n Object.keys(store.$state).forEach((stateKey) => {\n if (!(stateKey in newStore.$state)) {\n del(store, stateKey);\n }\n });\n // avoid devtools logging this as a mutation\n isListening = false;\n isSyncListening = false;\n pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n isSyncListening = true;\n nextTick().then(() => {\n isListening = true;\n });\n for (const actionName in newStore._hmrPayload.actions) {\n const action = newStore[actionName];\n set(store, actionName, wrapAction(actionName, action));\n }\n // TODO: does this work in both setup and option store?\n for (const getterName in newStore._hmrPayload.getters) {\n const getter = newStore._hmrPayload.getters[getterName];\n const getterValue = isOptionsStore\n ? // special handling of options api\n computed(() => {\n setActivePinia(pinia);\n return getter.call(store, store);\n })\n : getter;\n set(store, getterName, getterValue);\n }\n // remove deleted getters\n Object.keys(store._hmrPayload.getters).forEach((key) => {\n if (!(key in newStore._hmrPayload.getters)) {\n del(store, key);\n }\n });\n // remove old actions\n Object.keys(store._hmrPayload.actions).forEach((key) => {\n if (!(key in newStore._hmrPayload.actions)) {\n del(store, key);\n }\n });\n // update the values used in devtools and to allow deleting new properties later on\n store._hmrPayload = newStore._hmrPayload;\n store._getters = newStore._getters;\n store._hotUpdating = false;\n });\n }\n if (USE_DEVTOOLS) {\n const nonEnumerable = {\n writable: true,\n configurable: true,\n // avoid warning on devtools trying to display this property\n enumerable: false,\n };\n ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n });\n }\n /* istanbul ignore if */\n if (isVue2) {\n // mark the store as ready before plugins\n store._r = true;\n }\n // apply all plugins\n pinia._p.forEach((extender) => {\n /* istanbul ignore else */\n if (USE_DEVTOOLS) {\n const extensions = scope.run(() => extender({\n store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n }));\n Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n assign(store, extensions);\n }\n else {\n assign(store, scope.run(() => extender({\n store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n })));\n }\n });\n if ((process.env.NODE_ENV !== 'production') &&\n store.$state &&\n typeof store.$state === 'object' &&\n typeof store.$state.constructor === 'function' &&\n !store.$state.constructor.toString().includes('[native code]')) {\n console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\n `\\tstate: () => new MyClass()\\n` +\n `Found in store \"${store.$id}\".`);\n }\n // only apply hydrate to option stores with an initial state in pinia\n if (initialState &&\n isOptionsStore &&\n options.hydrate) {\n options.hydrate(store.$state, initialState);\n }\n isListening = true;\n isSyncListening = true;\n return store;\n}\nfunction defineStore(\n// TODO: add proper types from above\nidOrOptions, setup, setupOptions) {\n let id;\n let options;\n const isSetupStore = typeof setup === 'function';\n if (typeof idOrOptions === 'string') {\n id = idOrOptions;\n // the option store setup will contain the actual options in this case\n options = isSetupStore ? setupOptions : setup;\n }\n else {\n options = idOrOptions;\n id = idOrOptions.id;\n if ((process.env.NODE_ENV !== 'production') && typeof id !== 'string') {\n throw new Error(`[🍍]: \"defineStore()\" must be passed a store id as its first argument.`);\n }\n }\n function useStore(pinia, hot) {\n const hasContext = hasInjectionContext();\n pinia =\n // in test mode, ignore the argument provided as we can always retrieve a\n // pinia instance with getActivePinia()\n ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n (hasContext ? inject(piniaSymbol, null) : null);\n if (pinia)\n setActivePinia(pinia);\n if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Did you forget to install pinia?\\n` +\n `\\tconst pinia = createPinia()\\n` +\n `\\tapp.use(pinia)\\n` +\n `This will fail in production.`);\n }\n pinia = activePinia;\n if (!pinia._s.has(id)) {\n // creating the store registers it in `pinia._s`\n if (isSetupStore) {\n createSetupStore(id, setup, options, pinia);\n }\n else {\n createOptionsStore(id, options, pinia);\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n // @ts-expect-error: not the right inferred type\n useStore._pinia = pinia;\n }\n }\n const store = pinia._s.get(id);\n if ((process.env.NODE_ENV !== 'production') && hot) {\n const hotId = '__hot:' + id;\n const newStore = isSetupStore\n ? createSetupStore(hotId, setup, options, pinia, true)\n : createOptionsStore(hotId, assign({}, options), pinia, true);\n hot._hotUpdate(newStore);\n // cleanup the state properties and the store from the cache\n delete pinia.state.value[hotId];\n pinia._s.delete(hotId);\n }\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n const currentInstance = getCurrentInstance();\n // save stores in instances to access them devtools\n if (currentInstance &&\n currentInstance.proxy &&\n // avoid adding stores that are just built for hot module replacement\n !hot) {\n const vm = currentInstance.proxy;\n const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n cache[id] = store;\n }\n }\n // StoreGeneric cannot be casted towards Store\n return store;\n }\n useStore.$id = id;\n return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n * computed: {\n * // other computed properties\n * ...mapStores(useUserStore, useCartStore)\n * },\n *\n * created() {\n * this.userStore // store with id \"user\"\n * this.cartStore // store with id \"cart\"\n * }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n `Replace\\n` +\n `\\tmapStores([useAuthStore, useCartStore])\\n` +\n `with\\n` +\n `\\tmapStores(useAuthStore, useCartStore)\\n` +\n `This will fail in production if not fixed.`);\n stores = stores[0];\n }\n return stores.reduce((reduced, useStore) => {\n // @ts-expect-error: $id is added by defineStore\n reduced[useStore.$id + mapStoreSuffix] = function () {\n return useStore(this.$pinia);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = function () {\n return useStore(this.$pinia)[key];\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function () {\n const store = useStore(this.$pinia);\n const storeKey = keysOrMapper[key];\n // for some reason TS is unable to infer the type of storeKey to be a\n // function\n return typeof storeKey === 'function'\n ? storeKey.call(this, store)\n : store[storeKey];\n };\n return reduced;\n }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n return useStore(this.$pinia)[key](...args);\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n return useStore(this.$pinia)[keysOrMapper[key]](...args);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-ignore\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[key];\n },\n set(value) {\n // it's easier to type it here as any\n return (useStore(this.$pinia)[key] = value);\n },\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-ignore\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[keysOrMapper[key]];\n },\n set(value) {\n // it's easier to type it here as any\n return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n },\n };\n return reduced;\n }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n // See https://github.com/vuejs/pinia/issues/852\n // It's easier to just use toRefs() even if it includes more stuff\n if (isVue2) {\n // @ts-expect-error: toRefs include methods and others\n return toRefs(store);\n }\n else {\n store = toRaw(store);\n const refs = {};\n for (const key in store) {\n const value = store[key];\n if (isRef(value) || isReactive(value)) {\n // @ts-expect-error: the key is state or getter\n refs[key] =\n // ---\n toRef(store, key);\n }\n }\n return refs;\n }\n}\n\n/**\n * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\n * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\n * https://pinia.vuejs.org/ssr/nuxt.html.\n *\n * @example\n * ```js\n * import Vue from 'vue'\n * import { PiniaVuePlugin, createPinia } from 'pinia'\n *\n * Vue.use(PiniaVuePlugin)\n * const pinia = createPinia()\n *\n * new Vue({\n * el: '#app',\n * // ...\n * pinia,\n * })\n * ```\n *\n * @param _Vue - `Vue` imported from 'vue'.\n */\nconst PiniaVuePlugin = function (_Vue) {\n // Equivalent of\n // app.config.globalProperties.$pinia = pinia\n _Vue.mixin({\n beforeCreate() {\n const options = this.$options;\n if (options.pinia) {\n const pinia = options.pinia;\n // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\n /* istanbul ignore else */\n if (!this._provided) {\n const provideCache = {};\n Object.defineProperty(this, '_provided', {\n get: () => provideCache,\n set: (v) => Object.assign(provideCache, v),\n });\n }\n this._provided[piniaSymbol] = pinia;\n // propagate the pinia instance in an SSR friendly way\n // avoid adding it to nuxt twice\n /* istanbul ignore else */\n if (!this.$pinia) {\n this.$pinia = pinia;\n }\n pinia._a = this;\n if (IS_CLIENT) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n }\n if (USE_DEVTOOLS) {\n registerPiniaDevtools(pinia._a, pinia);\n }\n }\n else if (!this.$pinia && options.parent && options.parent.$pinia) {\n this.$pinia = options.parent.$pinia;\n }\n },\n destroyed() {\n delete this._pStores;\n },\n });\n};\n\nexport { MutationType, PiniaVuePlugin, acceptHMRUpdate, createPinia, defineStore, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, skipHydrate, storeToRefs };\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.currentView?.legacy),expression:\"!currentView?.legacy\"}],class:{'app-content--hidden': _vm.currentView?.legacy},attrs:{\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\"},[_c('BreadCrumbs',{attrs:{\"path\":_vm.dir},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e()],1),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"title\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?_c('NcEmptyContent',{attrs:{\"title\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [(_vm.dir !== '/')?_c('NcButton',{attrs:{\"aria-label\":\"t('files', 'Go to the previous folder')\",\"type\":\"primary\",\"to\":_vm.toPreviousDir}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView.icon}})]},proxy:true}])}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-view\":_vm.currentView,\"nodes\":_vm.dirContents}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * natural-orderby v3.0.2\n *\n * Copyright (c) Olaf Ennen\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar compareNumbers = function compareNumbers(numberA, numberB) {\n if (numberA < numberB) {\n return -1;\n }\n if (numberA > numberB) {\n return 1;\n }\n return 0;\n};\n\nvar compareUnicode = function compareUnicode(stringA, stringB) {\n var result = stringA.localeCompare(stringB);\n return result ? result / Math.abs(result) : 0;\n};\n\nvar RE_NUMBERS = /(^0x[\\da-fA-F]+$|^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?!\\.\\d+)(?=\\D|\\s|$))|\\d+)/g;\nvar RE_LEADING_OR_TRAILING_WHITESPACES = /^\\s+|\\s+$/g; // trim pre-post whitespace\nvar RE_WHITESPACES = /\\s+/g; // normalize all whitespace to single ' ' character\nvar RE_INT_OR_FLOAT = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/; // identify integers and floats\nvar RE_DATE = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[/-]\\d{1,4}[/-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/; // identify date strings\nvar RE_LEADING_ZERO = /^0+[1-9]{1}[0-9]*$/;\n// eslint-disable-next-line no-control-regex\nvar RE_UNICODE_CHARACTERS = /[^\\x00-\\x80]/;\n\nvar stringCompare = function stringCompare(stringA, stringB) {\n if (stringA < stringB) {\n return -1;\n }\n if (stringA > stringB) {\n return 1;\n }\n return 0;\n};\n\nvar compareChunks = function compareChunks(chunksA, chunksB) {\n var lengthA = chunksA.length;\n var lengthB = chunksB.length;\n var size = Math.min(lengthA, lengthB);\n for (var i = 0; i < size; i++) {\n var chunkA = chunksA[i];\n var chunkB = chunksB[i];\n if (chunkA.normalizedString !== chunkB.normalizedString) {\n if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) {\n // empty strings have lowest value\n return chunkA.normalizedString === '' ? -1 : 1;\n }\n if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) {\n // compare numbers\n var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber);\n if (result === 0) {\n // compare string value, if parsed numbers are equal\n // Example:\n // chunkA = { parsedNumber: 1, normalizedString: \"001\" }\n // chunkB = { parsedNumber: 1, normalizedString: \"01\" }\n // chunkA.parsedNumber === chunkB.parsedNumber\n // chunkA.normalizedString < chunkB.normalizedString\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n return result;\n } else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) {\n // number < string\n return chunkA.parsedNumber !== undefined ? -1 : 1;\n } else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString)) {\n // use locale comparison only if one of the chunks contains unicode characters\n return compareUnicode(chunkA.normalizedString, chunkB.normalizedString);\n } else {\n // use common string comparison for performance reason\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n }\n }\n // if the chunks are equal so far, the one which has more chunks is greater than the other one\n if (lengthA > size || lengthB > size) {\n return lengthA <= size ? -1 : 1;\n }\n return 0;\n};\n\nvar compareOtherTypes = function compareOtherTypes(valueA, valueB) {\n if (!valueA.chunks ? valueB.chunks : !valueB.chunks) {\n return !valueA.chunks ? 1 : -1;\n }\n if (valueA.isNaN ? !valueB.isNaN : valueB.isNaN) {\n return valueA.isNaN ? -1 : 1;\n }\n if (valueA.isSymbol ? !valueB.isSymbol : valueB.isSymbol) {\n return valueA.isSymbol ? -1 : 1;\n }\n if (valueA.isObject ? !valueB.isObject : valueB.isObject) {\n return valueA.isObject ? -1 : 1;\n }\n if (valueA.isArray ? !valueB.isArray : valueB.isArray) {\n return valueA.isArray ? -1 : 1;\n }\n if (valueA.isFunction ? !valueB.isFunction : valueB.isFunction) {\n return valueA.isFunction ? -1 : 1;\n }\n if (valueA.isNull ? !valueB.isNull : valueB.isNull) {\n return valueA.isNull ? -1 : 1;\n }\n return 0;\n};\n\nvar compareValues = function compareValues(valueA, valueB) {\n if (valueA.value === valueB.value) {\n return 0;\n }\n if (valueA.parsedNumber !== undefined && valueB.parsedNumber !== undefined) {\n return compareNumbers(valueA.parsedNumber, valueB.parsedNumber);\n }\n if (valueA.chunks && valueB.chunks) {\n return compareChunks(valueA.chunks, valueB.chunks);\n }\n return compareOtherTypes(valueA, valueB);\n};\n\nvar normalizeAlphaChunk = function normalizeAlphaChunk(chunk) {\n return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n};\n\nvar parseNumber = function parseNumber(value) {\n if (value.length !== 0) {\n var parsedNumber = Number(value);\n if (!Number.isNaN(parsedNumber)) {\n return parsedNumber;\n }\n }\n return undefined;\n};\n\nvar normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) {\n if (RE_INT_OR_FLOAT.test(chunk)) {\n // don´t parse a number, if there´s a preceding decimal point\n // to keep significance\n // e.g. 1.0020, 1.020\n if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') {\n return parseNumber(chunk) || 0;\n }\n }\n return undefined;\n};\n\nvar createChunkMap = function createChunkMap(chunk, index, chunks) {\n return {\n parsedNumber: normalizeNumericChunk(chunk, index, chunks),\n normalizedString: normalizeAlphaChunk(chunk)\n };\n};\n\nvar createChunks = function createChunks(value) {\n return value.replace(RE_NUMBERS, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');\n};\n\nvar createChunkMaps = function createChunkMaps(value) {\n var chunksMaps = createChunks(value).map(createChunkMap);\n return chunksMaps;\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n\nvar isNaN = function isNaN(value) {\n return Number.isNaN(value) || value instanceof Number && Number.isNaN(value.valueOf());\n};\n\nvar isNull = function isNull(value) {\n return value === null;\n};\n\nvar isObject = function isObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Number) && !(value instanceof String) && !(value instanceof Boolean) && !(value instanceof Date);\n};\n\nvar isSymbol = function isSymbol(value) {\n return typeof value === 'symbol';\n};\n\nvar isUndefined = function isUndefined(value) {\n return value === undefined;\n};\n\nvar parseDate = function parseDate(value) {\n try {\n var parsedDate = Date.parse(value);\n if (!Number.isNaN(parsedDate)) {\n if (RE_DATE.test(value)) {\n return parsedDate;\n }\n }\n return undefined;\n } catch (_unused) {\n return undefined;\n }\n};\n\nvar numberify = function numberify(value) {\n var parsedNumber = parseNumber(value);\n if (parsedNumber !== undefined) {\n return parsedNumber;\n }\n return parseDate(value);\n};\n\nvar stringify = function stringify(value) {\n if (typeof value === 'boolean' || value instanceof Boolean) {\n return Number(value).toString();\n }\n if (typeof value === 'number' || value instanceof Number) {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.getTime().toString();\n }\n if (typeof value === 'string' || value instanceof String) {\n return value.toLowerCase().replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n }\n return '';\n};\n\nvar getMappedValueRecord = function getMappedValueRecord(value) {\n if (typeof value === 'string' || value instanceof String || (typeof value === 'number' || value instanceof Number) && !isNaN(value) || typeof value === 'boolean' || value instanceof Boolean || value instanceof Date) {\n var stringValue = stringify(value);\n var parsedNumber = numberify(stringValue);\n var chunks = createChunkMaps(parsedNumber ? \"\" + parsedNumber : stringValue);\n return {\n parsedNumber: parsedNumber,\n chunks: chunks,\n value: value\n };\n }\n return {\n isArray: Array.isArray(value),\n isFunction: isFunction(value),\n isNaN: isNaN(value),\n isNull: isNull(value),\n isObject: isObject(value),\n isSymbol: isSymbol(value),\n isUndefined: isUndefined(value),\n value: value\n };\n};\n\nvar baseCompare = function baseCompare(options) {\n return function (valueA, valueB) {\n var a = getMappedValueRecord(valueA);\n var b = getMappedValueRecord(valueB);\n var result = compareValues(a, b);\n return result * (options.order === 'desc' ? -1 : 1);\n };\n};\n\nvar isValidOrder = function isValidOrder(value) {\n return typeof value === 'string' && (value === 'asc' || value === 'desc');\n};\nvar getOptions = function getOptions(customOptions) {\n var order = 'asc';\n if (typeof customOptions === 'string' && isValidOrder(customOptions)) {\n order = customOptions;\n } else if (customOptions && typeof customOptions === 'object' && customOptions.order && isValidOrder(customOptions.order)) {\n order = customOptions.order;\n }\n return {\n order: order\n };\n};\n\n/**\n * Creates a compare function that defines the natural sort order considering\n * the given `options` which may be passed to [`Array.prototype.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort).\n */\nfunction compare(options) {\n var validatedOptions = getOptions(options);\n return baseCompare(validatedOptions);\n}\n\nvar compareMultiple = function compareMultiple(recordA, recordB, orders) {\n var indexA = recordA.index,\n valuesA = recordA.values;\n var indexB = recordB.index,\n valuesB = recordB.values;\n var length = valuesA.length;\n var ordersLength = orders.length;\n for (var i = 0; i < length; i++) {\n var order = i < ordersLength ? orders[i] : null;\n if (order && typeof order === 'function') {\n var result = order(valuesA[i].value, valuesB[i].value);\n if (result) {\n return result;\n }\n } else {\n var _result = compareValues(valuesA[i], valuesB[i]);\n if (_result) {\n return _result * (order === 'desc' ? -1 : 1);\n }\n }\n }\n return indexA - indexB;\n};\n\nvar createIdentifierFn = function createIdentifierFn(identifier) {\n if (typeof identifier === 'function') {\n // identifier is already a lookup function\n return identifier;\n }\n return function (value) {\n if (Array.isArray(value)) {\n var index = Number(identifier);\n if (Number.isInteger(index)) {\n return value[index];\n }\n } else if (value && typeof value === 'object') {\n var result = Object.getOwnPropertyDescriptor(value, identifier);\n return result == null ? void 0 : result.value;\n }\n return value;\n };\n};\n\nvar getElementByIndex = function getElementByIndex(collection, index) {\n return collection[index];\n};\n\nvar getValueByIdentifier = function getValueByIdentifier(value, getValue) {\n return getValue(value);\n};\n\nvar baseOrderBy = function baseOrderBy(collection, identifiers, orders) {\n var identifierFns = identifiers.length ? identifiers.map(createIdentifierFn) : [function (value) {\n return value;\n }];\n\n // temporary array holds elements with position and sort-values\n var mappedCollection = collection.map(function (element, index) {\n var values = identifierFns.map(function (identifier) {\n return getValueByIdentifier(element, identifier);\n }).map(getMappedValueRecord);\n return {\n index: index,\n values: values\n };\n });\n\n // iterate over values and compare values until a != b or last value reached\n mappedCollection.sort(function (recordA, recordB) {\n return compareMultiple(recordA, recordB, orders);\n });\n return mappedCollection.map(function (element) {\n return getElementByIndex(collection, element.index);\n });\n};\n\nvar getIdentifiers = function getIdentifiers(identifiers) {\n if (!identifiers) {\n return [];\n }\n var identifierList = !Array.isArray(identifiers) ? [identifiers] : [].concat(identifiers);\n if (identifierList.some(function (identifier) {\n return typeof identifier !== 'string' && typeof identifier !== 'number' && typeof identifier !== 'function';\n })) {\n return [];\n }\n return identifierList;\n};\n\nvar getOrders = function getOrders(orders) {\n if (!orders) {\n return [];\n }\n var orderList = !Array.isArray(orders) ? [orders] : [].concat(orders);\n if (orderList.some(function (order) {\n return order !== 'asc' && order !== 'desc' && typeof order !== 'function';\n })) {\n return [];\n }\n return orderList;\n};\n\n/**\n * Creates an array of elements, natural sorted by specified identifiers and\n * the corresponding sort orders. This method implements a stable sort\n * algorithm, which means the original sort order of equal elements is\n * preserved.\n */\nfunction orderBy(collection, identifiers, orders) {\n if (!collection || !Array.isArray(collection)) {\n return [];\n }\n var validatedIdentifiers = getIdentifiers(identifiers);\n var validatedOrders = getOrders(orders);\n return baseOrderBy(collection, validatedIdentifiers, validatedOrders);\n}\n\nexport { compare, orderBy };\n","import { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nimport Vue from 'vue';\nexport const useFilesStore = function (...args) {\n const store = defineStore('files', {\n state: () => ({\n files: {},\n roots: {},\n }),\n getters: {\n /**\n * Get a file or folder by id\n */\n getNode: (state) => (id) => state.files[id],\n /**\n * Get a list of files or folders by their IDs\n * Does not return undefined values\n */\n getNodes: (state) => (ids) => ids\n .map(id => state.files[id])\n .filter(Boolean),\n /**\n * Get a file or folder by id\n */\n getRoot: (state) => (service) => state.roots[service],\n },\n actions: {\n updateNodes(nodes) {\n // Update the store all at once\n const files = nodes.reduce((acc, node) => {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', node);\n return acc;\n }\n acc[node.fileid] = node;\n return acc;\n }, {});\n Vue.set(this, 'files', { ...this.files, ...files });\n },\n deleteNodes(nodes) {\n nodes.forEach(node => {\n if (node.fileid) {\n Vue.delete(this.files, node.fileid);\n }\n });\n },\n setRoot({ service, root }) {\n Vue.set(this.roots, service, root);\n },\n onDeletedNode(node) {\n this.deleteNodes([node]);\n },\n },\n });\n const fileStore = store(...args);\n // Make sure we only register the listeners once\n if (!fileStore._initialized) {\n // subscribe('files:node:created', fileStore.onCreatedNode)\n subscribe('files:node:deleted', fileStore.onDeletedNode);\n // subscribe('files:node:moved', fileStore.onMovedNode)\n // subscribe('files:node:updated', fileStore.onUpdatedNode)\n fileStore._initialized = true;\n }\n return fileStore;\n};\n","import { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const usePathsStore = function (...args) {\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.fileid);\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n // TODO: watch folders to update paths?\n // subscribe('files:node:created', pathsStore.onCreatedNode)\n // subscribe('files:node:deleted', pathsStore.onDeletedNode)\n // subscribe('files:node:moved', pathsStore.onMovedNode)\n pathsStore._initialized = true;\n }\n return pathsStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport { FileId, SelectionStore } from '../types';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n */\n set(selection = []) {\n Vue.set(this, 'selected', selection);\n },\n /**\n * Set the last selected index\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","import { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst userConfig = loadState('files', 'config', {\n show_hidden: false,\n crop_image_previews: true,\n sort_favorites_first: true,\n});\nexport const useUserConfigStore = function (...args) {\n const store = defineStore('userconfig', {\n state: () => ({\n userConfig,\n }),\n actions: {\n /**\n * Update the user config local store\n */\n onUpdate(key, value) {\n Vue.set(this.userConfig, key, value);\n },\n /**\n * Update the user config local store AND on server side\n */\n async update(key, value) {\n await axios.put(generateUrl('/apps/files/api/v1/config/' + key), {\n value,\n });\n emit('files:config:updated', { key, value });\n },\n },\n });\n const userConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!userConfigStore._initialized) {\n subscribe('files:config:updated', function ({ key, value }) {\n userConfigStore.onUpdate(key, value);\n });\n userConfigStore._initialized = true;\n }\n return userConfigStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst viewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = function (...args) {\n const store = defineStore('viewconfig', {\n state: () => ({\n viewConfig,\n }),\n getters: {\n getConfig: (state) => (view) => state.viewConfig[view] || {},\n },\n actions: {\n /**\n * Update the view config local store\n */\n onUpdate(view, key, value) {\n if (!this.viewConfig[view]) {\n Vue.set(this.viewConfig, view, {});\n }\n Vue.set(this.viewConfig[view], key, value);\n },\n /**\n * Update the view config local store AND on server side\n */\n async update(view, key, value) {\n axios.put(generateUrl(`/apps/files/api/v1/views/${view}/${key}`), {\n value,\n });\n emit('files:viewconfig:updated', { view, key, value });\n },\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n */\n setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n this.update(view, 'sorting_mode', key);\n this.update(view, 'sorting_direction', 'asc');\n },\n /**\n * Toggle the sorting direction\n */\n toggleSortingDirection(view = 'files') {\n const config = this.getConfig(view) || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n this.update(view, 'sorting_direction', newDirection);\n },\n },\n });\n const viewConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!viewConfigStore._initialized) {\n subscribe('files:viewconfig:updated', function ({ view, key, value }) {\n viewConfigStore.onUpdate(view, key, value);\n });\n viewConfigStore._initialized = true;\n }\n return viewConfigStore;\n};\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=69a49b0f&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon home-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=68b3b20b&scoped=true&\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b3b20b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{attrs:{\"data-cy-files-content-breadcrumbs\":\"\"}},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"aria-label\":_vm.ariaLabel(section),\"title\":_vm.ariaLabel(section)},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('Home',{attrs:{\"size\":20}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function getInternetExplorerVersion() {\n\tvar ua = window.navigator.userAgent;\n\n\tvar msie = ua.indexOf('MSIE ');\n\tif (msie > 0) {\n\t\t// IE 10 or older => return version number\n\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t}\n\n\tvar trident = ua.indexOf('Trident/');\n\tif (trident > 0) {\n\t\t// IE 11 => return version number\n\t\tvar rv = ua.indexOf('rv:');\n\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t}\n\n\tvar edge = ua.indexOf('Edge/');\n\tif (edge > 0) {\n\t\t// Edge (IE 12+) => return version number\n\t\treturn parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n\t}\n\n\t// other browser\n\treturn -1;\n}\n\nvar isIE = void 0;\n\nfunction initCompat() {\n\tif (!initCompat.init) {\n\t\tinitCompat.init = true;\n\t\tisIE = getInternetExplorerVersion() !== -1;\n\t}\n}\n\nvar ResizeObserver = { render: function render() {\n\t\tvar _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: \"resize-observer\", attrs: { \"tabindex\": \"-1\" } });\n\t}, staticRenderFns: [], _scopeId: 'data-v-b329ee4c',\n\tname: 'resize-observer',\n\n\tmethods: {\n\t\tcompareAndNotify: function compareAndNotify() {\n\t\t\tif (this._w !== this.$el.offsetWidth || this._h !== this.$el.offsetHeight) {\n\t\t\t\tthis._w = this.$el.offsetWidth;\n\t\t\t\tthis._h = this.$el.offsetHeight;\n\t\t\t\tthis.$emit('notify');\n\t\t\t}\n\t\t},\n\t\taddResizeHandlers: function addResizeHandlers() {\n\t\t\tthis._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\t\t\tthis.compareAndNotify();\n\t\t},\n\t\tremoveResizeHandlers: function removeResizeHandlers() {\n\t\t\tif (this._resizeObject && this._resizeObject.onload) {\n\t\t\t\tif (!isIE && this._resizeObject.contentDocument) {\n\t\t\t\t\tthis._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n\t\t\t\t}\n\t\t\t\tdelete this._resizeObject.onload;\n\t\t\t}\n\t\t}\n\t},\n\n\tmounted: function mounted() {\n\t\tvar _this = this;\n\n\t\tinitCompat();\n\t\tthis.$nextTick(function () {\n\t\t\t_this._w = _this.$el.offsetWidth;\n\t\t\t_this._h = _this.$el.offsetHeight;\n\t\t});\n\t\tvar object = document.createElement('object');\n\t\tthis._resizeObject = object;\n\t\tobject.setAttribute('aria-hidden', 'true');\n\t\tobject.setAttribute('tabindex', -1);\n\t\tobject.onload = this.addResizeHandlers;\n\t\tobject.type = 'text/html';\n\t\tif (isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t\tobject.data = 'about:blank';\n\t\tif (!isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t},\n\tbeforeDestroy: function beforeDestroy() {\n\t\tthis.removeResizeHandlers();\n\t}\n};\n\n// Install the components\nfunction install(Vue) {\n\tVue.component('resize-observer', ResizeObserver);\n\tVue.component('ResizeObserver', ResizeObserver);\n}\n\n// Plugin\nvar plugin = {\n\t// eslint-disable-next-line no-undef\n\tversion: \"0.4.5\",\n\tinstall: install\n};\n\n// Auto-install\nvar GlobalVue = null;\nif (typeof window !== 'undefined') {\n\tGlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n\tGlobalVue = global.Vue;\n}\nif (GlobalVue) {\n\tGlobalVue.use(plugin);\n}\n\nexport { install, ResizeObserver };\nexport default plugin;\n","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction processOptions(value) {\n var options;\n\n if (typeof value === 'function') {\n // Simple options (callback-only)\n options = {\n callback: value\n };\n } else {\n // Options object\n options = value;\n }\n\n return options;\n}\nfunction throttle(callback, delay) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout;\n var lastState;\n var currentArgs;\n\n var throttled = function throttled(state) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n currentArgs = args;\n if (timeout && state === lastState) return;\n var leading = options.leading;\n\n if (typeof leading === 'function') {\n leading = leading(state, lastState);\n }\n\n if ((!timeout || state !== lastState) && leading) {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n }\n\n lastState = state;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n timeout = 0;\n }, delay);\n };\n\n throttled._clear = function () {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return throttled;\n}\nfunction deepEqual(val1, val2) {\n if (val1 === val2) return true;\n\n if (_typeof(val1) === 'object') {\n for (var key in val1) {\n if (!deepEqual(val1[key], val2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\nvar VisibilityState =\n/*#__PURE__*/\nfunction () {\n function VisibilityState(el, options, vnode) {\n _classCallCheck(this, VisibilityState);\n\n this.el = el;\n this.observer = null;\n this.frozen = false;\n this.createObserver(options, vnode);\n }\n\n _createClass(VisibilityState, [{\n key: \"createObserver\",\n value: function createObserver(options, vnode) {\n var _this = this;\n\n if (this.observer) {\n this.destroyObserver();\n }\n\n if (this.frozen) return;\n this.options = processOptions(options);\n\n this.callback = function (result, entry) {\n _this.options.callback(result, entry);\n\n if (result && _this.options.once) {\n _this.frozen = true;\n\n _this.destroyObserver();\n }\n }; // Throttle\n\n\n if (this.callback && this.options.throttle) {\n var _ref = this.options.throttleOptions || {},\n _leading = _ref.leading;\n\n this.callback = throttle(this.callback, this.options.throttle, {\n leading: function leading(state) {\n return _leading === 'both' || _leading === 'visible' && state || _leading === 'hidden' && !state;\n }\n });\n }\n\n this.oldResult = undefined;\n this.observer = new IntersectionObserver(function (entries) {\n var entry = entries[0];\n\n if (entries.length > 1) {\n var intersectingEntry = entries.find(function (e) {\n return e.isIntersecting;\n });\n\n if (intersectingEntry) {\n entry = intersectingEntry;\n }\n }\n\n if (_this.callback) {\n // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n var result = entry.isIntersecting && entry.intersectionRatio >= _this.threshold;\n if (result === _this.oldResult) return;\n _this.oldResult = result;\n\n _this.callback(result, entry);\n }\n }, this.options.intersection); // Wait for the element to be in document\n\n vnode.context.$nextTick(function () {\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n }\n }, {\n key: \"destroyObserver\",\n value: function destroyObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n } // Cancel throttled call\n\n\n if (this.callback && this.callback._clear) {\n this.callback._clear();\n\n this.callback = null;\n }\n }\n }, {\n key: \"threshold\",\n get: function get() {\n return this.options.intersection && this.options.intersection.threshold || 0;\n }\n }]);\n\n return VisibilityState;\n}();\n\nfunction bind(el, _ref2, vnode) {\n var value = _ref2.value;\n if (!value) return;\n\n if (typeof IntersectionObserver === 'undefined') {\n console.warn('[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill');\n } else {\n var state = new VisibilityState(el, value, vnode);\n el._vue_visibilityState = state;\n }\n}\n\nfunction update(el, _ref3, vnode) {\n var value = _ref3.value,\n oldValue = _ref3.oldValue;\n if (deepEqual(value, oldValue)) return;\n var state = el._vue_visibilityState;\n\n if (!value) {\n unbind(el);\n return;\n }\n\n if (state) {\n state.createObserver(value, vnode);\n } else {\n bind(el, {\n value: value\n }, vnode);\n }\n}\n\nfunction unbind(el) {\n var state = el._vue_visibilityState;\n\n if (state) {\n state.destroyObserver();\n delete el._vue_visibilityState;\n }\n}\n\nvar ObserveVisibility = {\n bind: bind,\n update: update,\n unbind: unbind\n};\n\nfunction install(Vue) {\n Vue.directive('observe-visibility', ObserveVisibility);\n /* -- Add more components here -- */\n}\n/* -- Plugin definition & Auto-install -- */\n\n/* You shouldn't have to modify the code below */\n// Plugin\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"0.4.6\",\n install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { ObserveVisibility, install };\n","import { ResizeObserver as ResizeObserver$1 } from 'vue-resize';\nimport { ObserveVisibility } from 'vue-observe-visibility';\nimport ScrollParent from 'scrollparent';\nimport Vue from 'vue';\n\nvar config = {\n itemsLimit: 1000\n};\n\nconst props = {\n items: {\n type: Array,\n required: true\n },\n keyField: {\n type: String,\n default: 'id'\n },\n direction: {\n type: String,\n default: 'vertical',\n validator: value => ['vertical', 'horizontal'].includes(value)\n },\n listTag: {\n type: String,\n default: 'div'\n },\n itemTag: {\n type: String,\n default: 'div'\n }\n};\nfunction simpleArray() {\n return this.items.length && typeof this.items[0] !== 'object';\n}\n\nlet supportsPassive = false;\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\n//\nlet uid = 0;\nvar script$2 = {\n name: 'RecycleScroller',\n components: {\n ResizeObserver: ResizeObserver$1\n },\n directives: {\n ObserveVisibility\n },\n props: {\n ...props,\n itemSize: {\n type: Number,\n default: null\n },\n gridItems: {\n type: Number,\n default: undefined\n },\n itemSecondarySize: {\n type: Number,\n default: undefined\n },\n minItemSize: {\n type: [Number, String],\n default: null\n },\n sizeField: {\n type: String,\n default: 'size'\n },\n typeField: {\n type: String,\n default: 'type'\n },\n buffer: {\n type: Number,\n default: 200\n },\n pageMode: {\n type: Boolean,\n default: false\n },\n prerender: {\n type: Number,\n default: 0\n },\n emitUpdate: {\n type: Boolean,\n default: false\n },\n skipHover: {\n type: Boolean,\n default: false\n },\n listTag: {\n type: String,\n default: 'div'\n },\n itemTag: {\n type: String,\n default: 'div'\n },\n listClass: {\n type: [String, Object, Array],\n default: ''\n },\n itemClass: {\n type: [String, Object, Array],\n default: ''\n }\n },\n data() {\n return {\n pool: [],\n totalSize: 0,\n ready: false,\n hoverKey: null\n };\n },\n computed: {\n sizes() {\n if (this.itemSize === null) {\n const sizes = {\n '-1': {\n accumulator: 0\n }\n };\n const items = this.items;\n const field = this.sizeField;\n const minItemSize = this.minItemSize;\n let computedMinSize = 10000;\n let accumulator = 0;\n let current;\n for (let i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n accumulator += current;\n sizes[i] = {\n accumulator,\n size: current\n };\n }\n // eslint-disable-next-line\n this.$_computedMinItemSize = computedMinSize;\n return sizes;\n }\n return [];\n },\n simpleArray\n },\n watch: {\n items() {\n this.updateVisibleItems(true);\n },\n pageMode() {\n this.applyPageMode();\n this.updateVisibleItems(false);\n },\n sizes: {\n handler() {\n this.updateVisibleItems(false);\n },\n deep: true\n },\n gridItems() {\n this.updateVisibleItems(true);\n },\n itemSecondarySize() {\n this.updateVisibleItems(true);\n }\n },\n created() {\n this.$_startIndex = 0;\n this.$_endIndex = 0;\n this.$_views = new Map();\n this.$_unusedViews = new Map();\n this.$_scrollDirty = false;\n this.$_lastUpdateScrollPosition = 0;\n\n // In SSR mode, we also prerender the same number of item for the first render\n // to avoir mismatch between server and client templates\n if (this.prerender) {\n this.$_prerender = true;\n this.updateVisibleItems(false);\n }\n if (this.gridItems && !this.itemSize) {\n console.error('[vue-recycle-scroller] You must provide an itemSize when using gridItems');\n }\n },\n mounted() {\n this.applyPageMode();\n this.$nextTick(() => {\n // In SSR mode, render the real number of visible items\n this.$_prerender = false;\n this.updateVisibleItems(true);\n this.ready = true;\n });\n },\n activated() {\n const lastPosition = this.$_lastUpdateScrollPosition;\n if (typeof lastPosition === 'number') {\n this.$nextTick(() => {\n this.scrollToPosition(lastPosition);\n });\n }\n },\n beforeDestroy() {\n this.removeListeners();\n },\n methods: {\n addView(pool, index, item, key, type) {\n const view = {\n item,\n position: 0\n };\n const nonReactive = {\n id: uid++,\n index,\n used: true,\n key,\n type\n };\n Object.defineProperty(view, 'nr', {\n configurable: false,\n value: nonReactive\n });\n pool.push(view);\n return view;\n },\n unuseView(view, fake = false) {\n const unusedViews = this.$_unusedViews;\n const type = view.nr.type;\n let unusedPool = unusedViews.get(type);\n if (!unusedPool) {\n unusedPool = [];\n unusedViews.set(type, unusedPool);\n }\n unusedPool.push(view);\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n this.$_views.delete(view.nr.key);\n }\n },\n handleResize() {\n this.$emit('resize');\n if (this.ready) this.updateVisibleItems(false);\n },\n handleScroll(event) {\n if (!this.$_scrollDirty) {\n this.$_scrollDirty = true;\n requestAnimationFrame(() => {\n this.$_scrollDirty = false;\n const {\n continuous\n } = this.updateVisibleItems(false, true);\n\n // It seems sometimes chrome doesn't fire scroll event :/\n // When non continous scrolling is ending, we force a refresh\n if (!continuous) {\n clearTimeout(this.$_refreshTimout);\n this.$_refreshTimout = setTimeout(this.handleScroll, 100);\n }\n });\n }\n },\n handleVisibilityChange(isVisible, entry) {\n if (this.ready) {\n if (isVisible || entry.boundingClientRect.width !== 0 || entry.boundingClientRect.height !== 0) {\n this.$emit('visible');\n requestAnimationFrame(() => {\n this.updateVisibleItems(false);\n });\n } else {\n this.$emit('hidden');\n }\n }\n },\n updateVisibleItems(checkItem, checkPositionDiff = false) {\n const itemSize = this.itemSize;\n const gridItems = this.gridItems || 1;\n const itemSecondarySize = this.itemSecondarySize || itemSize;\n const minItemSize = this.$_computedMinItemSize;\n const typeField = this.typeField;\n const keyField = this.simpleArray ? null : this.keyField;\n const items = this.items;\n const count = items.length;\n const sizes = this.sizes;\n const views = this.$_views;\n const unusedViews = this.$_unusedViews;\n const pool = this.pool;\n let startIndex, endIndex;\n let totalSize;\n let visibleStartIndex, visibleEndIndex;\n if (!count) {\n startIndex = endIndex = visibleStartIndex = visibleEndIndex = totalSize = 0;\n } else if (this.$_prerender) {\n startIndex = visibleStartIndex = 0;\n endIndex = visibleEndIndex = Math.min(this.prerender, items.length);\n totalSize = null;\n } else {\n const scroll = this.getScroll();\n\n // Skip update if use hasn't scrolled enough\n if (checkPositionDiff) {\n let positionDiff = scroll.start - this.$_lastUpdateScrollPosition;\n if (positionDiff < 0) positionDiff = -positionDiff;\n if (itemSize === null && positionDiff < minItemSize || positionDiff < itemSize) {\n return {\n continuous: true\n };\n }\n }\n this.$_lastUpdateScrollPosition = scroll.start;\n const buffer = this.buffer;\n scroll.start -= buffer;\n scroll.end += buffer;\n\n // account for leading slot\n let beforeSize = 0;\n if (this.$refs.before) {\n beforeSize = this.$refs.before.scrollHeight;\n scroll.start -= beforeSize;\n }\n\n // account for trailing slot\n if (this.$refs.after) {\n const afterSize = this.$refs.after.scrollHeight;\n scroll.end += afterSize;\n }\n\n // Variable size mode\n if (itemSize === null) {\n let h;\n let a = 0;\n let b = count - 1;\n let i = ~~(count / 2);\n let oldI;\n\n // Searching for startIndex\n do {\n oldI = i;\n h = sizes[i].accumulator;\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && sizes[i + 1].accumulator > scroll.start) {\n b = i;\n }\n i = ~~((a + b) / 2);\n } while (i !== oldI);\n i < 0 && (i = 0);\n startIndex = i;\n\n // For container style\n totalSize = sizes[count - 1].accumulator;\n\n // Searching for endIndex\n for (endIndex = i; endIndex < count && sizes[endIndex].accumulator < scroll.end; endIndex++);\n if (endIndex === -1) {\n endIndex = items.length - 1;\n } else {\n endIndex++;\n // Bounds\n endIndex > count && (endIndex = count);\n }\n\n // search visible startIndex\n for (visibleStartIndex = startIndex; visibleStartIndex < count && beforeSize + sizes[visibleStartIndex].accumulator < scroll.start; visibleStartIndex++);\n\n // search visible endIndex\n for (visibleEndIndex = visibleStartIndex; visibleEndIndex < count && beforeSize + sizes[visibleEndIndex].accumulator < scroll.end; visibleEndIndex++);\n } else {\n // Fixed size mode\n startIndex = ~~(scroll.start / itemSize * gridItems);\n const remainer = startIndex % gridItems;\n startIndex -= remainer;\n endIndex = Math.ceil(scroll.end / itemSize * gridItems);\n visibleStartIndex = Math.max(0, Math.floor((scroll.start - beforeSize) / itemSize * gridItems));\n visibleEndIndex = Math.floor((scroll.end - beforeSize) / itemSize * gridItems);\n\n // Bounds\n startIndex < 0 && (startIndex = 0);\n endIndex > count && (endIndex = count);\n visibleStartIndex < 0 && (visibleStartIndex = 0);\n visibleEndIndex > count && (visibleEndIndex = count);\n totalSize = Math.ceil(count / gridItems) * itemSize;\n }\n }\n if (endIndex - startIndex > config.itemsLimit) {\n this.itemsLimitError();\n }\n this.totalSize = totalSize;\n let view;\n const continuous = startIndex <= this.$_endIndex && endIndex >= this.$_startIndex;\n if (this.$_continuous !== continuous) {\n if (continuous) {\n views.clear();\n unusedViews.clear();\n for (let i = 0, l = pool.length; i < l; i++) {\n view = pool[i];\n this.unuseView(view);\n }\n }\n this.$_continuous = continuous;\n } else if (continuous) {\n for (let i = 0, l = pool.length; i < l; i++) {\n view = pool[i];\n if (view.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = items.indexOf(view.item);\n }\n\n // Check if index is still in visible range\n if (view.nr.index === -1 || view.nr.index < startIndex || view.nr.index >= endIndex) {\n this.unuseView(view);\n }\n }\n }\n }\n const unusedIndex = continuous ? null : new Map();\n let item, type, unusedPool;\n let v;\n for (let i = startIndex; i < endIndex; i++) {\n item = items[i];\n const key = keyField ? item[keyField] : item;\n if (key == null) {\n throw new Error(`Key is ${key} on item (keyField is '${keyField}')`);\n }\n view = views.get(key);\n if (!itemSize && !sizes[i].size) {\n if (view) this.unuseView(view);\n continue;\n }\n\n // No view assigned to item\n if (!view) {\n if (i === items.length - 1) this.$emit('scroll-end');\n if (i === 0) this.$emit('scroll-start');\n type = item[typeField];\n unusedPool = unusedViews.get(type);\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n view.item = item;\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n } else {\n view = this.addView(pool, i, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n if (!unusedPool || v >= unusedPool.length) {\n view = this.addView(pool, i, item, key, type);\n this.unuseView(view, true);\n unusedPool = unusedViews.get(type);\n }\n view = unusedPool[v];\n view.item = item;\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n unusedIndex.set(type, v + 1);\n v++;\n }\n views.set(key, view);\n } else {\n view.nr.used = true;\n view.item = item;\n }\n\n // Update position\n if (itemSize === null) {\n view.position = sizes[i - 1].accumulator;\n view.offset = 0;\n } else {\n view.position = Math.floor(i / gridItems) * itemSize;\n view.offset = i % gridItems * itemSecondarySize;\n }\n }\n this.$_startIndex = startIndex;\n this.$_endIndex = endIndex;\n if (this.emitUpdate) this.$emit('update', startIndex, endIndex, visibleStartIndex, visibleEndIndex);\n\n // After the user has finished scrolling\n // Sort views so text selection is correct\n clearTimeout(this.$_sortTimer);\n this.$_sortTimer = setTimeout(this.sortViews, 300);\n return {\n continuous\n };\n },\n getListenerTarget() {\n let target = ScrollParent(this.$el);\n // Fix global scroll target for Chrome and Safari\n if (window.document && (target === window.document.documentElement || target === window.document.body)) {\n target = window;\n }\n return target;\n },\n getScroll() {\n const {\n $el: el,\n direction\n } = this;\n const isVertical = direction === 'vertical';\n let scrollState;\n if (this.pageMode) {\n const bounds = el.getBoundingClientRect();\n const boundsSize = isVertical ? bounds.height : bounds.width;\n let start = -(isVertical ? bounds.top : bounds.left);\n let size = isVertical ? window.innerHeight : window.innerWidth;\n if (start < 0) {\n size += start;\n start = 0;\n }\n if (start + size > boundsSize) {\n size = boundsSize - start;\n }\n scrollState = {\n start,\n end: start + size\n };\n } else if (isVertical) {\n scrollState = {\n start: el.scrollTop,\n end: el.scrollTop + el.clientHeight\n };\n } else {\n scrollState = {\n start: el.scrollLeft,\n end: el.scrollLeft + el.clientWidth\n };\n }\n return scrollState;\n },\n applyPageMode() {\n if (this.pageMode) {\n this.addListeners();\n } else {\n this.removeListeners();\n }\n },\n addListeners() {\n this.listenerTarget = this.getListenerTarget();\n this.listenerTarget.addEventListener('scroll', this.handleScroll, supportsPassive ? {\n passive: true\n } : false);\n this.listenerTarget.addEventListener('resize', this.handleResize);\n },\n removeListeners() {\n if (!this.listenerTarget) {\n return;\n }\n this.listenerTarget.removeEventListener('scroll', this.handleScroll);\n this.listenerTarget.removeEventListener('resize', this.handleResize);\n this.listenerTarget = null;\n },\n scrollToItem(index) {\n let scroll;\n if (this.itemSize === null) {\n scroll = index > 0 ? this.sizes[index - 1].accumulator : 0;\n } else {\n scroll = Math.floor(index / this.gridItems) * this.itemSize;\n }\n this.scrollToPosition(scroll);\n },\n scrollToPosition(position) {\n const direction = this.direction === 'vertical' ? {\n scroll: 'scrollTop',\n start: 'top'\n } : {\n scroll: 'scrollLeft',\n start: 'left'\n };\n let viewport;\n let scrollDirection;\n let scrollDistance;\n if (this.pageMode) {\n const viewportEl = ScrollParent(this.$el);\n // HTML doesn't overflow like other elements\n const scrollTop = viewportEl.tagName === 'HTML' ? 0 : viewportEl[direction.scroll];\n const bounds = viewportEl.getBoundingClientRect();\n const scroller = this.$el.getBoundingClientRect();\n const scrollerPosition = scroller[direction.start] - bounds[direction.start];\n viewport = viewportEl;\n scrollDirection = direction.scroll;\n scrollDistance = position + scrollTop + scrollerPosition;\n } else {\n viewport = this.$el;\n scrollDirection = direction.scroll;\n scrollDistance = position;\n }\n viewport[scrollDirection] = scrollDistance;\n },\n itemsLimitError() {\n setTimeout(() => {\n console.log('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', this.$el);\n console.log('Make sure the scroller has a fixed height (or width) and \\'overflow-y\\' (or \\'overflow-x\\') set to \\'auto\\' so it can scroll correctly and only render the items visible in the scroll viewport.');\n });\n throw new Error('Rendered items limit reached');\n },\n sortViews() {\n this.pool.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n }\n // Vue.extend constructor export interop.\n const options = typeof script === 'function' ? script.options : script;\n // render functions\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true;\n // functional template\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n }\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId;\n }\n let hook;\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context = context ||\n // cached call\n this.$vnode && this.$vnode.ssrContext ||\n // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n }\n // inject component styles\n if (style) {\n style.call(this, createInjectorSSR(context));\n }\n // register component module identifier for async chunk inference\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n };\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n const originalRender = options.render;\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n const existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n return script;\n}\n\n/* script */\nconst __vue_script__$2 = script$2;\n/* template */\nvar __vue_render__$1 = function () {\n var _obj, _obj$1;\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"observe-visibility\",\n rawName: \"v-observe-visibility\",\n value: _vm.handleVisibilityChange,\n expression: \"handleVisibilityChange\",\n },\n ],\n staticClass: \"vue-recycle-scroller\",\n class:\n ((_obj = {\n ready: _vm.ready,\n \"page-mode\": _vm.pageMode,\n }),\n (_obj[\"direction-\" + _vm.direction] = true),\n _obj),\n on: {\n \"&scroll\": function ($event) {\n return _vm.handleScroll.apply(null, arguments)\n },\n },\n },\n [\n _vm.$slots.before\n ? _c(\n \"div\",\n { ref: \"before\", staticClass: \"vue-recycle-scroller__slot\" },\n [_vm._t(\"before\")],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n _vm.listTag,\n {\n ref: \"wrapper\",\n tag: \"component\",\n staticClass: \"vue-recycle-scroller__item-wrapper\",\n class: _vm.listClass,\n style:\n ((_obj$1 = {}),\n (_obj$1[_vm.direction === \"vertical\" ? \"minHeight\" : \"minWidth\"] =\n _vm.totalSize + \"px\"),\n _obj$1),\n },\n [\n _vm._l(_vm.pool, function (view) {\n return _c(\n _vm.itemTag,\n _vm._g(\n {\n key: view.nr.id,\n tag: \"component\",\n staticClass: \"vue-recycle-scroller__item-view\",\n class: [\n _vm.itemClass,\n {\n hover: !_vm.skipHover && _vm.hoverKey === view.nr.key,\n },\n ],\n style: _vm.ready\n ? {\n transform:\n \"translate\" +\n (_vm.direction === \"vertical\" ? \"Y\" : \"X\") +\n \"(\" +\n view.position +\n \"px) translate\" +\n (_vm.direction === \"vertical\" ? \"X\" : \"Y\") +\n \"(\" +\n view.offset +\n \"px)\",\n width: _vm.gridItems\n ? (_vm.direction === \"vertical\"\n ? _vm.itemSecondarySize || _vm.itemSize\n : _vm.itemSize) + \"px\"\n : undefined,\n height: _vm.gridItems\n ? (_vm.direction === \"horizontal\"\n ? _vm.itemSecondarySize || _vm.itemSize\n : _vm.itemSize) + \"px\"\n : undefined,\n }\n : null,\n },\n _vm.skipHover\n ? {}\n : {\n mouseenter: function () {\n _vm.hoverKey = view.nr.key;\n },\n mouseleave: function () {\n _vm.hoverKey = null;\n },\n }\n ),\n [\n _vm._t(\"default\", null, {\n item: view.item,\n index: view.nr.index,\n active: view.nr.used,\n }),\n ],\n 2\n )\n }),\n _vm._v(\" \"),\n _vm._t(\"empty\"),\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.$slots.after\n ? _c(\n \"div\",\n { ref: \"after\", staticClass: \"vue-recycle-scroller__slot\" },\n [_vm._t(\"after\")],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"ResizeObserver\", { on: { notify: _vm.handleResize } }),\n ],\n 1\n )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$2 = undefined;\n /* scoped */\n const __vue_scope_id__$2 = undefined;\n /* module identifier */\n const __vue_module_identifier__$2 = undefined;\n /* functional template */\n const __vue_is_functional_template__$2 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$2 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n __vue_inject_styles__$2,\n __vue_script__$2,\n __vue_scope_id__$2,\n __vue_is_functional_template__$2,\n __vue_module_identifier__$2,\n false,\n undefined,\n undefined,\n undefined\n );\n\n//\nvar script$1 = {\n name: 'DynamicScroller',\n components: {\n RecycleScroller: __vue_component__$2\n },\n provide() {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n if (!Array.isArray(entries)) {\n return;\n }\n for (const entry of entries) {\n if (entry.target) {\n const event = new CustomEvent('resize', {\n detail: {\n contentRect: entry.contentRect\n }\n });\n entry.target.dispatchEvent(event);\n }\n }\n });\n });\n }\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver\n };\n },\n inheritAttrs: false,\n props: {\n ...props,\n minItemSize: {\n type: [Number, String],\n required: true\n }\n },\n data() {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n validSizes: {},\n keyField: this.keyField,\n simpleArray: false\n }\n };\n },\n computed: {\n simpleArray,\n itemsWithSize() {\n const result = [];\n const {\n items,\n keyField,\n simpleArray\n } = this;\n const sizes = this.vscrollData.sizes;\n const l = items.length;\n for (let i = 0; i < l; i++) {\n const item = items[i];\n const id = simpleArray ? i : item[keyField];\n let size = sizes[id];\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n result.push({\n item,\n id,\n size\n });\n }\n return result;\n },\n listeners() {\n const listeners = {};\n for (const key in this.$listeners) {\n if (key !== 'resize' && key !== 'visible') {\n listeners[key] = this.$listeners[key];\n }\n }\n return listeners;\n }\n },\n watch: {\n items() {\n this.forceUpdate(false);\n },\n simpleArray: {\n handler(value) {\n this.vscrollData.simpleArray = value;\n },\n immediate: true\n },\n direction(value) {\n this.forceUpdate(true);\n },\n itemsWithSize(next, prev) {\n const scrollTop = this.$el.scrollTop;\n\n // Calculate total diff between prev and next sizes\n // over current scroll top. Then add it to scrollTop to\n // avoid jumping the contents that the user is seeing.\n let prevActiveTop = 0;\n let activeTop = 0;\n const length = Math.min(next.length, prev.length);\n for (let i = 0; i < length; i++) {\n if (prevActiveTop >= scrollTop) {\n break;\n }\n prevActiveTop += prev[i].size || this.minItemSize;\n activeTop += next[i].size || this.minItemSize;\n }\n const offset = activeTop - prevActiveTop;\n if (offset === 0) {\n return;\n }\n this.$el.scrollTop += offset;\n }\n },\n beforeCreate() {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n },\n activated() {\n this.vscrollData.active = true;\n },\n deactivated() {\n this.vscrollData.active = false;\n },\n methods: {\n onScrollerResize() {\n const scroller = this.$refs.scroller;\n if (scroller) {\n this.forceUpdate();\n }\n this.$emit('resize');\n },\n onScrollerVisible() {\n this.$emit('vscroll:update', {\n force: false\n });\n this.$emit('visible');\n },\n forceUpdate(clear = true) {\n if (clear || this.simpleArray) {\n this.vscrollData.validSizes = {};\n }\n this.$emit('vscroll:update', {\n force: true\n });\n },\n scrollToItem(index) {\n const scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n getItemSize(item, index = undefined) {\n const id = this.simpleArray ? index != null ? index : this.items.indexOf(item) : item[this.keyField];\n return this.vscrollData.sizes[id] || 0;\n },\n scrollToBottom() {\n if (this.$_scrollingToBottom) return;\n this.$_scrollingToBottom = true;\n const el = this.$el;\n // Item is inserted to the DOM\n this.$nextTick(() => {\n el.scrollTop = el.scrollHeight + 5000;\n // Item sizes are computed\n const cb = () => {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight + 5000;\n if (this.$_undefinedSizes === 0) {\n this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n requestAnimationFrame(cb);\n });\n }\n }\n};\n\n/* script */\nconst __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__ = function () {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"RecycleScroller\",\n _vm._g(\n _vm._b(\n {\n ref: \"scroller\",\n attrs: {\n items: _vm.itemsWithSize,\n \"min-item-size\": _vm.minItemSize,\n direction: _vm.direction,\n \"key-field\": \"id\",\n \"list-tag\": _vm.listTag,\n \"item-tag\": _vm.itemTag,\n },\n on: { resize: _vm.onScrollerResize, visible: _vm.onScrollerVisible },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function (ref) {\n var itemWithSize = ref.item;\n var index = ref.index;\n var active = ref.active;\n return [\n _vm._t(\"default\", null, null, {\n item: itemWithSize.item,\n index: index,\n active: active,\n itemWithSize: itemWithSize,\n }),\n ]\n },\n },\n ],\n null,\n true\n ),\n },\n \"RecycleScroller\",\n _vm.$attrs,\n false\n ),\n _vm.listeners\n ),\n [\n _vm._v(\" \"),\n _c(\"template\", { slot: \"before\" }, [_vm._t(\"before\")], 2),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"after\" }, [_vm._t(\"after\")], 2),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"empty\" }, [_vm._t(\"empty\")], 2),\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$1 = undefined;\n /* scoped */\n const __vue_scope_id__$1 = undefined;\n /* module identifier */\n const __vue_module_identifier__$1 = undefined;\n /* functional template */\n const __vue_is_functional_template__$1 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$1 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__$1,\n __vue_script__$1,\n __vue_scope_id__$1,\n __vue_is_functional_template__$1,\n __vue_module_identifier__$1,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script = {\n name: 'DynamicScrollerItem',\n inject: ['vscrollData', 'vscrollParent', 'vscrollResizeObserver'],\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true\n },\n watchData: {\n type: Boolean,\n default: false\n },\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true\n },\n index: {\n type: Number,\n default: undefined\n },\n sizeDependencies: {\n type: [Array, Object],\n default: null\n },\n emitResize: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n }\n },\n computed: {\n id() {\n if (this.vscrollData.simpleArray) return this.index;\n // eslint-disable-next-line no-prototype-builtins\n if (this.item.hasOwnProperty(this.vscrollData.keyField)) return this.item[this.vscrollData.keyField];\n throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`);\n },\n size() {\n return this.vscrollData.validSizes[this.id] && this.vscrollData.sizes[this.id] || 0;\n },\n finalActive() {\n return this.active && this.vscrollData.active;\n }\n },\n watch: {\n watchData: 'updateWatchData',\n id() {\n if (!this.size) {\n this.onDataUpdate();\n }\n },\n finalActive(value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n }\n },\n created() {\n if (this.$isServer) return;\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n if (!this.vscrollResizeObserver) {\n for (const k in this.sizeDependencies) {\n this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);\n }\n this.vscrollParent.$on('vscroll:update', this.onVscrollUpdate);\n this.vscrollParent.$on('vscroll:update-size', this.onVscrollUpdateSize);\n }\n },\n mounted() {\n if (this.vscrollData.active) {\n this.updateSize();\n this.observeSize();\n }\n },\n beforeDestroy() {\n this.vscrollParent.$off('vscroll:update', this.onVscrollUpdate);\n this.vscrollParent.$off('vscroll:update-size', this.onVscrollUpdateSize);\n this.unobserveSize();\n },\n methods: {\n updateSize() {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n updateWatchData() {\n if (this.watchData && !this.vscrollResizeObserver) {\n this.$_watchData = this.$watch('item', () => {\n this.onDataUpdate();\n }, {\n deep: true\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n onVscrollUpdate({\n force\n }) {\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n onDataUpdate() {\n this.updateSize();\n },\n computeSize(id) {\n this.$nextTick(() => {\n if (this.id === id) {\n const width = this.$el.offsetWidth;\n const height = this.$el.offsetHeight;\n this.applySize(width, height);\n }\n this.$_pendingSizeUpdate = null;\n });\n },\n applySize(width, height) {\n const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);\n if (size && this.size !== size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n this.$set(this.vscrollData.sizes, this.id, size);\n this.$set(this.vscrollData.validSizes, this.id, true);\n if (this.emitResize) this.$emit('resize', this.id);\n }\n },\n observeSize() {\n if (!this.vscrollResizeObserver || !this.$el.parentNode) return;\n this.vscrollResizeObserver.observe(this.$el.parentNode);\n this.$el.parentNode.addEventListener('resize', this.onResize);\n },\n unobserveSize() {\n if (!this.vscrollResizeObserver) return;\n this.vscrollResizeObserver.unobserve(this.$el.parentNode);\n this.$el.parentNode.removeEventListener('resize', this.onResize);\n },\n onResize(event) {\n const {\n width,\n height\n } = event.detail.contentRect;\n this.applySize(width, height);\n }\n },\n render(h) {\n return h(this.tag, this.$slots.default);\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = undefined;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = /*#__PURE__*/normalizeComponent(\n {},\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction IdState ({\n idProp = vm => vm.item.id\n} = {}) {\n const store = {};\n const vm = new Vue({\n data() {\n return {\n store\n };\n }\n });\n\n // @vue/component\n return {\n data() {\n return {\n idState: null\n };\n },\n created() {\n this.$_id = null;\n if (typeof idProp === 'function') {\n this.$_getId = () => idProp.call(this, this);\n } else {\n this.$_getId = () => this[idProp];\n }\n this.$watch(this.$_getId, {\n handler(value) {\n this.$nextTick(() => {\n this.$_id = value;\n });\n },\n immediate: true\n });\n this.$_updateIdState();\n },\n beforeUpdate() {\n this.$_updateIdState();\n },\n methods: {\n /**\n * Initialize an idState\n * @param {number|string} id Unique id for the data\n */\n $_idStateInit(id) {\n const factory = this.$options.idState;\n if (typeof factory === 'function') {\n const data = factory.call(this, this);\n vm.$set(store, id, data);\n this.$_id = id;\n return data;\n } else {\n throw new Error('[mixin IdState] Missing `idState` function on component definition.');\n }\n },\n /**\n * Ensure idState is created and up-to-date\n */\n $_updateIdState() {\n const id = this.$_getId();\n if (id == null) {\n console.warn(`No id found for IdState with idProp: '${idProp}'.`);\n }\n if (id !== this.$_id) {\n if (!store[id]) {\n this.$_idStateInit(id);\n }\n this.idState = store[id];\n }\n }\n }\n };\n}\n\nfunction registerComponents(Vue, prefix) {\n Vue.component(`${prefix}recycle-scroller`, __vue_component__$2);\n Vue.component(`${prefix}RecycleScroller`, __vue_component__$2);\n Vue.component(`${prefix}dynamic-scroller`, __vue_component__$1);\n Vue.component(`${prefix}DynamicScroller`, __vue_component__$1);\n Vue.component(`${prefix}dynamic-scroller-item`, __vue_component__);\n Vue.component(`${prefix}DynamicScrollerItem`, __vue_component__);\n}\nconst plugin = {\n // eslint-disable-next-line no-undef\n version: \"1.1.2\",\n install(Vue, options) {\n const finalOptions = Object.assign({}, {\n installComponents: true,\n componentsPrefix: ''\n }, options);\n for (const key in finalOptions) {\n if (typeof finalOptions[key] !== 'undefined') {\n config[key] = finalOptions[key];\n }\n }\n if (finalOptions.installComponents) {\n registerComponents(Vue, finalOptions.componentsPrefix);\n }\n }\n};\n\n// Auto-install\nlet GlobalVue = null;\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport { __vue_component__$1 as DynamicScroller, __vue_component__ as DynamicScrollerItem, IdState, __vue_component__$2 as RecycleScroller, plugin as default };\n//# sourceMappingURL=vue-virtual-scroller.esm.js.map\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('td',{staticClass:\"files-list__row-checkbox\"},[(_vm.active)?_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.t('files', 'Select the row for {displayName}', { displayName: _vm.displayName }),\"checked\":_vm.selectedFiles,\"value\":_vm.fileid,\"name\":\"selectedFiles\"},on:{\"update:checked\":_vm.onSelectionChange}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\",on:{\"click\":_vm.execDefaultAction}},[(_vm.source.type === 'folder')?_c('FolderIcon'):(_vm.previewUrl && !_vm.backgroundFailed)?_c('span',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",style:({ backgroundImage: _vm.backgroundImage })}):(_vm.mimeIconUrl)?_c('span',{staticClass:\"files-list__row-icon-preview files-list__row-icon-preview--mime\",style:({ backgroundImage: _vm.mimeIconUrl })}):_c('FileIcon'),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\",attrs:{\"aria-label\":_vm.t('files', 'Favorite')}},[_c('FavoriteIcon',{attrs:{\"aria-hidden\":true}})],1):_vm._e()],1),_vm._v(\" \"),_c('form',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isRenaming),expression:\"isRenaming\"},{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.stopRenaming),expression:\"stopRenaming\"}],staticClass:\"files-list__row-rename\",attrs:{\"aria-hidden\":!_vm.isRenaming,\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"aria-label\":_vm.t('files', 'File name'),\"autofocus\":true,\"minlength\":1,\"required\":true,\"value\":_vm.newName,\"enterkeyhint\":\"done\"},on:{\"update:value\":function($event){_vm.newName=$event},\"keyup\":[_vm.checkInputValidity,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}]}})],1),_vm._v(\" \"),_c('a',_vm._b({directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenaming),expression:\"!isRenaming\"}],ref:\"basename\",attrs:{\"aria-hidden\":_vm.isRenaming},on:{\"click\":_vm.execDefaultAction}},'a',_vm.linkTo,false),[_c('span',{staticClass:\"files-list__row-name-text\"},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.displayName)}}),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.source.extension)}})])])]),_vm._v(\" \"),_c('td',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],staticClass:\"files-list__row-actions\",class:`files-list__row-actions-${_vm.uniqueId}`},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,attrs:{\"current-view\":_vm.currentView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),(_vm.active)?_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.boundariesElement,\"container\":_vm.boundariesElement,\"disabled\":_vm.source._loading,\"force-title\":true,\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-action-' + action.id,attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName([_vm.source], _vm.currentView))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],2),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:({ opacity: _vm.sizeOpacity }),on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.mtime))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView?.id}-${column.id}`,on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.active)?_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}}):_vm._e()],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var $placeholder = Symbol();\n\nvar $fakeParent = Symbol();\n\nvar $nextSiblingPatched = Symbol();\n\nvar $childNodesPatched = Symbol();\n\nvar isFrag = function isFrag(node) {\n return \"frag\" in node;\n};\n\nvar parentNodeDescriptor = {\n get: function get() {\n return this[$fakeParent] || this.parentElement;\n },\n configurable: true\n};\n\nvar patchParentNode = function patchParentNode(node, fakeParent) {\n if ($fakeParent in node) {\n return;\n }\n node[$fakeParent] = fakeParent;\n Object.defineProperty(node, \"parentNode\", parentNodeDescriptor);\n};\n\nvar nextSiblingDescriptor = {\n get: function get() {\n var childNodes = this.parentNode.childNodes;\n var index = childNodes.indexOf(this);\n if (index > -1) {\n return childNodes[index + 1] || null;\n }\n return null;\n }\n};\n\nvar patchNextSibling = function patchNextSibling(node) {\n if ($nextSiblingPatched in node) {\n return;\n }\n node[$nextSiblingPatched] = true;\n Object.defineProperty(node, \"nextSibling\", nextSiblingDescriptor);\n};\n\nvar getTopFragment = function getTopFragment(node, fromParent) {\n while (node.parentNode !== fromParent) {\n var _node = node, parentNode = _node.parentNode;\n if (parentNode) {\n node = parentNode;\n }\n }\n return node;\n};\n\nvar getChildNodes;\n\nvar getChildNodesWithFragments = function getChildNodesWithFragments(node) {\n if (!getChildNodes) {\n var _childNodesDescriptor = Object.getOwnPropertyDescriptor(Node.prototype, \"childNodes\");\n getChildNodes = _childNodesDescriptor.get;\n }\n var realChildNodes = getChildNodes.apply(node);\n var childNodes = Array.from(realChildNodes).map((function(childNode) {\n return getTopFragment(childNode, node);\n }));\n return childNodes.filter((function(childNode, index) {\n return childNode !== childNodes[index - 1];\n }));\n};\n\nvar childNodesDescriptor = {\n get: function get() {\n return this.frag || getChildNodesWithFragments(this);\n }\n};\n\nvar firstChildDescriptor = {\n get: function get() {\n return this.childNodes[0] || null;\n }\n};\n\nfunction hasChildNodes() {\n return this.childNodes.length > 0;\n}\n\nvar patchChildNodes = function patchChildNodes(node) {\n if ($childNodesPatched in node) {\n return;\n }\n node[$childNodesPatched] = true;\n Object.defineProperties(node, {\n childNodes: childNodesDescriptor,\n firstChild: firstChildDescriptor\n });\n node.hasChildNodes = hasChildNodes;\n};\n\nfunction before() {\n var _this$frag$;\n (_this$frag$ = this.frag[0]).before.apply(_this$frag$, arguments);\n}\n\nfunction remove() {\n var frag = this.frag;\n var removed = frag.splice(0, frag.length);\n removed.forEach((function(node) {\n node.remove();\n }));\n}\n\nvar getFragmentLeafNodes = function getFragmentLeafNodes(children) {\n var _Array$prototype;\n return (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, children.map((function(childNode) {\n return isFrag(childNode) ? getFragmentLeafNodes(childNode.frag) : childNode;\n })));\n};\n\nvar addPlaceholder = function addPlaceholder(node, insertBeforeNode) {\n var placeholder = node[$placeholder];\n insertBeforeNode.before(placeholder);\n patchParentNode(placeholder, node);\n node.frag.unshift(placeholder);\n};\n\nfunction removeChild(node) {\n if (isFrag(this)) {\n var hasChildInFragment = this.frag.indexOf(node);\n if (hasChildInFragment > -1) {\n var _this$frag$splice = this.frag.splice(hasChildInFragment, 1), removedNode = _this$frag$splice[0];\n if (this.frag.length === 0) {\n addPlaceholder(this, removedNode);\n }\n node.remove();\n }\n } else {\n var children = getChildNodesWithFragments(this);\n var hasChild = children.indexOf(node);\n if (hasChild > -1) {\n node.remove();\n }\n }\n return node;\n}\n\nfunction insertBefore(insertNode, insertBeforeNode) {\n var _this = this;\n var insertNodes = insertNode.frag || [ insertNode ];\n if (isFrag(this)) {\n if (insertNode[$fakeParent] === this && insertNode.parentElement) {\n return insertNode;\n }\n var _frag = this.frag;\n if (insertBeforeNode) {\n var index = _frag.indexOf(insertBeforeNode);\n if (index > -1) {\n _frag.splice.apply(_frag, [ index, 0 ].concat(insertNodes));\n insertBeforeNode.before.apply(insertBeforeNode, insertNodes);\n }\n } else {\n var _lastNode = _frag[_frag.length - 1];\n _frag.push.apply(_frag, insertNodes);\n _lastNode.after.apply(_lastNode, insertNodes);\n }\n removePlaceholder(this);\n } else if (insertBeforeNode) {\n if (this.childNodes.includes(insertBeforeNode)) {\n insertBeforeNode.before.apply(insertBeforeNode, insertNodes);\n }\n } else {\n this.append.apply(this, insertNodes);\n }\n insertNodes.forEach((function(node) {\n patchParentNode(node, _this);\n }));\n var lastNode = insertNodes[insertNodes.length - 1];\n patchNextSibling(lastNode);\n return insertNode;\n}\n\nfunction appendChild(node) {\n if (node[$fakeParent] === this && node.parentElement) {\n return node;\n }\n var frag = this.frag;\n var lastChild = frag[frag.length - 1];\n lastChild.after(node);\n patchParentNode(node, this);\n removePlaceholder(this);\n frag.push(node);\n return node;\n}\n\nvar removePlaceholder = function removePlaceholder(node) {\n var placeholder = node[$placeholder];\n if (node.frag[0] === placeholder) {\n node.frag.shift();\n placeholder.remove();\n }\n};\n\nvar innerHTMLDescriptor = {\n set: function set(htmlString) {\n var _this2 = this;\n if (this.frag[0] !== this[$placeholder]) {\n this.frag.slice().forEach((function(child) {\n return _this2.removeChild(child);\n }));\n }\n if (htmlString) {\n var domify = document.createElement(\"div\");\n domify.innerHTML = htmlString;\n Array.from(domify.childNodes).forEach((function(node) {\n _this2.appendChild(node);\n }));\n }\n },\n get: function get() {\n return \"\";\n }\n};\n\nvar frag = {\n inserted: function inserted(element) {\n var parentNode = element.parentNode, nextSibling = element.nextSibling, previousSibling = element.previousSibling;\n var childNodes = Array.from(element.childNodes);\n var placeholder = document.createComment(\"\");\n if (childNodes.length === 0) {\n childNodes.push(placeholder);\n }\n element.frag = childNodes;\n element[$placeholder] = placeholder;\n var fragment = document.createDocumentFragment();\n fragment.append.apply(fragment, getFragmentLeafNodes(childNodes));\n element.replaceWith(fragment);\n childNodes.forEach((function(node) {\n patchParentNode(node, element);\n patchNextSibling(node);\n }));\n patchChildNodes(element);\n Object.assign(element, {\n remove: remove,\n appendChild: appendChild,\n insertBefore: insertBefore,\n removeChild: removeChild,\n before: before\n });\n Object.defineProperty(element, \"innerHTML\", innerHTMLDescriptor);\n if (parentNode) {\n Object.assign(parentNode, {\n removeChild: removeChild,\n insertBefore: insertBefore\n });\n patchParentNode(element, parentNode);\n patchChildNodes(parentNode);\n }\n if (nextSibling) {\n patchNextSibling(element);\n }\n if (previousSibling) {\n patchNextSibling(previousSibling);\n }\n },\n unbind: function unbind(element) {\n element.remove();\n }\n};\n\nvar fragment = {\n name: \"Fragment\",\n directives: {\n frag: frag\n },\n render: function render(h) {\n return h(\"div\", {\n directives: [ {\n name: \"frag\"\n } ]\n }, this.$slots[\"default\"]);\n }\n};\n\nexport { fragment as Fragment, frag as default };\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nvar __defProp$b = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, __spreadProps$8(__spreadValues$b({}, options), {\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n }));\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => fn(param)));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nfunction createInjectionState(composable) {\n const key = Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provide(key, state);\n return state;\n };\n const useInjectedState = () => inject(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n return;\n }\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$c.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(b)) {\n if (__propIsEnum$c.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = __spreadValues$a({}, obj);\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(\n () => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0])))\n );\n}\n\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = toValue(ms);\n const maxDuration = toValue(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = defaultValue;\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = defaultValue;\n trigger();\n }, toValue(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction syncRef(left, right, options = {}) {\n var _a, _b;\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options;\n let watchLeft;\n let watchRight;\n const transformLTR = (_a = transform.ltr) != null ? _a : (v) => v;\n const transformRTL = (_b = transform.rtl) != null ? _b : (v) => v;\n if (direction === \"both\" || direction === \"ltr\") {\n watchLeft = watch(\n left,\n (newValue) => right.value = transformLTR(newValue),\n { flush, deep, immediate }\n );\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchRight = watch(\n right,\n (newValue) => left.value = transformRTL(newValue),\n { flush, deep, immediate }\n );\n }\n return () => {\n watchLeft == null ? void 0 : watchLeft();\n watchRight == null ? void 0 : watchRight();\n };\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(\n source,\n (newValue) => targets.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction toRefs(objectRef) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = __spreadProps$7(__spreadValues$9({}, objectRef.value), { [key]: v });\n Object.setPrototypeOf(newObject, objectRef.value);\n objectRef.value = newObject;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n if (getCurrentInstance())\n onBeforeMount(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n if (getCurrentInstance())\n onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n if (getCurrentInstance())\n onMounted(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n if (getCurrentInstance())\n onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(\n () => toValue(\n toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n )\n );\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(\n () => toValue(\n !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n )\n );\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n return computed(\n () => toValue(list).slice(formIndex).some(\n (element, index, array) => comparator(toValue(element), toValue(value), index, toValue(array))\n )\n );\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n return computed(() => {\n const resolved = toValue(list);\n return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue(list).map((element) => toValue(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n const count = ref(initialValue);\n const {\n max = Infinity,\n min = -Infinity\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = initialValue) => {\n initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2;\n return $1 || ((_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) || match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return /* @__PURE__ */ new Date(NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return __spreadValues$8({\n counter,\n reset\n }, controls);\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return __spreadValues$7({\n ready\n }, controls);\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue(truthyValue);\n _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [\n ...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)\n ];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = new Array(oldList.length);\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$5(_a, [\n \"eventFilter\"\n ]);\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchAtMost(source, cb, options) {\n const _a = options, {\n count\n } = _a, watchOptions = __objRest$4(_a, [\n \"count\"\n ]);\n const current = ref(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n const _a = options, {\n debounce = 0,\n maxWait = void 0\n } = _a, watchOptions = __objRest$3(_a, [\n \"debounce\",\n \"maxWait\"\n ]);\n return watchWithFilter(\n source,\n cb,\n __spreadProps$6(__spreadValues$6({}, watchOptions), {\n eventFilter: debounceFilter(debounce, { maxWait })\n })\n );\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n __spreadProps$5(__spreadValues$5({}, options), {\n deep: true\n })\n );\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$2(_a, [\n \"eventFilter\"\n ]);\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n __spreadProps$4(__spreadValues$4({}, watchOptions), { flush: \"sync\" })\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n __spreadProps$3(__spreadValues$3({}, options), {\n immediate: true\n })\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n const _a = options, {\n eventFilter: filter\n } = _a, watchOptions = __objRest$1(_a, [\n \"eventFilter\"\n ]);\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(\n source,\n cb,\n __spreadProps$2(__spreadValues$2({}, watchOptions), {\n eventFilter\n })\n );\n return { stop, pause, resume, isActive };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n const _a = options, {\n throttle = 0,\n trailing = true,\n leading = true\n } = _a, watchOptions = __objRest(_a, [\n \"throttle\",\n \"trailing\",\n \"leading\"\n ]);\n return watchWithFilter(\n source,\n cb,\n __spreadProps$1(__spreadValues$1({}, watchOptions), {\n eventFilter: throttleFilter(throttle, trailing, leading)\n })\n );\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return __spreadProps(__spreadValues({}, res), {\n trigger\n });\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue(item));\n return toValue(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return watch(\n source,\n (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n },\n options\n );\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isClient, isDef, isDefined, isIOS, isObject, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { defineComponent, ref, h, watch, computed, reactive, shallowRef, nextTick, getCurrentInstance, onMounted, watchEffect, toRefs } from 'vue-demi';\nimport { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage as useStorage$1, isClient as isClient$1, useDraggable, useElementBounding, useElementSize as useElementSize$1, useElementVisibility as useElementVisibility$1, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePointerLock, usePreferredColorScheme, usePreferredContrast, usePreferredDark as usePreferredDark$1, usePreferredLanguages, usePreferredReducedMotion, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';\nimport { toValue, isClient, noop, tryOnScopeDispose, isIOS, directiveHooks, pausableWatch, toRef, tryOnMounted, useToggle, notNullish, promiseTimeout, until, useDebounceFn, useThrottleFn } from '@vueuse/shared';\n\nconst OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnClickOutside\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onClickOutside$1(target, (e) => {\n emit(\"trigger\", e);\n }, props.options);\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, options2));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n if (el)\n shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst vOnClickOutside = {\n [directiveHooks.mounted](el, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === \"function\") {\n el.__onClickOutside_stop = onClickOutside(el, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n el.__onClickOutside_stop = onClickOutside(el, handler, Object.assign({ capture }, options));\n }\n },\n [directiveHooks.unmounted](el) {\n el.__onClickOutside_stop();\n }\n};\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$g.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n if (__getOwnPropSymbols$g)\n for (var prop of __getOwnPropSymbols$g(b)) {\n if (__propIsEnum$g.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n }\n return a;\n};\nconst vOnKeyStroke = {\n [directiveHooks.mounted](el, binding) {\n var _a, _b;\n const keys = (_b = (_a = binding.arg) == null ? void 0 : _a.split(\",\")) != null ? _b : true;\n if (typeof binding.value === \"function\") {\n onKeyStroke(keys, binding.value, {\n target: el\n });\n } else {\n const [handler, options] = binding.value;\n onKeyStroke(keys, handler, __spreadValues$e({\n target: el\n }, options));\n }\n }\n};\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n timeout = setTimeout(\n () => handler(ev),\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions);\n useEventListener(elementRef, \"pointerup\", clear, listenerOptions);\n useEventListener(elementRef, \"pointerleave\", clear, listenerOptions);\n}\n\nconst OnLongPress = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnLongPress\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onLongPress(\n target,\n (e) => {\n emit(\"trigger\", e);\n },\n props.options\n );\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nconst vOnLongPress = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n onLongPress(el, binding.value, { modifiers: binding.modifiers });\n else\n onLongPress(el, ...binding.value);\n }\n};\n\nconst UseActiveElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseActiveElement\",\n setup(props, { slots }) {\n const data = reactive({\n element: useActiveElement()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBattery = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBattery\",\n setup(props, { slots }) {\n const data = reactive(useBattery(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBrowserLocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBrowserLocation\",\n setup(props, { slots }) {\n const data = reactive(useBrowserLocation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nvar __defProp$d = Object.defineProperty;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$f.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n if (__getOwnPropSymbols$f)\n for (var prop of __getOwnPropSymbols$f(b)) {\n if (__propIsEnum$f.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n }\n return a;\n};\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const data = (shallow ? shallowRef : ref)(defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n }\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit !== null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return __spreadValues$d(__spreadValues$d({}, rawInit), value);\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n if (getCurrentInstance()) {\n onMounted(() => {\n isMounted.value = true;\n });\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", update);\n else\n mediaQuery.removeListener(update);\n };\n const update = () => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toRef(query).value);\n matches.value = !!(mediaQuery == null ? void 0 : mediaQuery.matches);\n if (!mediaQuery)\n return;\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", update);\n else\n mediaQuery.addListener(update);\n };\n watchEffect(update);\n tryOnScopeDispose(() => cleanup());\n return matches;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$e.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n if (__getOwnPropSymbols$e)\n for (var prop of __getOwnPropSymbols$e(b)) {\n if (__propIsEnum$e.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n }\n return a;\n};\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = __spreadValues$c({\n auto: \"\",\n light: \"light\",\n dark: \"dark\"\n }, options.modes || {});\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(\n () => store.value === \"auto\" ? system.value : store.value\n );\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nconst UseColorMode = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseColorMode\",\n props: [\"selector\", \"attribute\", \"modes\", \"onChanged\", \"storageKey\", \"storage\", \"emitAuto\"],\n setup(props, { slots }) {\n const mode = useColorMode(props);\n const data = reactive({\n mode,\n system: mode.system,\n store: mode.store\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDark\",\n props: [\"selector\", \"attribute\", \"valueDark\", \"valueLight\", \"onChanged\", \"storageKey\", \"storage\"],\n setup(props, { slots }) {\n const isDark = useDark(props);\n const data = reactive({\n isDark,\n toggleDark: useToggle(isDark)\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceMotion\",\n setup(props, { slots }) {\n const data = reactive(useDeviceMotion());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceOrientation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceOrientation\",\n setup(props, { slots }) {\n const data = reactive(useDeviceOrientation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicePixelRatio = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicePixelRatio\",\n setup(props, { slots }) {\n const data = reactive({\n pixelRatio: useDevicePixelRatio()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicesList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicesList\",\n props: [\"onUpdated\", \"requestPermissions\", \"constraints\"],\n setup(props, { slots }) {\n const data = reactive(useDevicesList(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDocumentVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDocumentVisibility\",\n setup(props, { slots }) {\n const data = reactive({\n visibility: useDocumentVisibility()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$b = Object.defineProperty;\nvar __defProps$9 = Object.defineProperties;\nvar __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));\nconst UseDraggable = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDraggable\",\n props: [\n \"storageKey\",\n \"storageType\",\n \"initialValue\",\n \"exact\",\n \"preventDefault\",\n \"stopPropagation\",\n \"pointerTypes\",\n \"as\",\n \"handle\",\n \"axis\",\n \"onStart\",\n \"onMove\",\n \"onEnd\"\n ],\n setup(props, { slots }) {\n const target = ref();\n const handle = computed(() => {\n var _a;\n return (_a = props.handle) != null ? _a : target.value;\n });\n const storageValue = props.storageKey && useStorage$1(\n props.storageKey,\n toValue(props.initialValue) || { x: 0, y: 0 },\n isClient$1 ? props.storageType === \"session\" ? sessionStorage : localStorage : void 0\n );\n const initialValue = storageValue || props.initialValue || { x: 0, y: 0 };\n const onEnd = (position, event) => {\n var _a;\n (_a = props.onEnd) == null ? void 0 : _a.call(props, position, event);\n if (!storageValue)\n return;\n storageValue.value.x = position.x;\n storageValue.value.y = position.y;\n };\n const data = reactive(useDraggable(target, __spreadProps$9(__spreadValues$b({}, props), {\n handle,\n initialValue,\n onEnd\n })));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));\n };\n }\n});\n\nconst UseElementBounding = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementBounding\",\n props: [\"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementBounding(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nconst vElementHover = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const isHovered = useElementHover(el);\n watch(isHovered, (v) => binding.value(v));\n }\n }\n};\n\nconst UseElementSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementSize\",\n props: [\"width\", \"height\", \"box\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementSize$1(target, { width: props.width, height: props.height }, { box: props.box }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$c.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$c.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$1(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(\n () => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]\n );\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = Number.parseFloat(styles.width);\n height.value = Number.parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n return {\n width,\n height\n };\n}\n\nconst vElementSize = {\n [directiveHooks.mounted](el, binding) {\n var _a;\n const handler = typeof binding.value === \"function\" ? binding.value : (_a = binding.value) == null ? void 0 : _a[0];\n const options = typeof binding.value === \"function\" ? [] : binding.value.slice(1);\n const { width, height } = useElementSize(el, ...options);\n watch([width, height], ([width2, height2]) => handler({ width: width2, height: height2 }));\n }\n};\n\nconst UseElementVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementVisibility\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive({\n isVisible: useElementVisibility$1(target)\n });\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n ([{ isIntersecting }]) => {\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window\n }\n );\n return elementIsVisible;\n}\n\nconst vElementVisibility = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const isVisible = useElementVisibility(el);\n watch(isVisible, (v) => handler(v), { immediate: true });\n } else {\n const [handler, options] = binding.value;\n const isVisible = useElementVisibility(el, options);\n watch(isVisible, (v) => handler(v), { immediate: true });\n }\n }\n};\n\nconst UseEyeDropper = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseEyeDropper\",\n props: {\n sRGBHex: String\n },\n setup(props, { slots }) {\n const data = reactive(useEyeDropper());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseFullscreen = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseFullscreen\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useFullscreen(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseGeolocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseGeolocation\",\n props: [\"enableHighAccuracy\", \"maximumAge\", \"timeout\", \"navigator\"],\n setup(props, { slots }) {\n const data = reactive(useGeolocation(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseIdle = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseIdle\",\n props: [\"timeout\", \"events\", \"listenForVisibilityChange\", \"initialState\"],\n setup(props, { slots }) {\n const data = reactive(useIdle(props.timeout, props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$a = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return __spreadProps$8(__spreadValues$a({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n });\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n __spreadValues$9({\n resetOnExecute: true\n }, asyncStateOptions)\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst UseImage = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseImage\",\n props: [\n \"src\",\n \"srcset\",\n \"sizes\",\n \"as\",\n \"alt\",\n \"class\",\n \"loading\",\n \"crossorigin\",\n \"referrerPolicy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useImage(props));\n return () => {\n if (data.isLoading && slots.loading)\n return slots.loading(data);\n else if (data.error && slots.error)\n return slots.error(data.error);\n if (slots.default)\n return slots.default(data);\n return h(props.as || \"img\", props);\n };\n }\n});\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\"\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n const el = target === window ? target.document.documentElement : target === document ? target.documentElement : target;\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === document && !scrollTop)\n scrollTop = document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n const eventTarget = e.target === document ? e.target.documentElement : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (_element)\n setArrivedState(_element);\n }\n };\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100\n } = options;\n const state = reactive(useScroll(\n element,\n __spreadProps$7(__spreadValues$8({}, options), {\n offset: __spreadValues$8({\n [direction]: (_a = options.distance) != null ? _a : 0\n }, options.offset)\n })\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n function checkAndLoad() {\n state.measure();\n const el = toValue(element);\n if (!el)\n return;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? el.scrollHeight <= el.clientHeight : el.scrollWidth <= el.clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], toValue(element)],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst vInfiniteScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useInfiniteScroll(el, binding.value);\n else\n useInfiniteScroll(el, ...binding.value);\n }\n};\n\nconst vIntersectionObserver = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useIntersectionObserver(el, binding.value);\n else\n useIntersectionObserver(el, ...binding.value);\n }\n};\n\nconst UseMouse = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouse\",\n props: [\"touch\", \"resetOnTouchEnds\", \"initialValue\"],\n setup(props, { slots }) {\n const data = reactive(useMouse(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseMouseInElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouseElement\",\n props: [\"handleOutside\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMouseInElement(target, props));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nconst UseMousePressed = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMousePressed\",\n props: [\"touch\", \"initialValue\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMousePressed(__spreadProps$6(__spreadValues$7({}, props), { target })));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseNetwork = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNetwork\",\n setup(props, { slots }) {\n const data = reactive(useNetwork());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nconst UseNow = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNow\",\n props: [\"interval\"],\n setup(props, { slots }) {\n const data = reactive(useNow(__spreadProps$5(__spreadValues$6({}, props), { controls: true })));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseObjectUrl = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseObjectUrl\",\n props: [\n \"object\"\n ],\n setup(props, { slots }) {\n const object = toRef(props, \"object\");\n const url = useObjectUrl(object);\n return () => {\n if (slots.default && url.value)\n return slots.default(url);\n };\n }\n});\n\nvar __defProp$5 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nconst UseOffsetPagination = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOffsetPagination\",\n props: [\n \"total\",\n \"page\",\n \"pageSize\",\n \"onPageChange\",\n \"onPageSizeChange\",\n \"onPageCountChange\"\n ],\n emits: [\n \"page-change\",\n \"page-size-change\",\n \"page-count-change\"\n ],\n setup(props, { slots, emit }) {\n const data = reactive(useOffsetPagination(__spreadProps$4(__spreadValues$5({}, props), {\n onPageChange(...args) {\n var _a;\n (_a = props.onPageChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-change\", ...args);\n },\n onPageSizeChange(...args) {\n var _a;\n (_a = props.onPageSizeChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-size-change\", ...args);\n },\n onPageCountChange(...args) {\n var _a;\n (_a = props.onPageCountChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-count-change\", ...args);\n }\n })));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseOnline = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOnline\",\n setup(props, { slots }) {\n const data = reactive({\n isOnline: useOnline()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePageLeave = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePageLeave\",\n setup(props, { slots }) {\n const data = reactive({\n isLeft: usePageLeave()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nconst UsePointer = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePointer\",\n props: [\n \"pointerTypes\",\n \"initialValue\",\n \"target\"\n ],\n setup(props, { slots }) {\n const el = ref(null);\n const data = reactive(usePointer(__spreadProps$3(__spreadValues$4({}, props), {\n target: props.target === \"self\" ? el : defaultWindow\n })));\n return () => {\n if (slots.default)\n return slots.default(data, { ref: el });\n };\n }\n});\n\nconst UsePointerLock = /* #__PURE__ */ defineComponent({\n name: \"UsePointerLock\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(usePointerLock(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UsePreferredColorScheme = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredColorScheme\",\n setup(props, { slots }) {\n const data = reactive({\n colorScheme: usePreferredColorScheme()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredContrast = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredContrast\",\n setup(props, { slots }) {\n const data = reactive({\n contrast: usePreferredContrast()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredDark\",\n setup(props, { slots }) {\n const data = reactive({\n prefersDark: usePreferredDark$1()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredLanguages = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredLanguages\",\n setup(props, { slots }) {\n const data = reactive({\n languages: usePreferredLanguages()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredReducedMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredReducedMotion\",\n setup(props, { slots }) {\n const data = reactive({\n motion: usePreferredReducedMotion()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(\n () => unrefElement(target),\n (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n },\n { immediate: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nconst UseScreenSafeArea = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseScreenSafeArea\",\n props: {\n top: Boolean,\n right: Boolean,\n bottom: Boolean,\n left: Boolean\n },\n setup(props, { slots }) {\n const {\n top,\n right,\n bottom,\n left\n } = useScreenSafeArea();\n return () => {\n if (slots.default) {\n return h(\"div\", {\n style: {\n paddingTop: props.top ? top.value : \"\",\n paddingRight: props.right ? right.value : \"\",\n paddingBottom: props.bottom ? bottom.value : \"\",\n paddingLeft: props.left ? left.value : \"\",\n boxSizing: \"border-box\",\n maxHeight: \"100vh\",\n maxWidth: \"100vw\",\n overflow: \"auto\"\n }\n }, slots.default());\n }\n };\n }\n});\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nconst vScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const state = useScroll(el, {\n onScroll() {\n handler(state);\n },\n onStop() {\n handler(state);\n }\n });\n } else {\n const [handler, options] = binding.value;\n const state = useScroll(el, __spreadProps$2(__spreadValues$3({}, options), {\n onScroll(e) {\n var _a;\n (_a = options.onScroll) == null ? void 0 : _a.call(options, e);\n handler(state);\n },\n onStop(e) {\n var _a;\n (_a = options.onStop) == null ? void 0 : _a.call(options, e);\n handler(state);\n }\n }));\n }\n }\n};\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n watch(toRef(element), (el) => {\n if (el) {\n const ele = el;\n initialOverflow = ele.style.overflow;\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const ele = toValue(element);\n if (!ele || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n ele,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n ele.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const ele = toValue(element);\n if (!ele || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n ele.style.overflow = initialOverflow;\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction onScrollLock() {\n let isMounted = false;\n const state = ref(false);\n return (el, binding) => {\n state.value = binding.value;\n if (isMounted)\n return;\n isMounted = true;\n const isLocked = useScrollLock(el, binding.value);\n watch(state, (v) => isLocked.value = v);\n };\n}\nconst vScrollLock = onScrollLock();\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nconst UseTimeAgo = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimeAgo\",\n props: [\"time\", \"updateInterval\", \"max\", \"fullDateFormatter\", \"messages\", \"showSecond\"],\n setup(props, { slots }) {\n const data = reactive(useTimeAgo(() => props.time, __spreadProps$1(__spreadValues$2({}, props), { controls: true })));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst UseTimestamp = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimestamp\",\n props: [\"immediate\", \"interval\", \"offset\"],\n setup(props, { slots }) {\n const data = reactive(useTimestamp(__spreadProps(__spreadValues$1({}, props), { controls: true })));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nconst UseVirtualList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseVirtualList\",\n props: [\n \"list\",\n \"options\",\n \"height\"\n ],\n setup(props, { slots, expose }) {\n const { list: listRef } = toRefs(props);\n const { list, containerProps, wrapperProps, scrollTo } = useVirtualList(listRef, props.options);\n expose({ scrollTo });\n typeof containerProps.style === \"object\" && !Array.isArray(containerProps.style) && (containerProps.style.height = props.height || \"300px\");\n return () => h(\n \"div\",\n __spreadValues({}, containerProps),\n [\n h(\n \"div\",\n __spreadValues({}, wrapperProps.value),\n list.value.map((item) => h(\n \"div\",\n { style: { overFlow: \"hidden\", height: item.height } },\n slots.default ? slots.default(item) : \"Please set content!\"\n ))\n )\n ]\n );\n }\n});\n\nconst UseWindowFocus = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowFocus\",\n setup(props, { slots }) {\n const data = reactive({\n focused: useWindowFocus()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseWindowSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowSize\",\n props: [\"initialWidth\", \"initialHeight\"],\n setup(props, { slots }) {\n const data = reactive(useWindowSize(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nexport { OnClickOutside, OnLongPress, UseActiveElement, UseBattery, UseBrowserLocation, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePointerLock, UsePreferredColorScheme, UsePreferredContrast, UsePreferredDark, UsePreferredLanguages, UsePreferredReducedMotion, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, vOnClickOutside as VOnClickOutside, vOnLongPress as VOnLongPress, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vOnClickOutside, vOnKeyStroke, vOnLongPress, vScroll, vScrollLock };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { noop, makeDestructurable, toValue, isClient, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, isObject, objectOmit, promiseTimeout, until, toRef, increaseWithUnit, objectEntries, useTimeoutFn, pausableWatch, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, createSingletonPromise, toRefs, useIntervalFn, notNullish, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, nextTick, reactive, markRaw, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = ref(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nvar __defProp$q = Object.defineProperty;\nvar __defProps$d = Object.defineProperties;\nvar __getOwnPropDescs$d = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$t = Object.getOwnPropertySymbols;\nvar __hasOwnProp$t = Object.prototype.hasOwnProperty;\nvar __propIsEnum$t = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$q = (obj, key, value) => key in obj ? __defProp$q(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$q = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$t.call(b, prop))\n __defNormalProp$q(a, prop, b[prop]);\n if (__getOwnPropSymbols$t)\n for (var prop of __getOwnPropSymbols$t(b)) {\n if (__propIsEnum$t.call(b, prop))\n __defNormalProp$q(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$d = (a, b) => __defProps$d(a, __getOwnPropDescs$d(b));\nfunction createReusableTemplate() {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n return;\n }\n const render = shallowRef();\n const define = /* #__PURE__ */ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /* #__PURE__ */ defineComponent({\n inheritAttrs: false,\n setup(_, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n return (_a = render.value) == null ? void 0 : _a.call(render, __spreadProps$d(__spreadValues$q({}, attrs), { $slots: slots }));\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\n\nfunction createTemplatePromise(options = {}) {\n if (!isVue3) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n return;\n }\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, options2));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n if (el)\n shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nvar __defProp$p = Object.defineProperty;\nvar __defProps$c = Object.defineProperties;\nvar __getOwnPropDescs$c = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$s = Object.getOwnPropertySymbols;\nvar __hasOwnProp$s = Object.prototype.hasOwnProperty;\nvar __propIsEnum$s = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$p = (obj, key, value) => key in obj ? __defProp$p(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$p = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$s.call(b, prop))\n __defNormalProp$p(a, prop, b[prop]);\n if (__getOwnPropSymbols$s)\n for (var prop of __getOwnPropSymbols$s(b)) {\n if (__propIsEnum$s.call(b, prop))\n __defNormalProp$p(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$c = (a, b) => __defProps$c(a, __getOwnPropDescs$c(b));\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keydown\" }));\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keypress\" }));\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$c(__spreadValues$p({}, options), { eventName: \"keyup\" }));\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n timeout = setTimeout(\n () => handler(ev),\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions);\n useEventListener(elementRef, \"pointerup\", clear, listenerOptions);\n useEventListener(elementRef, \"pointerleave\", clear, listenerOptions);\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n if (keyCode >= 97 && keyCode <= 122)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const { window = defaultWindow } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const activeElement = computedWithControl(\n () => null,\n () => document == null ? void 0 : document.activeElement\n );\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n activeElement.trigger();\n }, true);\n useEventListener(window, \"focus\", activeElement.trigger, true);\n }\n return activeElement;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n if (getCurrentInstance()) {\n onMounted(() => {\n isMounted.value = true;\n });\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n const delta = timestamp - previousFrameTimestamp;\n fn({ delta, timestamp });\n previousFrameTimestamp = timestamp;\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n !animate.value && update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n el && update();\n });\n watch(() => keyframes, (value) => {\n !animate.value && update();\n if (!unrefElement(target) && animate.value) {\n animate.value.effect = new KeyframeEffect(\n unrefElement(target),\n toValue(value),\n animateOptions\n );\n }\n }, { deep: true });\n tryOnMounted(() => {\n nextTick(() => update(true));\n });\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (commitStyles)\n animate.value.commitStyles();\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n useEventListener(animate, \"cancel\", syncPause);\n useEventListener(animate, \"finish\", syncPause);\n useEventListener(animate, \"remove\", syncPause);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options = {}) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options;\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(new Array(tasks.length), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nvar __defProp$o = Object.defineProperty;\nvar __defProps$b = Object.defineProperties;\nvar __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$r = Object.getOwnPropertySymbols;\nvar __hasOwnProp$r = Object.prototype.hasOwnProperty;\nvar __propIsEnum$r = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$o = (obj, key, value) => key in obj ? __defProp$o(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$o = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$r.call(b, prop))\n __defNormalProp$o(a, prop, b[prop]);\n if (__getOwnPropSymbols$r)\n for (var prop of __getOwnPropSymbols$r(b)) {\n if (__propIsEnum$r.call(b, prop))\n __defNormalProp$o(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$b = (a, b) => __defProps$b(a, __getOwnPropDescs$b(b));\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return __spreadProps$b(__spreadValues$o({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n });\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = ref(\"\");\n const promise = ref();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery({ navigator = defaultNavigator } = {}) {\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n const charging = ref(false);\n const chargingTime = ref(0);\n const dischargingTime = ref(0);\n const level = ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n for (const event of events)\n useEventListener(battery, event, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef(void 0);\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = ref();\n const isConnected = computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", update);\n else\n mediaQuery.removeListener(update);\n };\n const update = () => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toRef(query).value);\n matches.value = !!(mediaQuery == null ? void 0 : mediaQuery.matches);\n if (!mediaQuery)\n return;\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", update);\n else\n mediaQuery.addListener(update);\n };\n watchEffect(update);\n tryOnScopeDispose(() => cleanup());\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetify = {\n xs: 600,\n sm: 960,\n md: 1264,\n lg: 1904\n};\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 600,\n sm: 1024,\n md: 1440,\n lg: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = breakpoints[k];\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => greaterOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return Object.assign(shortcutMethods, {\n greater(k) {\n return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n },\n greaterOrEqual,\n smaller(k) {\n return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n },\n smallerOrEqual(k) {\n return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n },\n between(a, b) {\n return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n },\n current() {\n const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nvar __defProp$n = Object.defineProperty;\nvar __getOwnPropSymbols$q = Object.getOwnPropertySymbols;\nvar __hasOwnProp$q = Object.prototype.hasOwnProperty;\nvar __propIsEnum$q = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$n = (obj, key, value) => key in obj ? __defProp$n(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$n = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$q.call(b, prop))\n __defNormalProp$n(a, prop, b[prop]);\n if (__getOwnPropSymbols$q)\n for (var prop of __getOwnPropSymbols$q(b)) {\n if (__propIsEnum$q.call(b, prop))\n __defNormalProp$n(a, prop, b[prop]);\n }\n return a;\n};\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation({ window = defaultWindow } = {}) {\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref2] of objectEntries(refs)) {\n watch(ref2, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive(__spreadValues$n({\n trigger,\n state: state2,\n length,\n origin\n }, refs));\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = ref(refValue.value);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const events = [\"copy\", \"cut\"];\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value) {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read) {\n for (const event of events)\n useEventListener(event, updateText);\n }\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value)\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nvar __defProp$m = Object.defineProperty;\nvar __defProps$a = Object.defineProperties;\nvar __getOwnPropDescs$a = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$p = Object.getOwnPropertySymbols;\nvar __hasOwnProp$p = Object.prototype.hasOwnProperty;\nvar __propIsEnum$p = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$m = (obj, key, value) => key in obj ? __defProp$m(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$m = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$p.call(b, prop))\n __defNormalProp$m(a, prop, b[prop]);\n if (__getOwnPropSymbols$p)\n for (var prop of __getOwnPropSymbols$p(b)) {\n if (__propIsEnum$p.call(b, prop))\n __defNormalProp$m(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, __spreadProps$a(__spreadValues$m({}, options), {\n deep,\n immediate\n }));\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nvar __defProp$l = Object.defineProperty;\nvar __getOwnPropSymbols$o = Object.getOwnPropertySymbols;\nvar __hasOwnProp$o = Object.prototype.hasOwnProperty;\nvar __propIsEnum$o = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$l = (obj, key, value) => key in obj ? __defProp$l(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$l = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$o.call(b, prop))\n __defNormalProp$l(a, prop, b[prop]);\n if (__getOwnPropSymbols$o)\n for (var prop of __getOwnPropSymbols$o(b)) {\n if (__propIsEnum$o.call(b, prop))\n __defNormalProp$l(a, prop, b[prop]);\n }\n return a;\n};\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const data = (shallow ? shallowRef : ref)(defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n }\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit !== null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return __spreadValues$l(__spreadValues$l({}, rawInit), value);\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$k = Object.defineProperty;\nvar __getOwnPropSymbols$n = Object.getOwnPropertySymbols;\nvar __hasOwnProp$n = Object.prototype.hasOwnProperty;\nvar __propIsEnum$n = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$k = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$n.call(b, prop))\n __defNormalProp$k(a, prop, b[prop]);\n if (__getOwnPropSymbols$n)\n for (var prop of __getOwnPropSymbols$n(b)) {\n if (__propIsEnum$n.call(b, prop))\n __defNormalProp$k(a, prop, b[prop]);\n }\n return a;\n};\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = __spreadValues$k({\n auto: \"\",\n light: \"light\",\n dark: \"dark\"\n }, options.modes || {});\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(\n () => store.value === \"auto\" ? system.value : store.value\n );\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nvar __getOwnPropSymbols$m = Object.getOwnPropertySymbols;\nvar __hasOwnProp$m = Object.prototype.hasOwnProperty;\nvar __propIsEnum$m = Object.prototype.propertyIsEnumerable;\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$m.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$m)\n for (var prop of __getOwnPropSymbols$m(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$m.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$3(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(\n () => unrefElement(target),\n (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n },\n { immediate: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nfunction useCurrentElement() {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev\n };\n}\n\nvar __defProp$j = Object.defineProperty;\nvar __defProps$9 = Object.defineProperties;\nvar __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$l = Object.getOwnPropertySymbols;\nvar __hasOwnProp$l = Object.prototype.hasOwnProperty;\nvar __propIsEnum$l = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$j = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$l.call(b, prop))\n __defNormalProp$j(a, prop, b[prop]);\n if (__getOwnPropSymbols$l)\n for (var prop of __getOwnPropSymbols$l(b)) {\n if (__propIsEnum$l.call(b, prop))\n __defNormalProp$j(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode(__spreadProps$9(__spreadValues$j({}, options), {\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n }));\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (mode.system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Infinity);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nvar __defProp$i = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$k = Object.getOwnPropertySymbols;\nvar __hasOwnProp$k = Object.prototype.hasOwnProperty;\nvar __propIsEnum$k = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$i = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$k.call(b, prop))\n __defNormalProp$i(a, prop, b[prop]);\n if (__getOwnPropSymbols$k)\n for (var prop of __getOwnPropSymbols$k(b)) {\n if (__propIsEnum$k.call(b, prop))\n __defNormalProp$i(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, __spreadProps$8(__spreadValues$i({}, options), { clone: options.clone || deep, setSource }));\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return __spreadProps$8(__spreadValues$i({}, manualHistory), {\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n });\n}\n\nvar __defProp$h = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$j = Object.getOwnPropertySymbols;\nvar __hasOwnProp$j = Object.prototype.hasOwnProperty;\nvar __propIsEnum$j = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$h = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n if (__getOwnPropSymbols$j)\n for (var prop of __getOwnPropSymbols$j(b)) {\n if (__propIsEnum$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, __spreadProps$7(__spreadValues$h({}, options), { eventFilter: filter }));\n return __spreadValues$h({}, history);\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = bypassFilter\n } = options;\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = ref(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = ref(false);\n const alpha = ref(null);\n const beta = ref(null);\n const gamma = ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio({\n window = defaultWindow\n} = {}) {\n const pixelRatio = ref(1);\n if (window) {\n let observe = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe, { once: true });\n }, cleanup = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe);\n };\n let media;\n observe();\n tryOnScopeDispose(cleanup);\n }\n return { pixelRatio };\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n let permissionStatus;\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = ref();\n const onChange = () => {\n if (permissionStatus)\n state.value = permissionStatus.state;\n };\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus) {\n try {\n permissionStatus = await navigator.permissions.query(desc);\n useEventListener(permissionStatus, \"change\", onChange);\n onChange();\n } catch (e) {\n state.value = \"prompt\";\n }\n }\n return permissionStatus;\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = ref(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility({ document = defaultDocument } = {}) {\n if (!document)\n return ref(\"visible\");\n const visibility = ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nvar __defProp$g = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$i = Object.getOwnPropertySymbols;\nvar __hasOwnProp$i = Object.prototype.hasOwnProperty;\nvar __propIsEnum$i = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$g = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n if (__getOwnPropSymbols$i)\n for (var prop of __getOwnPropSymbols$i(b)) {\n if (__propIsEnum$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n handle: draggingHandle = target\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n if (!filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const rect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\")\n x = e.clientX - pressedDelta.value.x;\n if (axis === \"y\" || axis === \"both\")\n y = e.clientY - pressedDelta.value.y;\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = { capture: (_b = options.capture) != null ? _b : true };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return __spreadProps$6(__spreadValues$g({}, toRefs(position)), {\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n });\n}\n\nfunction useDropZone(target, onDrop) {\n const isOverDropZone = ref(false);\n let counter = 0;\n if (isClient) {\n useEventListener(target, \"dragenter\", (event) => {\n event.preventDefault();\n counter += 1;\n isOverDropZone.value = true;\n });\n useEventListener(target, \"dragover\", (event) => {\n event.preventDefault();\n });\n useEventListener(target, \"dragleave\", (event) => {\n event.preventDefault();\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n });\n useEventListener(target, \"drop\", (event) => {\n var _a, _b;\n event.preventDefault();\n counter = 0;\n isOverDropZone.value = false;\n const files = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n onDrop == null ? void 0 : onDrop(files.length === 0 ? null : files);\n });\n }\n return {\n isOverDropZone\n };\n}\n\nvar __getOwnPropSymbols$h = Object.getOwnPropertySymbols;\nvar __hasOwnProp$h = Object.prototype.hasOwnProperty;\nvar __propIsEnum$h = Object.prototype.propertyIsEnumerable;\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$h.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$h)\n for (var prop of __getOwnPropSymbols$h(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$h.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, [\"window\"]);\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(\n () => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]\n );\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true\n } = options;\n const height = ref(0);\n const bottom = ref(0);\n const left = ref(0);\n const right = ref(0);\n const top = ref(0);\n const width = ref(0);\n const x = ref(0);\n const y = ref(0);\n function update() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nvar __defProp$f = Object.defineProperty;\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$f = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$g.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n if (__getOwnPropSymbols$g)\n for (var prop of __getOwnPropSymbols$g(b)) {\n if (__propIsEnum$g.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n }\n return a;\n};\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = ref(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return __spreadValues$f({\n isSupported,\n element\n }, controls);\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = Number.parseFloat(styles.width);\n height.value = Number.parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n return {\n width,\n height\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n ([{ isIntersecting }]) => {\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n const event = ref(null);\n const data = ref(null);\n const status = ref(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const {\n withCredentials = false\n } = options;\n const close = () => {\n if (eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n }\n };\n const es = new EventSource(url, { withCredentials });\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n eventSource,\n event,\n data,\n status,\n error,\n close\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`).forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$f.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n if (__getOwnPropSymbols$f)\n for (var prop of __getOwnPropSymbols$f(b)) {\n if (__propIsEnum$f.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\");\n}\nfunction isAbsoluteURL(url) {\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback)\n return __spreadValues$e(__spreadValues$e({}, ctx), await callback(ctx));\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = __spreadValues$e(__spreadValues$e({}, ctx), await callback(ctx));\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, options), args[0]), {\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n });\n } else {\n fetchOptions = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, fetchOptions), args[0]), {\n headers: __spreadValues$e(__spreadValues$e({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})\n });\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = __spreadProps$5(__spreadValues$e(__spreadValues$e({}, options), args[1]), {\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n });\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = { immediate: true, refetch: false, timeout: 0 };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = __spreadValues$e(__spreadValues$e({}, options), args[0]);\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = __spreadValues$e(__spreadValues$e({}, options), args[1]);\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = ref(false);\n const isFetching = ref(false);\n const aborted = ref(false);\n const statusCode = ref(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = __spreadProps$5(__spreadValues$e({}, fetchOptions), {\n signal: controller.signal\n });\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n const execute = async (throwOnFailed = false) => {\n var _a2;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n const payload = toValue(config.payload);\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: __spreadValues$e(__spreadValues$e({}, defaultFetchOptions), fetchOptions),\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return new Promise((resolve, reject) => {\n var _a3;\n fetch(\n context.url,\n __spreadProps$5(__spreadValues$e(__spreadValues$e({}, defaultFetchOptions), context.options), {\n headers: __spreadValues$e(__spreadValues$e({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers))\n })\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch)\n ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse }));\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return resolve(fetchResponse);\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError)\n ({ error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value }));\n error.value = errorData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n return reject(fetchError);\n return resolve(null);\n }).finally(() => {\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished,\n statusCode,\n response,\n error,\n data,\n isFetching,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n const rawPayload = toValue(config.payload);\n if (!payloadType && rawPayload && Object.getPrototypeOf(rawPayload) === Object.prototype && !(rawPayload instanceof FormData))\n config.payloadType = \"json\";\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return __spreadProps$5(__spreadValues$e({}, shell), {\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n });\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nvar __defProp$d = Object.defineProperty;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$e.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n if (__getOwnPropSymbols$e)\n for (var prop of __getOwnPropSymbols$e(b)) {\n if (__propIsEnum$e.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n }\n return a;\n};\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(null);\n const { on: onChange, trigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n trigger(files.value);\n };\n }\n const reset = () => {\n files.value = null;\n if (input)\n input.value = \"\";\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = __spreadValues$d(__spreadValues$d(__spreadValues$d({}, DEFAULT_OPTIONS), options), localOptions);\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onChange\n };\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n }\n return a;\n};\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = ref();\n const data = ref();\n const file = ref();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker(__spreadValues$c(__spreadValues$c({}, toValue(options)), _options));\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$c(__spreadValues$c({}, options), _options));\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$c(__spreadValues$c({}, options), _options));\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false } = options;\n const innerFocused = ref(false);\n const targetElement = computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", () => innerFocused.value = true);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n const activeElement = useActiveElement(options);\n const targetElement = computed(() => unrefElement(target));\n const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n });\n const isFullscreen = ref(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(\n () => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0\n );\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n useEventListener(document, eventHandlers, handlerCallback, false);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nvar __defProp$b = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$c.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(b)) {\n if (__propIsEnum$c.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return __spreadProps$4(__spreadValues$b({}, gamepad), {\n id: gamepad.id,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n });\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad) {\n const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n if (index > -1)\n gamepads.value[index] = stateFromGamepad(gamepad);\n }\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n if (_gamepads) {\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad)\n onGamepadConnected(gamepad);\n }\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = ref(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Infinity,\n longitude: Infinity,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = ref(initialState);\n const lastActive = ref(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n __spreadValues$a({\n resetOnExecute: true\n }, asyncStateOptions)\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\"\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n const el = target === window ? target.document.documentElement : target === document ? target.documentElement : target;\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === document && !scrollTop)\n scrollTop = document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n const eventTarget = e.target === document ? e.target.documentElement : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (_element)\n setArrivedState(_element);\n }\n };\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100\n } = options;\n const state = reactive(useScroll(\n element,\n __spreadProps$3(__spreadValues$9({}, options), {\n offset: __spreadValues$9({\n [direction]: (_a = options.distance) != null ? _a : 0\n }, options.offset)\n })\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n function checkAndLoad() {\n state.measure();\n const el = toValue(element);\n if (!el)\n return;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? el.scrollHeight <= el.clientHeight : el.scrollWidth <= el.clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], toValue(element)],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n options = __spreadValues$8(__spreadValues$8({}, defaultOptions), options);\n const {\n document = defaultDocument\n } = options;\n const currentTime = ref(0);\n const duration = ref(0);\n const seeking = ref(false);\n const volume = ref(1);\n const waiting = ref(false);\n const ended = ref(false);\n const playing = ref(false);\n const rate = ref(1);\n const stalled = ref(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = ref(-1);\n const isPictureInPicture = ref(false);\n const muted = ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n tryOnScopeDispose(() => {\n const el = toValue(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n });\n useEventListener(target, \"loadeddata\", () => waiting.value = false);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n });\n useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on\n };\n}\n\nfunction getMapVue2Compat() {\n const data = reactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => hasOwn(data, key),\n delete: (key) => del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n del(data, key);\n });\n }\n };\n}\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return reactive(options.cache);\n if (isVue2)\n return getMapVue2Compat();\n return reactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst BuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n eventFilter\n } = options;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const extractor = typeof type === \"function\" ? type : BuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n if (target) {\n useEventListener(target, \"mousemove\", mouseHandlerWrapper, { passive: true });\n useEventListener(target, \"dragover\", mouseHandlerWrapper, { passive: true });\n if (touch && type !== \"movement\") {\n useEventListener(target, \"touchstart\", touchHandlerWrapper, { passive: true });\n useEventListener(target, \"touchmove\", touchHandlerWrapper, { passive: true });\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, { passive: true });\n }\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const { x, y, sourceType } = useMouse(options);\n const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = ref(0);\n const elementY = ref(0);\n const elementPositionX = ref(0);\n const elementPositionY = ref(0);\n const elementHeight = ref(0);\n const elementWidth = ref(0);\n const isOutside = ref(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el)\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + window.pageXOffset;\n elementPositionY.value = top + window.pageYOffset;\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = ref(initialValue);\n const sourceType = ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true });\n useEventListener(window, \"mouseup\", onReleased, { passive: true });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"drop\", onReleased, { passive: true });\n useEventListener(window, \"dragend\", onReleased, { passive: true });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true });\n useEventListener(window, \"touchend\", onReleased, { passive: true });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = ref(void 0);\n const onlineAt = ref(void 0);\n const downlink = ref(void 0);\n const downlinkMax = ref(void 0);\n const rtt = ref(void 0);\n const effectiveType = ref(void 0);\n const type = ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n onlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return __spreadValues$7({\n now\n }, controls);\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Infinity,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Infinity);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page))\n syncRef(page, currentPage);\n if (isRef(pageSize))\n syncRef(pageSize, currentPageSize);\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n return \"deviceOrientation\";\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = -orientation.beta / 90;\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = orientation.gamma / 90;\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction usePerformanceObserver(options, callback) {\n const _a = options, {\n window = defaultWindow,\n immediate = true\n } = _a, performanceOptions = __objRest$1(_a, [\n \"window\",\n \"immediate\"\n ]);\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n useEventListener(target, \"pointerdown\", handler, { passive: true });\n useEventListener(target, \"pointermove\", handler, { passive: true });\n useEventListener(target, \"pointerleave\", () => isInside.value = false, { passive: true });\n }\n return __spreadProps$2(__spreadValues$6({}, toRefs(state)), {\n isInside\n });\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument, pointerLockOptions } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = ref();\n const triggerElement = ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e, options2) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = ref(false);\n const isPointerDown = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n })\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (!isSupported.value)\n return Promise.reject(new Error(\"Not supported\"));\n return screenOrientation.lock(type);\n };\n const unlockOrientation = () => {\n if (isSupported.value)\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n watch(toRef(element), (el) => {\n if (el) {\n const ele = el;\n initialOverflow = ele.style.overflow;\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const ele = toValue(element);\n if (!ele || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n ele,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n ele.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const ele = toValue(element);\n if (!ele || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n ele.style.overflow = initialOverflow;\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = __spreadValues$5(__spreadValues$5({}, toValue(shareOptions)), toValue(overrideOptions));\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = ref(false);\n const isFinal = ref(false);\n const result = ref(\"\");\n const error = shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.onstart = () => {\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const transcript = Array.from(event.results).map((result2) => {\n isFinal.value = result2.isFinal;\n return result2[0];\n }).map((result2) => result2.transcript).join(\"\");\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = pitch;\n utterance2.rate = rate;\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n utterance && synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = __spreadValues$4(__spreadValues$4({}, rawInit), value);\n else\n data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.type = \"text/css\";\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, \"touchend\", onTouchEnd, listenerOptions),\n useEventListener(target, \"touchcancel\", onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", noop, optionsBlock);\n document.removeEventListener(\"x\", noop);\n return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n const ranges = new Array(rangeCount);\n for (let i = 0; i < rangeCount; i++) {\n const range = selection.getRangeAt(i);\n ranges[i] = range;\n }\n return ranges;\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n const textarea = ref(options == null ? void 0 : options.element);\n const input = ref(options == null ? void 0 : options.input);\n const textareaScrollHeight = ref(1);\n function triggerResize() {\n var _a, _b;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style.height = \"1px\";\n textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n if (options == null ? void 0 : options.styleTarget)\n toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style.height = height;\n (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n useResizeObserver(textarea, () => triggerResize());\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, __spreadProps$1(__spreadValues$3({}, options), { eventFilter: filter }));\n return __spreadValues$3({}, history);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Infinity, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, [\"now\"]);\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return __spreadValues$2({\n timeAgo\n }, controls);\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval);\n const isActive = ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$1({\n timestamp: ts\n }, controls);\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b;\n const {\n document = defaultDocument\n } = options;\n const title = toRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n const isReadonly = newTitle && typeof newTitle === \"function\";\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (t, o) => {\n if (t !== o && document)\n document.title = format(typeof t === \"string\" ? t : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_b = document.head) == null ? void 0 : _b.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n return title;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, __spreadProps(__spreadValues({}, options), {\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n }));\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n watch(\n () => props[key],\n (v) => proxy.value = cloneFn(v)\n );\n watch(\n proxy,\n (v) => {\n if (v !== props[key] || deep)\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props)\n ret[key] = useVModel(props, key, emit, options);\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = ref(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n watch([size.width, size.height, list], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = ref(false);\n async function onVisibilityChange() {\n if (!isSupported.value || !wakeLock)\n return;\n if (document && document.visibilityState === \"visible\")\n wakeLock = await navigator.wakeLock.request(\"screen\");\n isActive.value = !wakeLock.released;\n }\n if (document)\n useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n async function request(type) {\n if (!isSupported.value)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported.value || !wakeLock)\n return;\n await wakeLock.release();\n isActive.value = !wakeLock.released;\n wakeLock = null;\n }\n return {\n isSupported,\n isActive,\n request,\n release\n };\n}\n\nfunction useWebNotification(defaultOptions = {}) {\n const {\n window = defaultWindow\n } = defaultOptions;\n const isSupported = useSupported(() => !!window && \"Notification\" in window);\n const notification = ref(null);\n const requestPermission = async () => {\n if (!isSupported.value)\n return;\n if (\"permission\" in Notification && Notification.permission !== \"denied\")\n await Notification.requestPermission();\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value)\n return;\n await requestPermission();\n const options = Object.assign({}, defaultOptions, overrides);\n notification.value = new Notification(options.title || \"\", options);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n tryOnMounted(async () => {\n if (isSupported.value)\n await requestPermission();\n });\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = ref(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const close = (code = 1e3, reason) => {\n if (!wsRef.value)\n return;\n explicitlyClosed = true;\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n wsRef.value = void 0;\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === message)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n useEventListener(window, \"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n watch(urlRef, open, { immediate: true });\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction depsParser(deps) {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = ref(\"PENDING\");\n const promise = ref({});\n const timeoutId = ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n promise.value = {\n resolve,\n reject\n };\n worker.value && worker.value.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus({ window = defaultWindow } = {}) {\n if (!window)\n return ref(false);\n const focused = ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll({ window = defaultWindow } = {}) {\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const x = ref(window.scrollX);\n const y = ref(window.scrollY);\n useEventListener(\n window,\n \"scroll\",\n () => {\n x.value = window.scrollX;\n y.value = window.scrollY;\n },\n {\n capture: false,\n passive: true\n }\n );\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Infinity,\n initialHeight = Infinity,\n listenOrientation = true,\n includeScrollbar = true\n } = options;\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=5c8d96c6&\"\nimport script from \"./File.vue?vue&type=script&lang=js&\"\nexport * from \"./File.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nexport const hashCode = function (str) {\n return str.split('').reduce(function (a, b) {\n a = ((a << 5) - a) + b.charCodeAt(0);\n return a & a;\n }, 0);\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=508fb1f6&\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"custom-svg-icon\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomSvgIconRender.vue?vue&type=template&id=93e9b2f4&scoped=true&\"\nimport script from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93e9b2f4\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=324501a3&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=324501a3&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=324501a3&scoped=true&\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=324501a3&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"324501a3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('CustomSvgIconRender',{staticClass:\"favorite-marker-icon\",attrs:{\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n */\nexport const useKeyboardStore = function (...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nexport const useRenamingStore = function (...args) {\n const store = defineStore('renaming', {\n state: () => ({\n renamingNode: undefined,\n newName: '',\n }),\n });\n const renamingStore = store(...args);\n // Make sure we only register the listeners once\n if (!renamingStore._initialized) {\n subscribe('files:node:rename', function (node) {\n renamingStore.renamingNode = node;\n renamingStore.newName = node.basename;\n });\n renamingStore._initialized = true;\n }\n return renamingStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n// The preview service worker cache name (see webpack config)\nconst SWCacheName = 'previews';\n/**\n * Check if the preview is already cached by the service worker\n */\nexport const isCachedPreview = function (previewUrl) {\n return caches.open(SWCacheName)\n .then(function (cache) {\n return cache.match(previewUrl)\n .then(function (response) {\n return !!response;\n });\n });\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=0&id=5c58a5a9&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=0&id=5c58a5a9&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=5c58a5a9&prod&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=5c58a5a9&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=5c58a5a9&scoped=true&\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileEntry.vue?vue&type=style&index=0&id=5c58a5a9&prod&scoped=true&lang=scss&\"\nimport style1 from \"./FileEntry.vue?vue&type=style&index=1&id=5c58a5a9&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c58a5a9\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=style&index=0&id=2201dce1&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=style&index=0&id=2201dce1&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListFooter.vue?vue&type=template&id=2201dce1&scoped=true&\"\nimport script from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListFooter.vue?vue&type=style&index=0&id=2201dce1&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2201dce1\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue';\nexport default Vue.extend({\n data() {\n return {\n filesListWidth: null,\n };\n },\n created() {\n const fileListEl = document.querySelector('#app-content-vue');\n this.$resizeObserver = new ResizeObserver((entries) => {\n if (entries.length > 0 && entries[0].target === fileListEl) {\n this.filesListWidth = entries[0].contentRect.width;\n }\n });\n this.$resizeObserver.observe(fileListEl);\n },\n beforeDestroy() {\n this.$resizeObserver.disconnect();\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('th',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"colspan\":\"2\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-title\":true,\"inline\":_vm.inlineActions,\"menu-title\":_vm.inlineActions <= 1 ? _vm.t('files', 'Actions') : null,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderActions.vue?vue&type=template&id=03e57b1e&scoped=true&\"\nimport script from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"03e57b1e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuDown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuDown.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./MenuDown.vue?vue&type=template&id=49c08fbe&\"\nimport script from \"./MenuDown.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuDown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon menu-down-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,10L12,15L17,10H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuUp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MenuUp.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./MenuUp.vue?vue&type=template&id=52b567ec&\"\nimport script from \"./MenuUp.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuUp.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon menu-up-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,15L12,10L17,15H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue';\nimport { mapState } from 'pinia';\nimport { useViewConfigStore } from '../store/viewConfig';\nexport default Vue.extend({\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n currentView() {\n return this.$navigation.active;\n },\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.currentView.id)?.sorting_mode\n || this.currentView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction;\n return sortingDirection === 'asc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.currentView.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.currentView.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:{'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode},attrs:{\"aria-label\":_vm.sortAriaLabel(_vm.name),\"type\":\"tertiary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy(_vm.mode)}}},[(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}):_c('MenuDown',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name)+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderButton.vue?vue&type=template&id=e85a09d2&\"\nimport script from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\"},[_c('NcCheckboxRadioSwitch',_vm._b({on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),(!_vm.isNoneSelected)?_c('FilesListHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}}):[_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy('basename')}}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{'files-list__column--sortable': _vm.isSizeAvailable}},[_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{'files-list__column--sortable': _vm.isMtimeAvailable}},[_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[(!!column.sort)?_c('FilesListHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\\t\")])],1)})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=style&index=0&id=3e864709&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=style&index=0&id=3e864709&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=3e864709&scoped=true&\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeader.vue?vue&type=style&index=0&id=3e864709&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3e864709\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RecycleScroller',{ref:\"recycleScroller\",staticClass:\"files-list\",attrs:{\"key-field\":\"source\",\"items\":_vm.nodes,\"item-size\":55,\"table-mode\":true,\"item-class\":\"files-list__row\",\"item-tag\":\"tr\",\"list-class\":\"files-list__body\",\"list-tag\":\"tbody\",\"role\":\"table\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, active, index }){return [_c('FileEntry',{attrs:{\"active\":active,\"index\":index,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"files-list-width\":_vm.filesListWidth,\"nodes\":_vm.nodes,\"source\":item}})]}},{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.currentView.caption || _vm.t('files', 'List of files and folders.'))+\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListHeader',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"after\",fn:function(){return [_c('FilesListFooter',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=e796f704&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=e796f704&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=e796f704&scoped=true&\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=e796f704&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e796f704\",\n null\n \n)\n\nexport default component.exports","import isSvg from 'is-svg';\nimport logger from '../logger.js';\nexport default class {\n _views = [];\n _currentView = null;\n constructor() {\n logger.debug('Navigation service initialized');\n }\n register(view) {\n try {\n isValidNavigation(view);\n isUniqueNavigation(view, this._views);\n }\n catch (e) {\n if (e instanceof Error) {\n logger.error(e.message, { view });\n }\n throw e;\n }\n if (view.legacy) {\n logger.warn('Legacy view detected, please migrate to Vue');\n }\n if (view.iconClass) {\n view.legacy = true;\n }\n this._views.push(view);\n }\n remove(id) {\n const index = this._views.findIndex(view => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n }\n }\n get views() {\n return this._views;\n }\n setActive(view) {\n this._currentView = view;\n }\n get active() {\n return this._currentView;\n }\n}\n/**\n * Make sure the given view is unique\n * and not already registered.\n */\nconst isUniqueNavigation = function (view, views) {\n if (views.find(search => search.id === view.id)) {\n throw new Error(`Navigation id ${view.id} is already registered`);\n }\n return true;\n};\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Navigation interface requirements.\n */\nconst isValidNavigation = function (view) {\n if (!view.id || typeof view.id !== 'string') {\n throw new Error('Navigation id is required and must be a string');\n }\n if (!view.name || typeof view.name !== 'string') {\n throw new Error('Navigation name is required and must be a string');\n }\n if (view.columns && view.columns.length > 0\n && (!view.caption || typeof view.caption !== 'string')) {\n throw new Error('Navigation caption is required for top-level views and must be a string');\n }\n /**\n * Legacy handle their content and icon differently\n * TODO: remove when support for legacy views is removed\n */\n if (!view.legacy) {\n if (!view.getContents || typeof view.getContents !== 'function') {\n throw new Error('Navigation getContents is required and must be a function');\n }\n if (!view.icon || typeof view.icon !== 'string' || !isSvg(view.icon)) {\n throw new Error('Navigation icon is required and must be a valid svg string');\n }\n }\n if (!('order' in view) || typeof view.order !== 'number') {\n throw new Error('Navigation order is required and must be a number');\n }\n // Optional properties\n if (view.columns) {\n view.columns.forEach(isValidColumn);\n }\n if (view.emptyView && typeof view.emptyView !== 'function') {\n throw new Error('Navigation emptyView must be a function');\n }\n if (view.parent && typeof view.parent !== 'string') {\n throw new Error('Navigation parent must be a string');\n }\n if ('sticky' in view && typeof view.sticky !== 'boolean') {\n throw new Error('Navigation sticky must be a boolean');\n }\n if ('expanded' in view && typeof view.expanded !== 'boolean') {\n throw new Error('Navigation expanded must be a boolean');\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== 'string') {\n throw new Error('Navigation defaultSortKey must be a string');\n }\n return true;\n};\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Column interface requirements.\n */\nconst isValidColumn = function (column) {\n if (!column.id || typeof column.id !== 'string') {\n throw new Error('A column id is required');\n }\n if (!column.title || typeof column.title !== 'string') {\n throw new Error('A column title is required');\n }\n if (!column.render || typeof column.render !== 'function') {\n throw new Error('A render function is required');\n }\n // Optional properties\n if (column.sort && typeof column.sort !== 'function') {\n throw new Error('Column sortFunction must be a function');\n }\n if (column.summary && typeof column.summary !== 'function') {\n throw new Error('Column summary must be a function');\n }\n return true;\n};\n","import {XMLParser, XMLValidator} from 'fast-xml-parser';\n\nexport default function isSvg(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\tstring = string.trim();\n\n\tif (string.length === 0) {\n\t\treturn false;\n\t}\n\n\t// Has to be `!==` as it can also return an object with error info.\n\tif (XMLValidator.validate(string) !== true) {\n\t\treturn false;\n\t}\n\n\tlet jsonObject;\n\tconst parser = new XMLParser();\n\n\ttry {\n\t\tjsonObject = parser.parse(string);\n\t} catch {\n\t\treturn false;\n\t}\n\n\tif (!jsonObject) {\n\t\treturn false;\n\t}\n\n\tif (!('svg' in jsonObject)) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=7a51ec30&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=7a51ec30&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=7a51ec30&scoped=true&\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=7a51ec30&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a51ec30\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppNavigation',{attrs:{\"data-cy-files-navigation\":\"\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return _vm._l((_vm.parentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,attrs:{\"allow-collapse\":true,\"data-cy-files-navigation-item\":view.id,\"icon\":view.iconClass,\"open\":_vm.isExpanded(view),\"pinned\":view.sticky,\"title\":view.name,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":function($event){return _vm.onToggleExpand(view)}}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.childViews[view.id]),function(child){return _c('NcAppNavigationItem',{key:child.id,attrs:{\"data-cy-files-navigation-item\":child.id,\"exact\":true,\"icon\":child.iconClass,\"title\":child.name,\"to\":_vm.generateToNavigation(child)}},[(child.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":child.icon},slot:\"icon\"}):_vm._e()],1)})],2)})},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"aria-label\":_vm.t('files', 'Open the files app settings'),\"title\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('Cog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Cog.vue?vue&type=template&id=bcf30078&\"\nimport script from \"./Cog.vue?vue&type=script&lang=js&\"\nexport * from \"./Cog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChartPie.vue?vue&type=template&id=44de6464&\"\nimport script from \"./ChartPie.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartPie.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=918797b2&scoped=true&\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"918797b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-label\":_vm.t('files', 'Storage informations'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"title\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"title\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.sort_favorites_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_favorites_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort favorites first'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"title\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"title\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clipboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clipboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Clipboard.vue?vue&type=template&id=0e008e34&\"\nimport script from \"./Clipboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Clipboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon clipboard-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=61d69eae&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=0626eaac&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=0626eaac&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=0626eaac&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=0626eaac&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0626eaac\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling \n *\n * @author Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=657a978e&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"657a978e\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport logger from '../logger.js'\n\n/**\n * Fetch and register the legacy files views\n */\nexport default function() {\n\tconst legacyViews = Object.values(loadState('files', 'navigation', {}))\n\n\tif (legacyViews.length > 0) {\n\t\tlogger.debug('Legacy files views detected. Processing...', legacyViews)\n\t\tlegacyViews.forEach(view => {\n\t\t\tregisterLegacyView(view)\n\t\t\tif (view.sublist) {\n\t\t\t\tview.sublist.forEach(subview => registerLegacyView({ ...subview, parent: view.id }))\n\t\t\t}\n\t\t})\n\t}\n}\n\nconst registerLegacyView = function({ id, name, order, icon, parent, classes = '', expanded, params }) {\n\tOCP.Files.Navigation.register({\n\t\tid,\n\t\tname,\n\t\torder,\n\t\tparams,\n\t\tparent,\n\t\texpanded: expanded === true,\n\t\ticonClass: icon ? `icon-${icon}` : 'nav-icon-' + id,\n\t\tlegacy: true,\n\t\tsticky: classes.includes('pinned'),\n\t})\n}\n","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n ? self\n : typeof window !== \"undefined\"\n ? window\n : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n return {\n original: method,\n methods: [method],\n final: false\n };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n constructor() {\n this._configuration = {\n registry: {},\n getEmptyAction: \"null\"\n };\n this.__type__ = HOT_PATCHER_TYPE;\n }\n /**\n * Configuration object reference\n * @readonly\n */\n get configuration() {\n return this._configuration;\n }\n /**\n * The action to take when a non-set method is requested\n * Possible values: null/throw\n */\n get getEmptyAction() {\n return this.configuration.getEmptyAction;\n }\n set getEmptyAction(newAction) {\n this.configuration.getEmptyAction = newAction;\n }\n /**\n * Control another hot-patcher instance\n * Force the remote instance to use patched methods from calling instance\n * @param target The target instance to control\n * @param allowTargetOverrides Allow the target to override patched methods on\n * the controller (default is false)\n * @returns Returns self\n * @throws {Error} Throws if the target is invalid\n */\n control(target, allowTargetOverrides = false) {\n if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n }\n Object.keys(target.configuration.registry).forEach(foreignKey => {\n if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n if (allowTargetOverrides) {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n }\n else {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n });\n target._configuration = this.configuration;\n return this;\n }\n /**\n * Execute a patched method\n * @param key The method key\n * @param args Arguments to pass to the method (optional)\n * @see HotPatcher#get\n * @returns The output of the called method\n */\n execute(key, ...args) {\n const method = this.get(key) || NOOP;\n return method(...args);\n }\n /**\n * Get a method for a key\n * @param key The method key\n * @returns Returns the requested function or null if the function\n * does not exist and the host is configured to return null (and not throw)\n * @throws {Error} Throws if the configuration specifies to throw and the method\n * does not exist\n * @throws {Error} Throws if the `getEmptyAction` value is invalid\n */\n get(key) {\n const item = this.configuration.registry[key];\n if (!item) {\n switch (this.getEmptyAction) {\n case \"null\":\n return null;\n case \"throw\":\n throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n default:\n throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n }\n }\n return sequence(...item.methods);\n }\n /**\n * Check if a method has been patched\n * @param key The function key\n * @returns True if already patched\n */\n isPatched(key) {\n return !!this.configuration.registry[key];\n }\n /**\n * Patch a method name\n * @param key The method key to patch\n * @param method The function to set\n * @param opts Patch options\n * @returns Returns self\n */\n patch(key, method, opts = {}) {\n const { chain = false } = opts;\n if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n throw new Error(`Failed patching '${key}': Method marked as being final`);\n }\n if (typeof method !== \"function\") {\n throw new Error(`Failed patching '${key}': Provided method is not a function`);\n }\n if (chain) {\n // Add new method to the chain\n if (!this.configuration.registry[key]) {\n // New key, create item\n this.configuration.registry[key] = createNewItem(method);\n }\n else {\n // Existing, push the method\n this.configuration.registry[key].methods.push(method);\n }\n }\n else {\n // Replace the original\n if (this.isPatched(key)) {\n const { original } = this.configuration.registry[key];\n this.configuration.registry[key] = Object.assign(createNewItem(method), {\n original\n });\n }\n else {\n this.configuration.registry[key] = createNewItem(method);\n }\n }\n return this;\n }\n /**\n * Patch a method inline, execute it and return the value\n * Used for patching contents of functions. This method will not apply a patched\n * function if it has already been patched, allowing for external overrides to\n * function. It also means that the function is cached so that it is not\n * instantiated every time the outer function is invoked.\n * @param key The function key to use\n * @param method The function to patch (once, only if not patched)\n * @param args Arguments to pass to the function\n * @returns The output of the patched function\n * @example\n * function mySpecialFunction(a, b) {\n * return hotPatcher.patchInline(\"func\", (a, b) => {\n * return a + b;\n * }, a, b);\n * }\n */\n patchInline(key, method, ...args) {\n if (!this.isPatched(key)) {\n this.patch(key, method);\n }\n return this.execute(key, ...args);\n }\n /**\n * Patch a method (or methods) in sequential-mode\n * See `patch()` with the option `chain: true`\n * @see patch\n * @param key The key to patch\n * @param methods The methods to patch\n * @returns Returns self\n */\n plugin(key, ...methods) {\n methods.forEach(method => {\n this.patch(key, method, { chain: true });\n });\n return this;\n }\n /**\n * Restore a patched method if it has been overridden\n * @param key The method key\n * @returns Returns self\n */\n restore(key) {\n if (!this.isPatched(key)) {\n throw new Error(`Failed restoring method: No method present for key: ${key}`);\n }\n else if (typeof this.configuration.registry[key].original !== \"function\") {\n throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n }\n this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n return this;\n }\n /**\n * Set a method as being final\n * This sets a method as having been finally overridden. Attempts at overriding\n * again will fail with an error.\n * @param key The key to make final\n * @returns Returns self\n */\n setFinal(key) {\n if (!this.configuration.registry.hasOwnProperty(key)) {\n throw new Error(`Failed marking '${key}' as final: No method found for key`);\n }\n this.configuration.registry[key].final = true;\n return this;\n }\n}\n","export function sequence(...methods) {\n if (methods.length === 0) {\n throw new Error(\"Failed creating sequence: No functions provided\");\n }\n return function __executeSequence(...args) {\n let result = args;\n const _this = this;\n while (methods.length > 0) {\n const method = methods.shift();\n result = [method.apply(_this, result)];\n }\n return result[0];\n };\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n if (!__patcher) {\n __patcher = new HotPatcher();\n }\n return __patcher;\n}\n","export function isWeb() {\n if (typeof WEB === \"boolean\" && WEB === true) {\n return true;\n }\n return false;\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop\n ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n for (const k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n }\n else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n let uid = \"\";\n for (let i = 0; i < NONCE_SIZE; ++i) {\n uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n }\n return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n if (authHeader.split(/\\s/)[0].toLowerCase() !== \"digest\") {\n return false;\n }\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n for (;;) {\n const match = re.exec(authHeader);\n if (!match) {\n break;\n }\n _digest[match[1]] = match[2] || match[3];\n }\n _digest.nc += 1;\n _digest.cnonce = makeNonce();\n return true;\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n }\n return ha1Hash;\n}\n","export function cloneShallow(obj) {\n return isPlainObject(obj)\n ? Object.assign({}, obj)\n : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" ||\n obj === null ||\n Object.prototype.toString.call(obj) != \"[object Object]\") {\n // Not an object\n return false;\n }\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n let proto = obj;\n // Find the prototype\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n let output = null, items = [...args];\n while (items.length > 0) {\n const nextItem = items.shift();\n if (!output) {\n output = cloneShallow(nextItem);\n }\n else {\n output = mergeObjects(output, nextItem);\n }\n }\n return output;\n}\nfunction mergeObjects(obj1, obj2) {\n const output = cloneShallow(obj1);\n Object.keys(obj2).forEach(key => {\n if (!output.hasOwnProperty(key)) {\n output[key] = obj2[key];\n return;\n }\n if (Array.isArray(obj2[key])) {\n output[key] = Array.isArray(output[key])\n ? [...output[key], ...obj2[key]]\n : [...obj2[key]];\n }\n else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n output[key] =\n typeof output[key] === \"object\" && !!output[key]\n ? mergeObjects(output[key], obj2[key])\n : cloneShallow(obj2[key]);\n }\n else {\n output[key] = obj2[key];\n }\n });\n return output;\n}\n","export function convertResponseHeaders(headers) {\n const output = {};\n for (const key of headers.keys()) {\n output[key] = headers.get(key);\n }\n return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n if (headerPayloads.length === 0)\n return {};\n const headerKeys = {};\n return headerPayloads.reduce((output, headers) => {\n Object.keys(headers).forEach(header => {\n const lowerHeader = header.toLowerCase();\n if (headerKeys.hasOwnProperty(lowerHeader)) {\n output[headerKeys[lowerHeader]] = headers[header];\n }\n else {\n headerKeys[lowerHeader] = header;\n output[header] = headers[header];\n }\n });\n return output;\n }, {});\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n return (hasArrayBuffer &&\n (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nfunction _request(requestOptions) {\n const patcher = getPatcher();\n return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\nfunction getFetchOptions(requestOptions) {\n let headers = {};\n // Handle standard options\n const opts = {\n method: requestOptions.method\n };\n if (requestOptions.headers) {\n headers = mergeHeaders(headers, requestOptions.headers);\n }\n if (typeof requestOptions.data !== \"undefined\") {\n const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n opts.body = body;\n headers = mergeHeaders(headers, newHeaders);\n }\n if (requestOptions.signal) {\n opts.signal = requestOptions.signal;\n }\n if (requestOptions.withCredentials) {\n opts.credentials = \"include\";\n }\n // Check for node-specific options\n if (!isWeb()) {\n if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n opts.agent = (parsedURL) => {\n if (parsedURL.protocol === \"http:\") {\n return requestOptions.httpAgent || new HTTPAgent();\n }\n return requestOptions.httpsAgent || new HTTPSAgent();\n };\n }\n }\n // Attach headers\n opts.headers = headers;\n return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n const finalOptions = cloneShallow(requestOptions);\n finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n if (typeof userOptions.data !== \"undefined\") {\n finalOptions.data = userOptions.data;\n }\n if (userOptions.signal) {\n finalOptions.signal = userOptions.signal;\n }\n if (context.httpAgent) {\n finalOptions.httpAgent = context.httpAgent;\n }\n if (context.httpsAgent) {\n finalOptions.httpsAgent = context.httpsAgent;\n }\n if (context.digest) {\n finalOptions._digest = context.digest;\n }\n if (typeof context.withCredentials === \"boolean\") {\n finalOptions.withCredentials = context.withCredentials;\n }\n return finalOptions;\n}\nexport async function request(requestOptions) {\n // Client not configured for digest authentication\n if (!requestOptions._digest) {\n return _request(requestOptions);\n }\n // Remove client's digest authentication object from request options\n const _digest = requestOptions._digest;\n delete requestOptions._digest;\n // If client is already using digest authentication, include the digest authorization header\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n }\n // Perform digest request + check\n const response = await _request(requestOptions);\n if (response.status == 401) {\n _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n const response2 = await _request(requestOptions);\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n }\n else {\n _digest.nc++;\n }\n return response2;\n }\n }\n else {\n _digest.nc++;\n }\n return response;\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n if (!isWeb() && data instanceof Stream.Readable) {\n // @ts-ignore\n return [data, {}];\n }\n if (typeof data === \"string\") {\n return [data, {}];\n }\n else if (isBuffer(data)) {\n return [data, {}];\n }\n else if (isArrayBuffer(data)) {\n return [data, {}];\n }\n else if (data && typeof data === \"object\") {\n return [\n JSON.stringify(data),\n {\n \"content-type\": \"application/json\"\n }\n ];\n }\n throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","export function isBuffer(value) {\n return (value != null &&\n value.constructor != null &&\n typeof value.constructor.isBuffer === \"function\" &&\n value.constructor.isBuffer(value));\n}\n","import { createClient, getPatcher } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser, getRequestToken } from '@nextcloud/auth';\nimport { request } from 'webdav/dist/node/request.js';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nexport const defaultRootUrl = generateRemoteUrl('dav' + rootPath);\nexport const getClient = (rootUrl = defaultRootUrl) => {\n const client = createClient(rootUrl, {\n headers: {\n requesttoken: getRequestToken() || '',\n },\n });\n /**\n * Allow to override the METHOD to support dav REPORT\n *\n * @see https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/request.ts\n */\n const patcher = getPatcher();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // https://github.com/perry-mitchell/hot-patcher/issues/6\n patcher.patch('request', (options) => {\n if (options.headers?.method) {\n options.method = options.headers.method;\n delete options.headers.method;\n }\n return request(options);\n });\n return client;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport logger from '../logger';\nconst defaultDavProperties = [\n 'd:getcontentlength',\n 'd:getcontenttype',\n 'd:getetag',\n 'd:getlastmodified',\n 'd:quota-available-bytes',\n 'd:resourcetype',\n 'nc:has-preview',\n 'nc:is-encrypted',\n 'nc:mount-type',\n 'nc:share-attributes',\n 'oc:comments-unread',\n 'oc:favorite',\n 'oc:fileid',\n 'oc:owner-display-name',\n 'oc:owner-id',\n 'oc:permissions',\n 'oc:share-types',\n 'oc:size',\n 'ocs:share-permissions',\n];\nconst defaultDavNamespaces = {\n d: 'DAV:',\n nc: 'http://nextcloud.org/ns',\n oc: 'http://owncloud.org/ns',\n ocs: 'http://open-collaboration-services.org/ns',\n};\n/**\n * TODO: remove and move to @nextcloud/files\n * @param prop\n * @param namespace\n */\nexport const registerDavProperty = function (prop, namespace = { nc: 'http://nextcloud.org/ns' }) {\n if (typeof window._nc_dav_properties === 'undefined') {\n window._nc_dav_properties = defaultDavProperties;\n window._nc_dav_namespaces = defaultDavNamespaces;\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n // Check duplicates\n if (window._nc_dav_properties.find(search => search === prop)) {\n logger.error(`${prop} already registered`, { prop });\n return;\n }\n if (prop.startsWith('<') || prop.split(':').length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return;\n }\n const ns = prop.split(':')[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n};\n/**\n * Get the registered dav properties\n */\nexport const getDavProperties = function () {\n if (typeof window._nc_dav_properties === 'undefined') {\n window._nc_dav_properties = defaultDavProperties;\n }\n return window._nc_dav_properties.map(prop => `<${prop} />`).join(' ');\n};\n/**\n * Get the registered dav namespaces\n */\nexport const getDavNameSpaces = function () {\n if (typeof window._nc_dav_namespaces === 'undefined') {\n window._nc_dav_namespaces = defaultDavNamespaces;\n }\n return Object.keys(window._nc_dav_namespaces).map(ns => `xmlns:${ns}=\"${window._nc_dav_namespaces[ns]}\"`).join(' ');\n};\n/**\n * Get the default PROPFIND request payload\n */\nexport const getDefaultPropfind = function () {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { File, Folder, parseWebdavPermissions } from '@nextcloud/files';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getClient, rootPath } from './WebdavClient';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getDavNameSpaces, getDavProperties, getDefaultPropfind } from './DavProperties';\nconst client = getClient();\nconst reportPayload = `\n\n\t\n\t\t${getDavProperties()}\n\t\n\t\n\t\t1\n\t\n`;\nconst resultToNode = function (node) {\n const props = node.props;\n const permissions = parseWebdavPermissions(props?.permissions);\n const owner = getCurrentUser()?.uid;\n const nodeData = {\n id: props?.fileid || 0,\n source: generateRemoteUrl('dav' + rootPath + node.filename),\n mtime: new Date(node.lastmod),\n mime: node.mime,\n size: props?.size || 0,\n permissions,\n owner,\n root: rootPath,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.['has-preview'],\n },\n };\n delete nodeData.attributes.props;\n return node.type === 'file'\n ? new File(nodeData)\n : new Folder(nodeData);\n};\nexport const getContents = async (path = '/') => {\n const propfindPayload = getDefaultPropfind();\n // Get root folder\n let rootResponse;\n if (path === '/') {\n rootResponse = await client.stat(path, {\n details: true,\n data: getDefaultPropfind(),\n });\n }\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n // Only filter favorites if we're at the root\n data: path === '/' ? reportPayload : propfindPayload,\n headers: {\n // Patched in WebdavClient.ts\n method: path === '/' ? 'REPORT' : 'PROPFIND',\n },\n includeSelf: true,\n });\n const root = rootResponse?.data || contentsResponse.data[0];\n const contents = contentsResponse.data.filter(node => node.filename !== path);\n return {\n folder: resultToNode(root),\n contents: contents.map(resultToNode),\n };\n};\n","import { getLanguage, translate as t } from '@nextcloud/l10n';\nimport FolderSvg from '@mdi/svg/svg/folder.svg?raw';\nimport StarSvg from '@mdi/svg/svg/star.svg?raw';\nimport { basename } from 'path';\nimport { getContents } from '../services/Favorites';\nimport { hashCode } from '../utils/hashUtils';\nimport { loadState } from '@nextcloud/initial-state';\nimport { Node, FileType } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nexport const generateFolderView = function (folder, index = 0) {\n return {\n id: generateIdFromPath(folder),\n name: basename(folder),\n icon: FolderSvg,\n order: index,\n params: {\n dir: folder,\n view: 'favorites',\n },\n parent: 'favorites',\n columns: [],\n getContents,\n };\n};\nexport const generateIdFromPath = function (path) {\n return `favorite-${hashCode(path)}`;\n};\nexport default () => {\n // Load state in function for mock testing purposes\n const favoriteFolders = loadState('files', 'favoriteFolders', []);\n const favoriteFoldersViews = favoriteFolders.map((folder, index) => generateFolderView(folder, index));\n const Navigation = window.OCP.Files.Navigation;\n Navigation.register({\n id: 'favorites',\n name: t('files', 'Favorites'),\n caption: t('files', 'List of favorites files and folders.'),\n emptyTitle: t('files', 'No favorites yet'),\n emptyCaption: t('files', 'Files and folders you mark as favorite will show up here'),\n icon: StarSvg,\n order: 5,\n columns: [],\n getContents,\n });\n favoriteFoldersViews.forEach(view => Navigation.register(view));\n /**\n * Update favourites navigation when a new folder is added\n */\n subscribe('files:favorites:added', (node) => {\n if (node.type !== FileType.Folder) {\n return;\n }\n // Sanity check\n if (node.path === null || !node.root?.startsWith('/files')) {\n logger.error('Favorite folder is not within user files root', { node });\n return;\n }\n addPathToFavorites(node.path);\n });\n /**\n * Remove favourites navigation when a folder is removed\n */\n subscribe('files:favorites:removed', (node) => {\n if (node.type !== FileType.Folder) {\n return;\n }\n // Sanity check\n if (node.path === null || !node.root?.startsWith('/files')) {\n logger.error('Favorite folder is not within user files root', { node });\n return;\n }\n removePathFromFavorites(node.path);\n });\n /**\n * Sort the favorites paths array and\n * update the order property of the existing views\n */\n const updateAndSortViews = function () {\n favoriteFolders.sort((a, b) => a.localeCompare(b, getLanguage(), { ignorePunctuation: true }));\n favoriteFolders.forEach((folder, index) => {\n const view = favoriteFoldersViews.find(view => view.id === generateIdFromPath(folder));\n if (view) {\n view.order = index;\n }\n });\n };\n // Add a folder to the favorites paths array and update the views\n const addPathToFavorites = function (path) {\n const view = generateFolderView(path);\n // Skip if already exists\n if (favoriteFolders.find(folder => folder === path)) {\n return;\n }\n // Update arrays\n favoriteFolders.push(path);\n favoriteFoldersViews.push(view);\n // Update and sort views\n updateAndSortViews();\n Navigation.register(view);\n };\n // Remove a folder from the favorites paths array and update the views\n const removePathFromFavorites = function (path) {\n const id = generateIdFromPath(path);\n const index = favoriteFolders.findIndex(folder => folder === path);\n // Skip if not exists\n if (index === -1) {\n return;\n }\n // Update arrays\n favoriteFolders.splice(index, 1);\n favoriteFoldersViews.splice(index, 1);\n // Update and sort views\n Navigation.remove(id);\n updateAndSortViews();\n };\n};\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an
element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replace(/\\+/g, ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {encode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',', ...options};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport queryString from 'query-string'\n\nVue.use(Router)\n\nconst router = new Router({\n\tmode: 'history',\n\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl('/apps/files', ''),\n\tlinkActiveClass: 'active',\n\n\troutes: [\n\t\t{\n\t\t\tpath: '/',\n\t\t\t// Pretending we're using the default view\n\t\t\talias: '/files',\n\t\t},\n\t\t{\n\t\t\tpath: '/:view/:fileid?',\n\t\t\tname: 'filelist',\n\t\t\tprops: true,\n\t\t},\n\t],\n\n\t// Custom stringifyQuery to prevent encoding of slashes in the url\n\tstringifyQuery(query) {\n\t\tconst result = queryString.stringify(query).replace(/%2F/gmi, '/')\n\t\treturn result ? ('?' + result) : ''\n\t},\n})\n\nexport default router\n","import './templates.js';\nimport './legacy/filelistSearch.js';\nimport './actions/deleteAction';\nimport './actions/downloadAction';\nimport './actions/editLocallyAction';\nimport './actions/favoriteAction';\nimport './actions/openFolderAction';\nimport './actions/renameAction';\nimport './actions/sidebarAction';\nimport './actions/viewInFolderAction';\nimport Vue from 'vue';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport FilesListView from './views/FilesList.vue';\nimport NavigationService from './services/Navigation';\nimport NavigationView from './views/Navigation.vue';\nimport processLegacyFilesViews from './legacy/navigationMapper.js';\nimport registerFavoritesView from './views/favorites';\nimport registerPreviewServiceWorker from './services/ServiceWorker.js';\nimport router from './router/router.js';\nimport RouterService from './services/RouterService';\nimport SettingsModel from './models/Setting.js';\nimport SettingsService from './services/Settings.js';\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nconst Router = new RouterService(router);\nObject.assign(window.OCP.Files, { Router });\n// Init Pinia store\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\n// Init Navigation Service\nconst Navigation = new NavigationService();\nObject.assign(window.OCP.Files, { Navigation });\nVue.prototype.$navigation = Navigation;\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\n// Init Navigation View\nconst View = Vue.extend(NavigationView);\nconst FilesNavigationRoot = new View({\n name: 'FilesNavigationRoot',\n propsData: {\n Navigation,\n },\n router,\n pinia,\n});\nFilesNavigationRoot.$mount('#app-navigation-files');\n// Init content list view\nconst ListView = Vue.extend(FilesListView);\nconst FilesList = new ListView({\n name: 'FilesListRoot',\n router,\n pinia,\n});\nFilesList.$mount('#app-content-vue');\n// Init legacy and new files views\nprocessLegacyFilesViews();\nregisterFavoritesView();\n// Register preview service worker\nregisterPreviewServiceWorker();\n","export default class RouterService {\n _router;\n constructor(router) {\n this._router = router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this._router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this._router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { generateUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\nexport default () => {\n\tif ('serviceWorker' in navigator) {\n\t\t// Use the window load event to keep the page load performant\n\t\twindow.addEventListener('load', async () => {\n\t\t\ttry {\n\t\t\t\tconst url = generateUrl('/apps/files/preview-service-worker.js', {}, { noRewrite: true })\n\t\t\t\tconst registration = await navigator.serviceWorker.register(url, { scope: '/' })\n\t\t\t\tlogger.debug('SW registered: ', { registration })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('SW registration failed: ', { error })\n\t\t\t}\n\t\t})\n\t} else {\n\t\tlogger.debug('Service Worker is not enabled on this browser.')\n\t}\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([\"exports\"], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.CancelablePromise = mod.exports;\n }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.CancelablePromise = void 0;\n _exports.cancelable = cancelable;\n _exports.default = void 0;\n _exports.isCancelablePromise = isCancelablePromise;\n\n function _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\n function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\n function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\n function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\n function _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\n function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\n function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var 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\n function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\n function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\n function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\n function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\n function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\n function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\n function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\n var toStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : '@@toStringTag';\n\n var _internals = /*#__PURE__*/new WeakMap();\n\n var _promise = /*#__PURE__*/new WeakMap();\n\n var CancelablePromiseInternal = /*#__PURE__*/function () {\n function CancelablePromiseInternal(_ref) {\n var _ref$executor = _ref.executor,\n executor = _ref$executor === void 0 ? function () {} : _ref$executor,\n _ref$internals = _ref.internals,\n internals = _ref$internals === void 0 ? defaultInternals() : _ref$internals,\n _ref$promise = _ref.promise,\n promise = _ref$promise === void 0 ? new Promise(function (resolve, reject) {\n return executor(resolve, reject, function (onCancel) {\n internals.onCancelList.push(onCancel);\n });\n }) : _ref$promise;\n\n _classCallCheck(this, CancelablePromiseInternal);\n\n _classPrivateFieldInitSpec(this, _internals, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _promise, {\n writable: true,\n value: void 0\n });\n\n _defineProperty(this, toStringTag, 'CancelablePromise');\n\n this.cancel = this.cancel.bind(this);\n\n _classPrivateFieldSet(this, _internals, internals);\n\n _classPrivateFieldSet(this, _promise, promise || new Promise(function (resolve, reject) {\n return executor(resolve, reject, function (onCancel) {\n internals.onCancelList.push(onCancel);\n });\n }));\n }\n\n _createClass(CancelablePromiseInternal, [{\n key: \"then\",\n value: function then(onfulfilled, onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).then(createCallback(onfulfilled, _classPrivateFieldGet(this, _internals)), createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n }, {\n key: \"catch\",\n value: function _catch(onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).catch(createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n }, {\n key: \"finally\",\n value: function _finally(onfinally, runWhenCanceled) {\n var _this = this;\n\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList.push(onfinally);\n }\n\n return makeCancelable(_classPrivateFieldGet(this, _promise).finally(createCallback(function () {\n if (onfinally) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(_this, _internals).onCancelList = _classPrivateFieldGet(_this, _internals).onCancelList.filter(function (callback) {\n return callback !== onfinally;\n });\n }\n\n return onfinally();\n }\n }, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n _classPrivateFieldGet(this, _internals).isCanceled = true;\n\n var callbacks = _classPrivateFieldGet(this, _internals).onCancelList;\n\n _classPrivateFieldGet(this, _internals).onCancelList = [];\n\n var _iterator = _createForOfIteratorHelper(callbacks),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var callback = _step.value;\n\n if (typeof callback === 'function') {\n try {\n callback();\n } catch (err) {\n console.error(err);\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"isCanceled\",\n value: function isCanceled() {\n return _classPrivateFieldGet(this, _internals).isCanceled === true;\n }\n }]);\n\n return CancelablePromiseInternal;\n }();\n\n var CancelablePromise = /*#__PURE__*/function (_CancelablePromiseInt) {\n _inherits(CancelablePromise, _CancelablePromiseInt);\n\n var _super = _createSuper(CancelablePromise);\n\n function CancelablePromise(executor) {\n _classCallCheck(this, CancelablePromise);\n\n return _super.call(this, {\n executor: executor\n });\n }\n\n return _createClass(CancelablePromise);\n }(CancelablePromiseInternal);\n\n _exports.CancelablePromise = CancelablePromise;\n\n _defineProperty(CancelablePromise, \"all\", function all(iterable) {\n return makeAllCancelable(iterable, Promise.all(iterable));\n });\n\n _defineProperty(CancelablePromise, \"allSettled\", function allSettled(iterable) {\n return makeAllCancelable(iterable, Promise.allSettled(iterable));\n });\n\n _defineProperty(CancelablePromise, \"any\", function any(iterable) {\n return makeAllCancelable(iterable, Promise.any(iterable));\n });\n\n _defineProperty(CancelablePromise, \"race\", function race(iterable) {\n return makeAllCancelable(iterable, Promise.race(iterable));\n });\n\n _defineProperty(CancelablePromise, \"resolve\", function resolve(value) {\n return cancelable(Promise.resolve(value));\n });\n\n _defineProperty(CancelablePromise, \"reject\", function reject(reason) {\n return cancelable(Promise.reject(reason));\n });\n\n _defineProperty(CancelablePromise, \"isCancelable\", isCancelablePromise);\n\n var _default = CancelablePromise;\n _exports.default = _default;\n\n function cancelable(promise) {\n return makeCancelable(promise, defaultInternals());\n }\n\n function isCancelablePromise(promise) {\n return promise instanceof CancelablePromise || promise instanceof CancelablePromiseInternal;\n }\n\n function createCallback(onResult, internals) {\n if (onResult) {\n return function (arg) {\n if (!internals.isCanceled) {\n var result = onResult(arg);\n\n if (isCancelablePromise(result)) {\n internals.onCancelList.push(result.cancel);\n }\n\n return result;\n }\n\n return arg;\n };\n }\n }\n\n function makeCancelable(promise, internals) {\n return new CancelablePromiseInternal({\n internals: internals,\n promise: promise\n });\n }\n\n function makeAllCancelable(iterable, promise) {\n var internals = defaultInternals();\n internals.onCancelList.push(function () {\n var _iterator2 = _createForOfIteratorHelper(iterable),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var resolvable = _step2.value;\n\n if (isCancelablePromise(resolvable)) {\n resolvable.cancel();\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n return new CancelablePromiseInternal({\n internals: internals,\n promise: promise\n });\n }\n\n function defaultInternals() {\n return {\n isCanceled: false,\n onCancelList: []\n };\n }\n});\n//# sourceMappingURL=CancelablePromise.js.map","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA\",\"sourcesContent\":[\"\\n.breadcrumb {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\n\\t::v-deep a {\\n\\t\\tcursor: pointer !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.custom-svg-icon[data-v-93e9b2f4]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-93e9b2f4] svg{height:22px;width:22px;fill:currentColor}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/CustomSvgIconRender.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.custom-svg-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\talign-self: center;\\n\\tjustify-content: center;\\n\\tjustify-self: center;\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\topacity: 1;\\n\\n\\t::v-deep svg {\\n\\t\\t// mdi icons have a size of 24px\\n\\t\\t// 22px results in roughly 16px inner size\\n\\t\\theight: 22px;\\n\\t\\twidth: 22px;\\n\\t\\tfill: currentColor;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-324501a3]{color:#a08b00;width:fit-content;height:fit-content}.favorite-marker-icon[data-v-324501a3] svg{width:26px;height:26px}.favorite-marker-icon[data-v-324501a3] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,aAAA,CACA,iBAAA,CACA,kBAAA,CAGC,4CAEC,UAAA,CACA,WAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: #a08b00;\\n\\twidth: fit-content;\\n\\theight: fit-content;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 26px;\\n\\t\\t\\theight: 26px;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-5c58a5a9]:hover,tr[data-v-5c58a5a9]:focus,tr[data-v-5c58a5a9]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-5c58a5a9]:not([style*=background]){background:var(--color-loading-dark)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\"AAGC,+EAGC,6CAAA,CAKF,wEACI,oCAAA\",\"sourcesContent\":[\"\\n/* Hover effect on tbody lines only */\\ntr {\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n}\\n\\n/* Preview not loaded animation effect */\\n.files-list__row-icon-preview:not([style*='background']) {\\n background: var(--color-loading-dark);\\n\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-2201dce1]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-2201dce1]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tpadding-bottom: 300px;\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n}\\n\\ntd {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-3e864709]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-3e864709]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-03e57b1e]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t::v-deep .button-vue__wrapper {\\n\\t\\twidth: 100%;\\n\\t\\tspan.button-vue__text {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--cell-margin) * -1);\\n\\t// Reverse padding\\n\\tpadding: 0 4px 0 16px !important;\\n\\n\\t// Icon after text\\n\\t.button-vue__wrapper {\\n\\t\\tflex-direction: row-reverse;\\n\\t\\t// Take max inner width for text overflow ellipsis\\n\\t\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.button-vue__icon {\\n\\t\\ttransition-timing-function: linear;\\n\\t\\ttransition-duration: .1s;\\n\\t\\ttransition-property: opacity;\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t.button-vue__text {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&--active,\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\t.button-vue__icon {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-e796f704]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-e796f704] tbody,.files-list[data-v-e796f704] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-e796f704] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-e796f704] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}.files-list[data-v-e796f704] td,.files-list[data-v-e796f704] th{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-e796f704] td span,.files-list[data-v-e796f704] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-e796f704] .files-list__row-checkbox{justify-content:center}.files-list[data-v-e796f704] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-e796f704] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-e796f704] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-e796f704] .files-list__row:hover .favorite-marker-icon svg path{stroke:var(--color-background-dark)}.files-list[data-v-e796f704] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-e796f704] .files-list__row-icon *{cursor:pointer}.files-list[data-v-e796f704] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-e796f704] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-e796f704] .files-list__row-icon-preview{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list[data-v-e796f704] .files-list__row-icon-favorite{position:absolute;top:0px;right:-10px}.files-list[data-v-e796f704] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-e796f704] .files-list__row-name a{display:flex;align-items:center;width:100%;height:100%;min-width:0}.files-list[data-v-e796f704] .files-list__row-name a:focus .files-list__row-name-text,.files-list[data-v-e796f704] .files-list__row-name a:focus-visible .files-list__row-name-text{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list[data-v-e796f704] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:5px 10px;margin-left:-10px;display:inline-flex}.files-list[data-v-e796f704] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast)}.files-list[data-v-e796f704] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-e796f704] .files-list__row-rename input{width:100%;margin-left:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-e796f704] .files-list__row-rename input:invalid{border-color:var(--color-error);color:red}.files-list[data-v-e796f704] .files-list__row-actions{width:auto}.files-list[data-v-e796f704] .files-list__row-actions~td,.files-list[data-v-e796f704] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-e796f704] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-e796f704] .files-list__row-actions button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list[data-v-e796f704] .files-list__row-mtime,.files-list[data-v-e796f704] .files-list__row-size{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list[data-v-e796f704] .files-list__row-mtime .files-list__column-sort-button,.files-list[data-v-e796f704] .files-list__row-size .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list[data-v-e796f704] .files-list__row-mtime .files-list__column-sort-button .button-vue__wrapper,.files-list[data-v-e796f704] .files-list__row-size .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list[data-v-e796f704] .files-list__row-mtime{width:calc(var(--row-height)*2)}.files-list[data-v-e796f704] .files-list__row-column-custom{width:calc(var(--row-height)*2)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAGD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA,CAGD,gEACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,0EACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,uDACC,sBAAA,CACA,8EACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,iHACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,2GACC,mBAAA,CAMH,mFACC,mCAAA,CAID,mDACC,iBAAA,CACA,YAAA,CACA,gBAAA,CACA,kBAAA,CAEA,iCAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAGA,qDACC,cAAA,CAGD,wDACC,0BAAA,CAEA,gGACC,8BAAA,CACA,+BAAA,CAIF,2DACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAGD,4DACC,iBAAA,CACA,OAAA,CACA,WAAA,CAKF,mDAEC,eAAA,CAEA,aAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAEA,WAAA,CAGA,oLAEC,mDAAA,CACA,kBAAA,CAIF,8EACC,4BAAA,CAEA,gBAAA,CACA,iBAAA,CAEA,mBAAA,CAGD,6EACC,mCAAA,CAKF,qDACC,UAAA,CACA,eAAA,CACA,2DACC,UAAA,CAEA,gBAAA,CACA,eAAA,CACA,gBAAA,CAEA,mEAEC,+BAAA,CACA,SAAA,CAKH,sDACC,UAAA,CAGA,kHAEC,2BAAA,CAIA,+EAEC,kBAAA,CAED,6GAEC,mCAAA,CAKH,uGAGC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uKACC,+BAAA,CACA,iNACC,kBAAA,CAKH,oDACC,+BAAA,CAGD,4DACC,+BAAA\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 55px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: 44px;\\n\\t--icon-preview-size: 32px;\\n\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&::v-deep {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody, .vue-recycle-scroller__slot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.vue-recycle-scroller__slot[role='thead'] {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: left;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t.files-list__row:hover .favorite-marker-icon svg path {\\n\\t\\t\\tstroke: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-right: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tright: -10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\ta {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: 20px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-left: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-error);\\n\\t\\t\\t\\t\\tcolor: red;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\t// Right align text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t\\twidth: calc(var(--row-height) * 1.5);\\n\\t\\t\\t// opacity varies with the size\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\t\\t// Icon is before text since size is right aligned\\n\\t\\t\\t.files-list__column-sort-button {\\n\\t\\t\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t\\t\\t.button-vue__wrapper {\\n\\t\\t\\t\\t\\tflex-direction: row;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota--not-unlimited[data-v-918797b2] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-918797b2]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t&--not-unlimited::v-deep .app-navigation-entry__title {\\n\\t\\tmargin-top: -4px;\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: 10px;\\n\\t\\tmargin-left: 44px;\\n\\t\\twidth: calc(100% - 44px - 22px);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.template-picker__item[data-v-5b09ec60]{display:flex}.template-picker__label[data-v-5b09ec60]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-5b09ec60],.template-picker__label *[data-v-5b09ec60]{cursor:pointer;user-select:none}.template-picker__label[data-v-5b09ec60]::before{display:none !important}.template-picker__preview[data-v-5b09ec60]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-5b09ec60]{border-color:var(--color-primary-element)}.template-picker__preview--failed[data-v-5b09ec60]{display:flex}.template-picker__image[data-v-5b09ec60]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-5b09ec60]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-5b09ec60]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TemplatePreview.vue\"],\"names\":[],\"mappings\":\"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,yCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n\\n.template-picker {\\n\\t&__item {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: flex;\\n\\t\\t// Align in the middle of the grid\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: block;\\n\\t\\toverflow: hidden;\\n\\t\\t// Stretch so all entries are the same width\\n\\t\\tflex: 1 1;\\n\\t\\twidth: var(--width);\\n\\t\\tmin-height: var(--height);\\n\\t\\tmax-height: var(--height);\\n\\t\\tpadding: 0;\\n\\t\\tborder: var(--border) solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\tinput:checked + label > & {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\n\\t\\t&--failed {\\n\\t\\t\\t// Make sure to properly center fallback icon\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\tmax-width: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t// Failed preview, fallback to mime icon\\n\\t&__preview--failed &__image {\\n\\t\\twidth: calc(var(--margin) * 8);\\n\\t\\t// Center mime icon\\n\\t\\tmargin: auto;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\tobject-fit: initial;\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\t// also count preview border\\n\\t\\tmax-width: calc(var(--width) + 2*2px);\\n\\t\\tpadding: var(--margin);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-7a51ec30]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-7a51ec30]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-7a51ec30]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-7a51ec30]{flex:0 0}.files-list__refresh-icon[data-v-7a51ec30]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-7a51ec30]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\n\\t// TODO: remove after all legacy views are migrated\\n\\t// Hides the legacy app-content if shown view is not legacy\\n\\t&:not(&--hidden)::v-deep + #app-content {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n$margin: 4px;\\n$navigationToggleSize: 50px;\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-content: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin: $margin $margin $margin $navigationToggleSize;\\n\\t\\t> * {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\t}\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 44px;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-657a978e] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-657a978e]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-657a978e]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\\n.app-navigation::v-deep .app-navigation-entry-icon {\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: center;\\n}\\n\\n.app-navigation > ul.app-navigation__list {\\n\\t// Use flex gap value for more elegant spacing\\n\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.setting-link[data-v-0626eaac]:hover{text-decoration:underline}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourcesContent\":[\"\\n.setting-link:hover {\\n\\ttext-decoration: underline;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.templates-picker__form[data-v-d46f1dc6]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-d46f1dc6]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-d46f1dc6]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-d46f1dc6]{display:flex;justify-content:end;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-d46f1dc6],.templates-picker__buttons input[type=submit][data-v-d46f1dc6]{height:44px}.templates-picker[data-v-d46f1dc6] .modal-container{position:relative}.templates-picker__loading[data-v-d46f1dc6]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/TemplatePicker.vue\"],\"names\":[],\"mappings\":\"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,mBAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA\",\"sourcesContent\":[\"\\n.templates-picker {\\n\\t&__form {\\n\\t\\tpadding: calc(var(--margin) * 2);\\n\\t\\t// Will be handled by the buttons\\n\\t\\tpadding-bottom: 0;\\n\\n\\t\\th2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: var(--margin) 0 calc(var(--margin) * 2);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-gap: calc(var(--margin) * 2);\\n\\t\\tgrid-auto-columns: 1fr;\\n\\t\\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\\n\\t\\tmax-width: calc(var(--fullwidth) * 6);\\n\\t\\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\\n\\t\\t// Make sure all rows are the same height\\n\\t\\tgrid-auto-rows: 1fr;\\n\\t\\t// Center the columns set\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: end;\\n\\t\\tpadding: calc(var(--margin) * 2) var(--margin);\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tbackground-image: linear-gradient(0, var(--gradient-main-background));\\n\\n\\t\\tbutton, input[type='submit'] {\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make sure we're relative for the loading emptycontent on top\\n\\t::v-deep .modal-container {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__loading {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n/* @keyframes preview-gradient-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n} */\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\";AAs0BA;;;;;;;;;;GAUA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar objectCreate = Object.create || objectCreatePolyfill\nvar objectKeys = Object.keys || objectKeysPolyfill\nvar bind = Function.prototype.bind || functionBindPolyfill\n\nfunction EventEmitter() {\n if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nvar hasDefineProperty;\ntry {\n var o = {};\n if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });\n hasDefineProperty = o.x === 0;\n} catch (err) { hasDefineProperty = false }\nif (hasDefineProperty) {\n Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n // check whether the input is a positive number (whose value is zero or\n // greater and not a NaN).\n if (typeof arg !== 'number' || arg < 0 || arg !== arg)\n throw new TypeError('\"defaultMaxListeners\" must be a positive number');\n defaultMaxListeners = arg;\n }\n });\n} else {\n EventEmitter.defaultMaxListeners = defaultMaxListeners;\n}\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n if (arguments.length > 1)\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Unhandled \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = objectCreate(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' \"' + String(type) + '\" listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit.');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n if (typeof console === 'object' && console.warn) {\n console.warn('%s: %s', w.name, w.message);\n }\n }\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n switch (arguments.length) {\n case 0:\n return this.listener.call(this.target);\n case 1:\n return this.listener.call(this.target, arguments[0]);\n case 2:\n return this.listener.call(this.target, arguments[0], arguments[1]);\n case 3:\n return this.listener.call(this.target, arguments[0], arguments[1],\n arguments[2]);\n default:\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i)\n args[i] = arguments[i];\n this.listener.apply(this.target, args);\n }\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = bind.call(onceWrapper, state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else\n spliceOne(list, position);\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = objectKeys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = objectCreate(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (!events)\n return [];\n\n var evlistener = events[type];\n if (!evlistener)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction objectCreatePolyfill(proto) {\n var F = function() {};\n F.prototype = proto;\n return new F;\n}\nfunction objectKeysPolyfill(obj) {\n var keys = [];\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n return k;\n}\nfunction functionBindPolyfill(context) {\n var fn = this;\n return function () {\n return fn.apply(context, arguments);\n };\n}\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Scrollparent = factory();\n }\n}(this, function () {\n function isScrolling(node) {\n var overflow = getComputedStyle(node, null).getPropertyValue(\"overflow\");\n\n return overflow.indexOf(\"scroll\") > -1 || overflow.indexOf(\"auto\") > - 1;\n }\n\n function scrollParent(node) {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return undefined;\n }\n\n var current = node.parentNode;\n while (current.parentNode) {\n if (isScrolling(current)) {\n return current;\n }\n\n current = current.parentNode;\n }\n\n return document.scrollingElement || document.documentElement;\n }\n\n return scrollParent;\n}));","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n body = new Blob(self._body, {\n type: (headersObj['content-type'] || {}).value || ''\n });\n }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","import { render, staticRenderFns } from \"./Folder.vue?vue&type=template&id=5c04f969&\"\nimport script from \"./Folder.vue?vue&type=script&lang=js&\"\nexport * from \"./Folder.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2181;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2181: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(73766)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","exports","path","split","map","encodeURIComponent","join","e","t","module","self","a","d","default","T","o","i","n","r","s","l","c","u","p","name","components","NcButton","DotsHorizontal","NcPopover","props","open","type","Boolean","forceMenu","forceTitle","menuTitle","String","primary","validator","indexOf","defaultIcon","ariaLabel","ariaHidden","placement","boundariesElement","Element","document","querySelector","container","Object","disabled","inline","Number","emits","data","opened","this","focusIndex","randomId","concat","Z","computed","triggerBtnType","watch","methods","isValidSingleAction","componentOptions","Ctor","extendOptions","tag","includes","openMenu","$emit","closeMenu","arguments","length","$refs","popover","clearFocusTrap","returnFocus","menuButton","$el","focus","onOpen","$nextTick","focusFirstAction","onMouseFocusAction","activeElement","target","closest","menu","querySelectorAll","focusAction","onKeydown","keyCode","shiftKey","focusPreviousAction","focusNextAction","focusLastAction","preventDefault","removeCurrentActive","classList","remove","add","preventIfEvent","stopPropagation","onFocus","onBlur","render","$slots","filter","every","propsData","href","startsWith","window","location","origin","util","warn","A","m","h","g","v","b","C","f","y","k","w","S","scopedSlots","icon","class","x","listeners","click","z","children","text","trim","call","N","j","P","title","staticClass","attrs","ref","on","blur","slot","size","delay","handleResize","shown","boundary","popoverBaseClass","setReturnFocus","show","hide","toString","tabindex","keydown","mousemove","id","role","slice","styleTagTransform","setAttributes","insert","bind","domAPI","insertStyleElement","locals","E","B","_","undefined","nativeType","wide","download","to","exact","console","navigate","isActive","isExactActive","active","rel","$attrs","$listeners","custom","W","start","Date","setTimeout","pause","clearTimeout","clear","getTimeLeft","getStateRunning","NcActions","ChevronLeft","ChevronRight","Close","Pause","Play","directives","tooltip","mixins","hasPrevious","hasNext","outTransition","enableSlideshow","slideshowDelay","slideshowPaused","enableSwipe","spreadNavigation","canClose","dark","closeButtonContained","additionalTrapElements","Array","inlineActions","mc","playing","slideshowTimeout","iconSize","focusTrap","randId","internalShow","showModal","modalTransitionName","playPauseTitle","cssVariables","closeButtonAriaLabel","prevButtonAriaLabel","nextButtonAriaLabel","mask","updateContainerElements","beforeMount","addEventListener","handleKeydown","beforeDestroy","removeEventListener","off","destroy","mounted","useFocusTrap","handleSwipe","body","insertBefore","lastChild","appendChild","destroyed","previous","resetSlideshow","next","close","togglePlayPause","handleSlideshow","clearSlideshowTimeout","async","allowOutsideClick","fallbackFocus","trapStack","L","createFocusTrap","activate","deactivate","D","F","O","G","$","M","I","U","R","q","_self","_c","appear","rawName","value","expression","style","_v","_s","_e","modifiers","auto","height","width","stroke","fill","cx","cy","_t","_u","key","fn","proxy","mousedown","currentTarget","apply","invisible","Dropdown","inheritAttrs","HTMLElement","SVGElement","popperContent","$focusTrap","escapeDeactivates","afterShow","afterHide","_g","_b","distance","options","themes","html","VTooltip","getGettextBuilder","detectLocale","locale","translations","Actions","Activities","Choose","Custom","Favorite","Flags","Global","Next","Objects","Open","Previous","Search","Settings","Submit","Symbols","items","forEach","pluralId","msgid","msgid_plural","msgstr","addTranslation","build","ngettext","gettext","isMobile","created","handleWindowResize","documentElement","clientWidth","$on","onIsMobileChanged","$off","Math","random","replace","isArray","push","setAttribute","assign","_nc_focus_trap","version","sources","names","mappings","sourcesContent","sourceRoot","btoa","unescape","JSON","stringify","identifier","base","css","media","sourceMap","supports","layer","references","updater","byIndex","splice","update","HTMLIFrameElement","contentDocument","head","Error","createElement","attributes","nc","parentNode","removeChild","styleSheet","cssText","firstChild","createTextNode","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","__esModule","defineProperty","enumerable","get","prototype","hasOwnProperty","Symbol","toStringTag","NcModal","required","showNavigation","selectedSection","linkClicked","addedScrollListener","scroller","hasNavigation","settingsNavigationAriaLabel","updated","settingsScroller","handleScroll","getSettingsNavigation","handleSettingsNavigationClick","getElementById","scrollIntoView","behavior","handleCloseModal","scrollTop","unfocusNavigationItem","className","handleLinkKeydown","code","event","test","htmlId","disableDrop","hovering","crumbId","nameTitleFallback","linkAttributes","onOpenChange","dropped","$parent","dragEnter","dragLeave","contains","relatedTarget","crumb","draggable","dragstart","drop","dragover","dragenter","dragleave","_d","URL","onClick","isIconUrl","backgroundImage","domProps","textContent","isLongText","nativeOn","before","$destroy","beforeUpdate","getText","closeAfterClick","NcActionRouter","NcActionLink","NcBreadcrumb","IconFolder","rootIcon","hiddenCrumbs","hiddenIndices","menuBreadcrumbProps","subscribe","delayedResize","delayedHideCrumbs","unsubscribe","hideCrumbs","closeActions","actionsBreadcrumb","offsetWidth","getTotalWidth","breadcrumb__actions","floor","pow","getWidth","elm","arraysEqual","sort","reduce","minWidth","dragStart","dragOver","set","round","actions","svg","cleanSvg","sanitizeSVG","innerHTML","AlertCircle","Check","label","labelOutside","labelVisible","placeholder","showTrailingButton","trailingButtonLabel","success","error","helperText","inputClass","computedId","inputName","hasLeadingIcon","hasTrailingIcon","hasPlaceholder","computedPlaceholder","isValidLabel","input","select","handleInput","handleTrailingButtonClick","for","getCurrentDirectory","_OCA","_OCA$Files","_OCA$Files$App","_OCA$Files$App$curren","currentDirInfo","OCA","Files","App","currentFileList","dirInfo","previewWidth","basename","checked","fileid","filename","previewUrl","hasPreview","mime","ratio","failedPreview","nameWithoutExt","realPreviewUrl","mimeIcon","getCurrentUser","generateUrl","pathSections","relativePath","section","encodeFilePath","OC","MimeType","getIconUrl","onCheck","onFailure","_vm","NcEmptyContent","TemplatePreview","logger","loading","provider","emptyTemplate","_this$provider","_this$provider2","mimetypes","selectedTemplate","templates","find","template","margin","border","fetchedProvider","axios","generateOcsUrl","ocs","getTemplates","app","onSubmit","currentDirectory","fileList","_this$provider3","_this$provider4","debug","extension","_this$selectedTemplat","_this$selectedTemplat2","fileInfo","filePath","templatePath","templateType","post","createFromTemplate","normalize","addAndFetchFileInfo","then","status","model","FileInfoModel","filesClient","fileAction","fileActions","getDefaultFileAction","PERMISSION_ALL","action","$file","findFileEl","dir","fileInfoModel","showError","$event","_l","getLoggerBuilder","setApp","detectUser","Vue","mixin","TemplatePickerRoot","loadState","templatesPath","TemplatePicker","extend","TemplatePickerView","$mount","initTemplatesPlugin","attach","addMenuEntry","displayName","templateName","iconClass","fileType","actionLabel","actionHandler","initTemplatesFolder","removeMenuEntry","Plugins","register","index","newTemplatePlugin","response","copySystemTemplates","changeDirectory","template_path","FilesPlugin","_ref","query","setFilter","humanList","humanListBinary","formatFileSize","skipSmallSizes","binaryPrefixes","order","log","min","readableFormat","relativeSize","toFixed","parseFloat","toLocaleString","user","FileType","Permission","setUid","uid","isDavRessource","source","davService","match","validateData","mtime","crtime","permissions","NONE","ALL","owner","root","service","_data","_attributes","_knownDavService","constructor","handler","prop","Reflect","deleteProperty","Proxy","extname","dirname","firstMatch","url","pathname","READ","pop","move","destination","rename","File","Folder","super","DefaultType","FileAction","validateAction","_action","iconSvgInline","enabled","exec","execBatch","renderInline","values","registerFileAction","_nc_fileactions","search","getFileActions","nodes","view","node","permission","DELETE","delete","emit","Promise","all","triggerDownload","hiddenElement","downloadNodes","secret","substring","files","UPDATE","link","_getCurrentUser","result","host","encodePath","token","openLocalClient","navigator","userAgent","shouldFavorite","some","favorite","favoriteNode","willFavorite","tags","TAG_FAVORITE","StarSvg","_node$root","_node$root$startsWith","FolderSvg","OCP","Router","goToRoute","HIDDEN","ACTION_DETAILS","_window","_window$OCA","_window$OCA$Files","_nodes$0$root","Sidebar","_window2","_window2$OCA","_window2$OCA$Files","_window2$OCA$Files$Si","_window2$OCA$Files$Si2","getTarget","isProxyAvailable","HOOK_SETUP","supported","perf","ApiProxy","plugin","hook","targetQueue","onQueue","defaultSettings","settings","item","defaultValue","localSettingsSaveId","currentSettings","raw","localStorage","getItem","parse","fallbacks","getSettings","setSettings","setItem","now","performance","_a","perf_hooks","pluginId","proxiedOn","_target","args","method","proxiedTarget","keys","resolve","setupDevtoolsPlugin","pluginDescriptor","setupFn","descriptor","__VUE_DEVTOOLS_GLOBAL_HOOK__","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","__VUE_DEVTOOLS_PLUGINS__","activePinia","setActivePinia","pinia","piniaSymbol","isPlainObject","toJSON","MutationType","IS_CLIENT","USE_DEVTOOLS","__VUE_PROD_DEVTOOLS__","_global","global","globalThis","opts","xhr","XMLHttpRequest","responseType","onload","saveAs","onerror","send","corsEnabled","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","_navigator","isMacOSWebView","HTMLAnchorElement","blob","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","autoBom","Blob","fromCharCode","bom","popup","innerText","force","isSafari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","toastMessage","message","piniaMessage","__VUE_DEVTOOLS_TOAST__","isPinia","checkClipboardAccess","checkNotFocusedError","toLowerCase","fileInput","formatDisplay","display","_custom","PINIA_ROOT_LABEL","PINIA_ROOT_ID","formatStoreForInspectorTree","store","$id","formatEventData","events","operations","oldValue","newValue","operation","formatMutationType","direct","patchFunction","patchObject","isTimelineActive","componentStateTypes","MUTATIONS_LAYER_ID","INSPECTOR_ID","assign$1","getStoreType","registerPiniaDevtools","logo","packageName","homepage","api","addTimelineLayer","color","addInspector","treeFilterPlaceholder","clipboard","writeText","state","actionGlobalCopyState","readText","actionGlobalPasteState","sendInspectorTree","sendInspectorState","actionGlobalSaveState","accept","reject","onchange","file","oncancel","actionGlobalOpenStateFile","nodeActions","nodeId","$reset","inspectComponent","payload","ctx","componentInstance","_pStores","piniaStores","instanceData","editable","_isOptionsAPI","toRaw","$state","_getters","getters","getInspectorTree","inspectorId","stores","from","rootNodes","getInspectorState","inspectedStore","storeNames","storeMap","storeId","getterName","_customProperties","customProperties","formatStoreForInspectorState","editInspectorState","unshift","has","editComponentState","activeAction","runningActionId","patchActionForGrouping","actionNames","wrapWithProxy","storeActions","actionName","_actionId","trackedStore","retValue","devtoolsPlugin","originalHotUpdate","_hotUpdate","newStore","_hmrPayload","logStoreChanges","$onAction","after","onError","groupId","addTimelineEvent","layerId","time","subtitle","logType","unref","notifyComponentUpdate","deep","$subscribe","eventData","detached","flush","hotUpdate","markRaw","info","$dispose","addStoreToDevtools","addSubscription","subscriptions","callback","onCleanup","removeSubscription","idx","getCurrentScope","onScopeDispose","triggerSubscriptions","fallbackRunWithContext","mergeReactiveObjects","patchToApply","Map","Set","subPatch","targetValue","isRef","isReactive","skipHydrateSymbol","skipHydrateMap","WeakMap","createSetupStore","setup","hot","isOptionsStore","scope","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","debuggerEvents","actionSubscriptions","initialState","hotState","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","nextTick","newState","wrapAction","afterCallbackList","onErrorCallbackList","ret","catch","partialStore","_p","stopWatcher","run","stop","_r","reactive","runWithContext","setupStore","effectScope","effect","obj","actionValue","nonEnumerable","writable","configurable","extender","extensions","hydrate","defineStore","idOrOptions","setupOptions","isSetupStore","useStore","hasContext","getCurrentInstance","inject","localState","toRefs","computedGetters","createOptionsStore","compareNumbers","numberA","numberB","compareUnicode","stringA","stringB","localeCompare","abs","RE_NUMBERS","RE_LEADING_OR_TRAILING_WHITESPACES","RE_WHITESPACES","RE_INT_OR_FLOAT","RE_DATE","RE_LEADING_ZERO","RE_UNICODE_CHARACTERS","stringCompare","normalizeAlphaChunk","chunk","parseNumber","parsedNumber","isNaN","normalizeNumericChunk","chunks","createChunkMap","normalizedString","createChunkMaps","chunksMaps","createChunks","isFunction","valueOf","isNull","isSymbol","isUndefined","getMappedValueRecord","stringValue","getTime","parsedDate","_unused","parseDate","numberify","isObject","createIdentifierFn","isInteger","getOwnPropertyDescriptor","orderBy","collection","identifiers","orders","validatedIdentifiers","identifierList","getIdentifiers","validatedOrders","orderList","getOrders","identifierFns","mappedCollection","element","recordA","recordB","indexA","valuesA","indexB","valuesB","ordersLength","_result","valueA","valueB","chunksA","chunksB","lengthA","lengthB","chunkA","chunkB","compareChunks","compareOtherTypes","compareMultiple","getElementByIndex","baseOrderBy","useFilesStore","roots","getNode","getNodes","ids","getRoot","updateNodes","acc","deleteNodes","setRoot","onDeletedNode","fileStore","_initialized","usePathsStore","pathsStore","paths","getPath","addPath","useSelectionStore","selected","lastSelection","lastSelectedIndex","selection","setLastIndex","reset","userConfig","show_hidden","crop_image_previews","sort_favorites_first","useUserConfigStore","userConfigStore","onUpdate","put","viewConfig","useViewConfigStore","getConfig","setSortingBy","toggleSortingDirection","newDirection","sorting_direction","viewConfigStore","fillColor","Home","NcBreadcrumbs","filesStore","currentView","$navigation","dirs","sections","$route","getDirDisplayName","getNodeFromId","getFileIdFromPath","_this$currentView","_node$attributes","fileId","_to$query","_section$to","_section$to$query","_setupProxy","isIE","initCompat","init","ua","msie","parseInt","rv","edge","getInternetExplorerVersion","_h","$createElement","compareAndNotify","_w","offsetHeight","addResizeHandlers","_resizeObject","defaultView","removeResizeHandlers","_this","object","install","component","GlobalVue","use","_typeof","iterator","_defineProperties","_toConsumableArray","arr","arr2","_arrayWithoutHoles","iter","_iterableToArray","TypeError","_nonIterableSpread","deepEqual","val1","val2","VisibilityState","el","vnode","instance","Constructor","_classCallCheck","observer","frozen","createObserver","protoProps","destroyObserver","entry","once","throttle","_leading","throttleOptions","leading","timeout","lastState","currentArgs","throttled","_len","_key","_clear","oldResult","IntersectionObserver","entries","intersectingEntry","isIntersecting","intersectionRatio","threshold","intersection","context","observe","disconnect","_ref2","_vue_visibilityState","unbind","ObserveVisibility","_ref3","directive","config","itemsLimit","keyField","direction","listTag","itemTag","simpleArray","supportsPassive","normalizeComponent","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","originalRender","existing","__vue_script__$2","ResizeObserver","itemSize","gridItems","itemSecondarySize","minItemSize","sizeField","typeField","buffer","pageMode","prerender","emitUpdate","skipHover","listClass","itemClass","pool","totalSize","ready","hoverKey","sizes","accumulator","field","current","computedMinSize","$_computedMinItemSize","updateVisibleItems","applyPageMode","$_startIndex","$_endIndex","$_views","$_unusedViews","$_scrollDirty","$_lastUpdateScrollPosition","$_prerender","activated","lastPosition","scrollToPosition","removeListeners","addView","position","nonReactive","used","unuseView","fake","unusedViews","nr","unusedPool","requestAnimationFrame","continuous","$_refreshTimout","handleVisibilityChange","isVisible","boundingClientRect","checkItem","checkPositionDiff","count","views","startIndex","endIndex","visibleStartIndex","visibleEndIndex","scroll","getScroll","positionDiff","end","beforeSize","scrollHeight","afterSize","oldI","ceil","max","itemsLimitError","$_continuous","unusedIndex","offset","$_sortTimer","sortViews","getListenerTarget","isVertical","scrollState","bounds","getBoundingClientRect","boundsSize","top","left","innerHeight","innerWidth","clientHeight","scrollLeft","addListeners","listenerTarget","passive","scrollToItem","viewport","scrollDirection","scrollDistance","viewportEl","tagName","scrollerPosition","viewA","viewB","__vue_render__$1","_obj","_obj$1","hover","transform","mouseenter","mouseleave","notify","_withStripped","__vue_component__$2","script$1","RecycleScroller","provide","$_resizeObserver","CustomEvent","detail","contentRect","vscrollData","vscrollParent","vscrollResizeObserver","validSizes","itemsWithSize","$_undefinedMap","forceUpdate","immediate","prev","prevActiveTop","activeTop","$_updates","$_undefinedSizes","deactivated","onScrollerResize","onScrollerVisible","getItemSize","scrollToBottom","$_scrollingToBottom","cb","__vue_script__$1","__vue_render__","resize","visible","itemWithSize","__vue_component__$1","__vue_component__","watchData","sizeDependencies","emitResize","finalActive","onDataUpdate","observeSize","unobserveSize","$_pendingVScrollUpdate","updateSize","$isServer","$_forceNextVScrollUpdate","updateWatchData","$watch","onVscrollUpdate","onVscrollUpdateSize","$_pendingSizeUpdate","computeSize","$_watchData","applySize","$set","onResize","unobserve","finalOptions","installComponents","componentsPrefix","prefix","registerComponents","getChildNodes","$placeholder","$fakeParent","$nextSiblingPatched","$childNodesPatched","isFrag","parentNodeDescriptor","parentElement","patchParentNode","fakeParent","nextSiblingDescriptor","childNodes","patchNextSibling","getChildNodesWithFragments","_childNodesDescriptor","Node","realChildNodes","childNode","fromParent","getTopFragment","childNodesDescriptor","frag","firstChildDescriptor","hasChildNodes","patchChildNodes","defineProperties","_this$frag$","getFragmentLeafNodes","_Array$prototype","hasChildInFragment","removedNode","insertBeforeNode","addPlaceholder","insertNode","insertNodes","_frag","_lastNode","removePlaceholder","append","lastNode","shift","innerHTMLDescriptor","htmlString","_this2","child","domify","inserted","nextSibling","previousSibling","createComment","fragment","createDocumentFragment","replaceWith","getOwnPropertyDescriptors","getOwnPropertySymbols","propertyIsEnumerable","getIsIOS","elRef","plain","cleanups","cleanup","stopWatch","options2","flatMap","listener","ignore","capture","detectIframe","shouldListen","shouldIgnore","target2","composedPath","vOnClickOutside","binding","bubble","__onClickOutside_stop","hashCode","str","charCodeAt","useActionsMenuStore","Function","updateRootElement","span","sanitize","CustomSvgIconRender","CustomElementRender","FavoriteIcon","FileIcon","FolderIcon","Fragment","NcActionButton","NcCheckboxRadioSwitch","NcLoadingIcon","NcTextField","isMtimeAvailable","isSizeAvailable","filesListWidth","actionsMenuStore","keyboardStore","altKey","ctrlKey","metaKey","onEvent","useKeyboardStore","renamingStore","renamingNode","newName","useRenamingStore","selectionStore","backgroundFailed","columns","_this$$route","_this$$route$query","_this$source","_this$source$fileid","_this$source$fileid$t","ext","sizeOpacity","moment","fromNow","mtimeTitle","format","linkTo","_this$source2","enabledDefaultActions","is","selectedFiles","isSelected","_this$source3","_this$source3$fileid","_this$source3$fileid$","cropPreviews","searchParams","mimeIconUrl","_window$OC","_window$OC$MimeType","_window$OC$MimeType$g","mimeType","enabledActions","enabledInlineActions","_action$inline","enabledRenderActions","enabledMenuActions","findIndex","openedMenu","uniqueId","isFavorite","isRenaming","isRenamingSmallScreen","resetState","debounceIfNotCached","startRenaming","_this$$el$parentNode","_this$$el$parentNode$","debounceGetPreview","debounce","fetchAndApplyPreview","onRightClick","caches","cache","previewPromise","clearImg","CancelablePromise","onCancel","img","Image","fetchpriority","src","cancel","showSuccess","execDefaultAction","openDetailsIfAvailable","detailsAction","onSelectionChange","_this$keyboardStore","newSelectedIndex","isAlreadySelected","filesToSelect","_file$fileid","_file$fileid$toString","isMoreThanOneSelected","checkInputValidity","_this$newName$trim","_this$newName","isFileNameValid","setCustomValidity","reportValidity","trimmedName","blacklist_files_regex","checkIfNodeExists","_this$$refs$renameInp","_this$$refs$renameInp2","_this$$refs$renameInp3","_this$$refs$renameInp4","extLength","renameInput","inputField","setSelectionRange","stopRenaming","_this$newName$trim2","_this$newName2","oldName","oldSource","headers","Destination","encodeURI","_error$response","_error$response2","translate","onRename","_k","_loading","onActionClick","opacity","column","_vm$currentView","summary","currentFolder","_this$currentView2","_this$currentFolder","total","classForColumn","_column$summary","fileListEl","$resizeObserver","filesListWidthMixin","selectedNodes","areSomeNodesLoading","selectionIds","results","failedIds","keysOrMapper","reduced","$pinia","storeKey","sortingMode","_this$getConfig","sorting_mode","defaultSortKey","isAscSorting","_this$getConfig2","toggleSortBy","MenuDown","MenuUp","filesSortingMixin","mode","sortAriaLabel","FilesListHeaderButton","FilesListHeaderActions","selectAllBind","isNoneSelected","isSomeSelected","isAllSelected","indeterminate","onToggleAll","FileEntry","FilesListHeader","FilesListFooter","summaryFile","translatePlural","summaryFolder","slots","getFileId","caption","_defineProperty","isValidNavigation","isUniqueNavigation","_views","legacy","setActive","_currentView","getContents","string","XMLValidator","validate","jsonObject","parser","XMLParser","isSvg","isValidColumn","emptyView","sticky","expanded","BreadCrumbs","FilesListVirtual","NcAppContent","NcIconSvgWrapper","promise","dirContents","_this$currentFolder2","customColumn","_children","reverse","_v$attributes","_v$attributes2","isEmptyDir","isRefreshing","toPreviousDir","newView","oldView","fetchContent","newDir","oldDir","_this$$refs","_this$$refs$filesList","filesListVirtual","_this$currentView3","_this$promise","folder","contents","_vm$currentView2","_vm$currentView3","_vm$currentView4","emptyTitle","emptyCaption","timeoutID","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","wrapper","arguments_","elapsed","_ref2$upcomingOnly","upcomingOnly","ChartPie","NcAppNavigationItem","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","_this$storageStats","_this$storageStats2","_this$storageStats3","usedQuotaByte","quotaByte","quota","storageStatsTooltip","relative","setInterval","throttleUpdateStorageStats","debounceUpdateStorageStats","_ref$atBegin","atBegin","updateStorageStats","_response$data","Clipboard","NcAppSettingsDialog","NcAppSettingsSection","NcInputField","Setting","_window$OCA$Files$Set","webdavUrl","generateRemoteUrl","webdavDocs","appPasswordUrl","webdavUrlCopied","setting","onClose","setConfig","copyCloudId","Cog","NavigationQuota","NcAppNavigation","SettingsModal","Navigation","settingsOpened","currentViewId","_this$$route$params","params","parentViews","childViews","list","showView","onLegacyNavigationChanged","_window$OCA$Files$Sid","_window$OCA$Files$Sid2","newAppContent","Util","History","parseUrlQuery","itemId","jQuery","trigger","Event","heading","headingEl","setPageHeading","$router","onToggleExpand","isExpanded","_this$viewConfigStore","generateToNavigation","openSettings","onSettingsClose","registerLegacyView","classes","WorkerGlobalScope","fetch","Headers","Request","Response","HOT_PATCHER_TYPE","NOOP","createNewItem","original","final","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","sequence","isPatched","patch","chain","patchInline","restore","setFinal","__patcher","isWeb","WEB","NONCE_CHARS","generateDigestAuthHeader","digest","uri","toUpperCase","qop","ncString","ha1","algorithm","realm","pass","nonce","cnonce","ha1Hash","md5","ha1Compute","username","password","ha2","digestResponse","authValues","opaque","authHeader","getPrototypeOf","proto","setPrototypeOf","merge","output","nextItem","mergeObjects","obj1","obj2","headerPayloads","headerKeys","header","lowerHeader","hasArrayBuffer","ArrayBuffer","objToString","_request","requestOptions","patcher","newHeaders","isBuffer","isArrayBuffer","requestDataToFetchBody","signal","withCredentials","credentials","httpAgent","httpsAgent","agent","parsedURL","protocol","getFetchOptions","rootPath","defaultRootUrl","defaultDavProperties","defaultDavNamespaces","oc","getDavProperties","_nc_dav_properties","getDavNameSpaces","_nc_dav_namespaces","ns","getDefaultPropfind","client","rootUrl","createClient","requesttoken","getRequestToken","getPatcher","_options$headers","_digest","hasDigestAuth","Authorization","re","makeNonce","parseDigestAuth","response2","request","getClient","reportPayload","resultToNode","permString","CREATE","SHARE","parseWebdavPermissions","nodeData","lastmod","_rootResponse","propfindPayload","rootResponse","stat","details","contentsResponse","getDirectoryContents","includeSelf","generateFolderView","generateIdFromPath","encodeReserveRE","encodeReserveReplacer","commaRE","encode","decode","decodeURIComponent","err","castQueryParamValue","parseQuery","res","param","parts","val","stringifyQuery","trailingSlashRE","createRoute","record","redirectedFrom","router","clone","route","meta","hash","fullPath","getFullPath","matched","formatMatch","freeze","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","instances","cbs","enteredCbs","i$1","_isBeingDestroyed","routerView","_routerViewCache","depth","inactive","_routerRoot","vnodeData","keepAlive","_directInactive","_inactive","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","vm","prepatch","propsToPass","resolveProps","resolvePath","firstChar","charAt","stack","segments","segment","cleanPath","isarray","pathToRegexp_1","pathToRegexp","RegExp","groups","delimiter","optional","repeat","partial","asterisk","pattern","attachKeys","regexpToRegexp","flags","arrayToRegexp","tokensToRegExp","stringToRegexp","parse_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","PATH_REGEXP","tokens","defaultDelimiter","escaped","group","modifier","escapeGroup","escapeString","substr","encodeURIComponentPretty","matches","pretty","sensitive","strict","endsWithDelimiter","compile","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","_normalized","params$1","rawPath","parsedPath","hashIndex","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","Link","exactPath","activeClass","exactActiveClass","ariaCurrentValue","this$1$1","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","scopedSlot","$scopedSlots","$hasNormal","findAnchor","isStatic","aData","handler$1","event$1","aAttrs","defaultPrevented","button","getAttribute","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","absolutePath","stateCopy","replaceState","handlePopState","isPop","scrollBehavior","getScrollPosition","shouldScroll","saveScrollPosition","pageXOffset","pageYOffset","isValidPosition","isNumber","normalizePosition","hashStartsWithNumberRE","selector","docRect","elRect","getElementPosition","scrollTo","supportsPushState","pushState","NavigationFailureType","redirected","aborted","duplicated","createNavigationCancelledError","createRouterError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","step","flatMapComponents","flatten","hasSymbol","called","baseEl","normalizeBase","pending","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","guards","def","guard","extractGuard","bindGuard","listen","onReady","errorCb","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","abort","lastRouteIndex","lastCurrentIndex","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","hasAsync","cid","resolvedDef","resolved","reason","msg","comp","createNavigationAbortedError","createNavigationRedirectedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathLowerCase","baseLowerCase","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","prototypeAccessors","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","VueRouter$1","installed","isDef","registerInstance","callVal","_parentVnode","_router","defineReactive","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","START_LOCATION","singleMatcher","multiMatcher","decodeComponents","right","splitOnFirst","separator","separatorIndex","includeKeys","predicate","ownKeys","isNullOrUndefined","strictUriEncode","encodeFragmentIdentifier","validateArrayFormatSeparator","encodedURI","replaceMap","customDecodeURIComponent","keysSorter","removeHash","hashStart","parseValue","parseNumbers","parseBooleans","extract","queryStart","arrayFormat","arrayFormatSeparator","formatter","isEncodedArray","arrayValue","flat","parserForArrayFormat","returnValue","parameter","parameter_","key2","value2","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","parseUrl","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryString","urlObjectForFragmentEncode","pick","exclude","_window$OCP$Files","goTo","_provided","provideCache","toBeInstalled","globalProperties","createPinia","NavigationService","_settings","_name","_el","_open","_close","NavigationView","FilesListView","legacyViews","sublist","subview","processLegacyFilesViews","favoriteFolders","favoriteFoldersViews","addPathToFavorites","_node$root2","removePathFromFavorites","updateAndSortViews","getLanguage","ignorePunctuation","registerFavoritesView","noRewrite","registration","serviceWorker","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","func","applyBind","_exports","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","done","normalCompletion","didErr","_e2","return","_createClass","staticProps","_classPrivateFieldInitSpec","privateMap","privateCollection","_checkPrivateRedeclaration","_classPrivateFieldGet","receiver","_classApplyDescriptorGet","_classExtractFieldDescriptor","_classPrivateFieldSet","_classApplyDescriptorSet","cancelable","isCancelablePromise","_internals","_promise","CancelablePromiseInternal","_ref$executor","executor","_ref$internals","internals","isCanceled","onCancelList","_ref$promise","onfulfilled","onrejected","makeCancelable","createCallback","onfinally","runWhenCanceled","finally","callbacks","_step","_iterator","_CancelablePromiseInt","subClass","superClass","_inherits","_super","iterable","makeAllCancelable","allSettled","any","race","_default","onResult","arg","_step2","_iterator2","resolvable","___CSS_LOADER_EXPORT___","objectCreate","objectKeys","EventEmitter","_events","_eventsCount","_maxListeners","hasDefineProperty","defaultMaxListeners","$getMaxListeners","that","_addListener","prepend","newListener","warned","emitter","onceWrapper","fired","removeListener","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","copy","setMaxListeners","getMaxListeners","er","doError","isFn","emitNone","arg1","emitOne","arg2","emitTwo","arg3","emitThree","emitMany","addListener","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","toStr","bound","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","hasProto","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","RangeError","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","intrinsicName","first","last","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","foo","$Object","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","syms","http","https","validateParams","ctor","superCtor","super_","TempCtor","ReflectOwnKeys","ReflectApply","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","checkListener","_getMaxListeners","warning","wrapListener","Stream","EE","inherits","Readable","Writable","Duplex","Transform","PassThrough","finished","pipeline","pipe","dest","ondata","write","ondrain","readable","resume","_isStdio","onend","onclose","didOnEnd","codes","createErrorType","Base","NodeError","_Base","getMessage","oneOf","expected","thing","actual","determiner","this_len","endsWith","allowHalfOpen","_writableState","ended","process","onEndNT","highWaterMark","getBuffer","_readableState","_transform","encoding","ReadableState","EElistenerCount","Buffer","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","stream","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","read","_read","_destroy","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","enc","content","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onfinish","cleanedUp","needDrain","pipeOnDrain","dests","ev","wrap","asyncIterator","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","_flush","prefinish","_write","err2","CorkedRequest","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","rState","out","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","hint","prim","toPrimitive","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","enumerableOnly","symbols","_objectSpread","inspect","tail","alloc","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","customInspect","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","setHeader","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","isRegExp","inspect_","seen","maxStringLength","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","nodeName","singleLineValues","indentedJoin","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","isBoolean","isString","isDate","ys","protoTag","stringTag","remaining","trailer","lowbyte","lineJoiner","isArr","symMap","nodeType","freeGlobal","punycode","maxInt","tMax","skew","damp","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","stringFromCharCode","array","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","basic","oldi","baseMinusT","codePoint","inputLength","bias","lastIndexOf","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","copyProps","dst","SafeBuffer","encodingOrOffset","allocUnsafeSlow","SlowBuffer","isScrolling","overflow","getComputedStyle","getPropertyValue","scrollingElement","callBound","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","$wm","$m","$o","channel","assert","objects","listGet","listHas","listSet","ClientRequest","statusCodes","defaultProtocol","hostname","port","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","getXHR","XDomainRequest","checkTypeSupport","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","rStates","readyStates","preferBinary","_opts","_body","_headers","auth","useFetch","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","headersList","keyName","controller","_fetchAbortController","requestTimeout","_fetchResponse","_resetTimers","_connect","_xhr","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","_resumeFetch","pipeTo","getReader","_pos","responseURL","getAllResponseHeaders","_charset","charsetMatch","responseText","newData","MSStreamReader","byteLength","readAsArrayBuffer","isEncoding","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","utils","defaults","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","leaf","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","bracketEqualsPos","pos","maybeMap","encodedVal","combine","parseValues","newObj","compact","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","encoder","encodeValuesOnly","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","findFlag","objKeys","adjustedPrefix","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","hexTable","arrayToObject","refs","compacted","compactQueue","strWithoutPlus","defaultEncoder","kind","escape","mapped","mergeTarget","targetItem","Url","slashes","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","querystring","urlParse","parseQueryString","slashesDenoteHost","splitter","uSplit","rest","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","qm","resolveObject","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","isAbsolute","trace","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","getter","definition","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/files_external-main.js b/dist/files_external-main.js new file mode 100644 index 0000000000000..ad50ad4305615 --- /dev/null +++ b/dist/files_external-main.js @@ -0,0 +1,3 @@ +/*! For license information please see files_external-main.js.LICENSE.txt */ +(()=>{"use strict";var e,t={37935:(e,t,n)=>{var r=n(31352),i=n(79954),o=n(79753),s=n(3255),a=n(26937),l=n(20144),u=n(17499);const c=(0,u.IY)().setApp("files").detectUser().build();var d;!function(e){e.DEFAULT="default",e.HIDDEN="hidden"}(d||(d={}));class f{constructor(e){var t,n,r;t=this,r=void 0,(n=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(n="_action"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get default(){return this._action.default}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||"string"!=typeof e.id)throw new Error("Invalid id");if(!e.displayName||"function"!=typeof e.displayName)throw new Error("Invalid displayName function");if(!e.iconSvgInline||"function"!=typeof e.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!e.exec||"function"!=typeof e.exec)throw new Error("Invalid exec function");if("enabled"in e&&"function"!=typeof e.enabled)throw new Error("Invalid enabled function");if("execBatch"in e&&"function"!=typeof e.execBatch)throw new Error("Invalid execBatch function");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order");if(e.default&&!Object.values(d).includes(e.default))throw new Error("Invalid default");if("inline"in e&&"function"!=typeof e.inline)throw new Error("Invalid inline function");if("renderInline"in e&&"function"!=typeof e.renderInline)throw new Error("Invalid renderInline function")}}const h=function(e){void 0===window._nc_fileactions&&(window._nc_fileactions=[],c.debug("FileActions initialized")),window._nc_fileactions.find((t=>t.id===e.id))?c.error("FileAction ".concat(e.id," already registered"),{action:e}):window._nc_fileactions.push(e)};var p;!function(e){e[e.SUCCESS=0]="SUCCESS",e[e.ERROR=1]="ERROR",e[e.INDETERMINATE=2]="INDETERMINATE",e[e.INCOMPLETE_CONF=3]="INCOMPLETE_CONF",e[e.UNAUTHORIZED=4]="UNAUTHORIZED",e[e.TIMEOUT=5]="TIMEOUT",e[e.NETWORK_ERROR=6]="NETWORK_ERROR"}(p||(p={}));const g=function(e){return!(!e.status||e.status===p.SUCCESS)&&(e.userProvided||"password::global::user"===e.authMechanism)};var w,m,v,A=n(77958),b=n(62520);null===(w=(0,A.ts)())?(0,u.IY)().setApp("files").build():(0,u.IY)().setApp("files").setUid(w.uid).build(),function(e){e.Folder="folder",e.File="file"}(m||(m={})),function(e){e[e.NONE=0]="NONE",e[e.CREATE=4]="CREATE",e[e.READ=1]="READ",e[e.UPDATE=2]="UPDATE",e[e.DELETE=8]="DELETE",e[e.SHARE=16]="SHARE",e[e.ALL=31]="ALL"}(v||(v={}));const E=function(e,t){return null!==e.match(t)},_=(e,t)=>{if("id"in e&&("number"!=typeof e.id||e.id<0))throw new Error("Invalid id type of value");if(!e.source)throw new Error("Missing mandatory source");try{new URL(e.source)}catch(e){throw new Error("Invalid source format, source must be a valid URL")}if(!e.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if("mtime"in e&&!(e.mtime instanceof Date))throw new Error("Invalid mtime type");if("crtime"in e&&!(e.crtime instanceof Date))throw new Error("Invalid crtime type");if(!e.mime||"string"!=typeof e.mime||!e.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in e&&"number"!=typeof e.size)throw new Error("Invalid size type");if("permissions"in e&&!("number"==typeof e.permissions&&e.permissions>=v.NONE&&e.permissions<=v.ALL))throw new Error("Invalid permissions");if("owner"in e&&null!==e.owner&&"string"!=typeof e.owner)throw new Error("Invalid owner type");if("attributes"in e&&"object"!=typeof e.attributes)throw new Error("Invalid attributes format");if("root"in e&&"string"!=typeof e.root)throw new Error("Invalid root format");if(e.root&&!e.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(e.root&&!e.source.includes(e.root))throw new Error("Root must be part of the source");if(e.root&&E(e.source,t)){const n=e.source.match(t)[0];if(!e.source.includes((0,b.join)(n,e.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}};class y{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(e,t){_(e,t||this._knownDavService),this._data=e;const n={set:(e,t,n)=>(this._data.mtime=new Date,Reflect.set(e,t,n)),deleteProperty:(e,t)=>(this._data.mtime=new Date,Reflect.deleteProperty(e,t))};this._attributes=new Proxy(e.attributes||{},n),delete this._data.attributes,t&&(this._knownDavService=t)}get source(){return this._data.source.replace(/\/$/i,"")}get basename(){return(0,b.basename)(this.source)}get extension(){return(0,b.extname)(this.source)}get dirname(){if(this.root){const e=this.source.indexOf(this.root);return(0,b.dirname)(this.source.slice(e+this.root.length)||"/")}const e=new URL(this.source);return(0,b.dirname)(e.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:v.NONE:v.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return E(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,b.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){const e=this.source.indexOf(this.root);return this.source.slice(e+this.root.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}move(e){_({...this._data,source:e},this._knownDavService),this._data.source=e,this._data.mtime=new Date}rename(e){if(e.includes("/"))throw new Error("Invalid basename");this.move((0,b.dirname)(this.source)+"/"+e)}}class x extends y{constructor(e){super({...e,mime:"httpd/unix-directory"})}get type(){return m.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const C=function(e){if(e.type===m.File)return!1;const t=e.attributes;return!(!t.scope||!t.backend||"personal"!==t.scope&&"system"!==t.scope)};h(new f({id:"credentials-external-storage",displayName:()=>(0,r.Iu)("files","Enter missing credentials"),iconSvgInline:()=>'',enabled:e=>{var t;if(1!==e.length)return!1;const n=e[0];if(!C(n))return!1;const r=(null===(t=n.attributes)||void 0===t?void 0:t.config)||{};return!!g(r)},async exec(e){const t=await a.Z.get((0,o.generateOcsUrl)("/apps/files_external/api/v1/auth"),{validateStatus:()=>!0}),n=(null==t?void 0:t.data)||{};if(n.ocs.data.user&&n.ocs.data.password){const t=(await a.Z.put((0,o.generateUrl)("apps/files_external/userglobalstorages/{id}",e.attributes),{backendOptions:n.ocs.data})).data;if(t.status!==p.SUCCESS)return(0,s.x2)((0,r.Iu)("files_external","Unable to update this external storage config. {statusMessage}",{statusMessage:(null==t?void 0:t.statusMessage)||""})),null;(0,s.s$)((0,r.Iu)("files_external","New configuration successfully saved")),l.default.set(e.attributes,"config",t)}return null},order:-1e3,default:d.DEFAULT,inline:()=>!0}));var I,S=n(93379),O=n.n(S),R=n(7795),N=n.n(R),T=n(90569),D=n.n(T),U=n(3565),H=n.n(U),k=n(19216),M=n.n(k),L=n(44589),P=n.n(L),j=n(17150),B={};B.styleTagTransform=P(),B.setAttributes=H(),B.insert=D().bind(null,"head"),B.domAPI=N(),B.insertStyleElement=M(),O()(j.Z,B),j.Z&&j.Z.locals&&j.Z.locals;const V="/files/".concat(null===(I=(0,A.ts)())||void 0===I?void 0:I.uid),F=e=>{var t;const n=(e.path+"/"+e.name).replace(/^\//gm,"");return new x({id:e.id,source:(0,o.generateRemoteUrl)("dav"+V+"/"+n),root:V,owner:(null===(t=(0,A.ts)())||void 0===t?void 0:t.uid)||null,permissions:e.config.status!==p.SUCCESS?v.NONE:(null==e?void 0:e.permissions)||v.READ,attributes:{displayName:n,...e}})};h(new f({id:"check-external-storage",displayName:()=>"",iconSvgInline:()=>"",enabled:e=>e.every((e=>!0===C(e))),exec:async()=>null,async renderInline(e){let t=null;try{const i=await function(e){const t=arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?"userstorages":"userglobalstorages";return a.Z.get((0,o.generateUrl)("apps/files_external/".concat(t,"/").concat(e,"?testOnly=false")))}(e.attributes.id,"system"===e.attributes.scope);var n;if(t=i.data,l.default.set(e.attributes,"config",t),t.status!==p.SUCCESS)throw new Error((null===(n=t)||void 0===n?void 0:n.statusMessage)||(0,r.Iu)("files_external","There was an error with this external storage."));return null}catch(n){if(n.response&&!t)return(0,s.K2)((0,r.Iu)("files_external","We were unable to check the external storage {basename}",{basename:e.basename})),null;const i=g(t),o=document.createElement("span");o.classList.add("files-list__row-status--".concat(i?"warning":"error"));const a=document.createElement("span");return a.className="files-list__row-status",i||(a.innerHTML='',a.title=n.message),a.prepend(o),a}},order:10})),h(new f({id:"open-in-files-external-storage",displayName:e=>{var t,n;return((null==e||null===(t=e[0])||void 0===t||null===(n=t.attributes)||void 0===n?void 0:n.config)||{status:p.INDETERMINATE}).status!==p.SUCCESS?(0,r.Iu)("files_external","Examine this faulty external storage configuration"):(0,r.Iu)("files","Open in files")},iconSvgInline:()=>"",enabled:(e,t)=>"extstoragemounts"===t.id,async exec(e){const t=e.attributes.config;return(null==t?void 0:t.status)!==p.SUCCESS?(window.OC.dialogs.confirm((0,r.Iu)("files_external","There was an error with this external storage. Do you want to review this mount point config in the settings page?"),(0,r.Iu)("files_external","External mount error"),(t=>{if(!0===t){const t="personal"===e.attributes.scope?"user":"admin";window.location.href=(0,o.generateUrl)("/settings/".concat(t,"/externalstorages"))}})),null):(window.OCP.Files.Router.goToRoute(null,{view:"files"},{dir:e.path}),null)},order:-1e3,default:d.HIDDEN}));const Z=(0,i.j)("files_external","allowUserMounting",!1);window.OCP.Files.Navigation.register({id:"extstoragemounts",name:(0,r.Iu)("files_external","External storage"),caption:(0,r.Iu)("files_external","List of external storage."),emptyCaption:Z?(0,r.Iu)("files_external","There is no external storage configured. You can configure them in your Personal settings."):(0,r.Iu)("files_external","There is no external storage configured and you don't have the permission to configure them."),emptyTitle:(0,r.Iu)("files_external","No external storage"),icon:'',order:30,columns:[{id:"storage-type",title:(0,r.Iu)("files_external","Storage type"),render(e){var t;const n=(null===(t=e.attributes)||void 0===t?void 0:t.backend)||(0,r.Iu)("files_external","Unknown"),i=document.createElement("span");return i.textContent=n,i}},{id:"scope",title:(0,r.Iu)("files_external","Scope"),render(e){var t;const n=document.createElement("span");let i=(0,r.Iu)("files_external","Personal");return"system"===(null===(t=e.attributes)||void 0===t?void 0:t.scope)&&(i=(0,r.Iu)("files_external","System")),n.textContent=i,n}}],getContents:async()=>{var e;const t=(await a.Z.get((0,o.generateOcsUrl)("apps/files_external/api/v1/mounts"))).data.ocs.data.map(F);return{folder:new x({id:0,source:(0,o.generateRemoteUrl)("dav"+V),root:V,owner:(null===(e=(0,A.ts)())||void 0===e?void 0:e.uid)||null,permissions:v.READ}),contents:t}}})},17150:(e,t,n)=>{n.d(t,{Z:()=>a});var r=n(87537),i=n.n(r),o=n(23645),s=n.n(o)()(i());s.push([e.id,".files-list__row-status{display:flex;width:44px;justify-content:center;align-items:center;height:100%}.files-list__row-status svg{width:24px;height:24px}.files-list__row-status svg path{fill:currentColor}.files-list__row-status--error,.files-list__row-status--warning{position:absolute;display:block;top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1}.files-list__row-status--error{background:var(--color-error)}.files-list__row-status--warning{background:var(--color-warning)}","",{version:3,sources:["webpack://./apps/files_external/src/css/fileEntryStatus.scss"],names:[],mappings:"AAAA,wBACC,YAAA,CACG,UAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CAEH,4BACC,UAAA,CACA,WAAA,CAEA,iCACC,iBAAA,CAIF,gEAEC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,+BACC,6BAAA,CAGD,iCACC,+BAAA",sourcesContent:[".files-list__row-status {\n\tdisplay: flex;\n width: 44px;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n\tsvg {\n\t\twidth: 24px;\n\t\theight: 24px;\n\n\t\tpath {\n\t\t\tfill: currentColor;\n\t\t}\n\t}\n\n\t&--error,\n\t&--warning {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\topacity: .1;\n\t\tz-index: -1;\n\t}\n\n\t&--error {\n\t\tbackground: var(--color-error);\n\t}\n\n\t&--warning {\n\t\tbackground: var(--color-warning);\n\t}\n}"],sourceRoot:""}]);const a=s}},n={};function r(e){var i=n[e];if(void 0!==i)return i.exports;var o=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=t,e=[],r.O=(t,n,i,o)=>{if(!n){var s=1/0;for(c=0;c=o)&&Object.keys(r.O).every((e=>r.O[e](n[l])))?n.splice(l--,1):(a=!1,o0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[n,i,o]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=4692,(()=>{r.b=document.baseURI||self.location.href;var e={4692:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var i,o,s=n[0],a=n[1],l=n[2],u=0;if(s.some((t=>0!==e[t]))){for(i in a)r.o(a,i)&&(r.m[i]=a[i]);if(l)var c=l(r)}for(t&&t(n);ur(37935)));i=r.O(i)})(); +//# sourceMappingURL=files_external-main.js.map?v=6e28b0153f0e25395ed8 \ No newline at end of file diff --git a/dist/files_external-main.js.LICENSE.txt b/dist/files_external-main.js.LICENSE.txt new file mode 100644 index 0000000000000..a4193b96aee8b --- /dev/null +++ b/dist/files_external-main.js.LICENSE.txt @@ -0,0 +1,65 @@ +/** + * @copyright Copyright (c) 2021 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +/** + * @copyright Copyright (c) 2022 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ diff --git a/dist/files_external-main.js.map b/dist/files_external-main.js.map new file mode 100644 index 0000000000000..45923aec2ab4c --- /dev/null +++ b/dist/files_external-main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"files_external-main.js?v=6e28b0153f0e25395ed8","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files_external/src/utils/credentialsUtils.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.esm.js","webpack:///nextcloud/apps/files_external/src/utils/externalStorageUtils.ts","webpack:///nextcloud/apps/files_external/src/actions/enterCredentialsAction.ts","webpack://nextcloud/./apps/files_external/src/css/fileEntryStatus.scss?3c5c","webpack:///nextcloud/apps/files_external/src/services/externalStorage.ts","webpack:///nextcloud/apps/files_external/src/actions/inlineStorageCheckAction.ts","webpack:///nextcloud/apps/files_external/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_external/src/main.ts","webpack:///nextcloud/apps/files_external/src/css/fileEntryStatus.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport logger from '../logger';\nexport var DefaultType;\n(function (DefaultType) {\n DefaultType[\"DEFAULT\"] = \"default\";\n DefaultType[\"HIDDEN\"] = \"hidden\";\n})(DefaultType || (DefaultType = {}));\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","// @see https://github.com/nextcloud/server/blob/ac2bc2384efe3c15ff987b87a7432bc60d545c67/lib/public/Files/StorageNotAvailableException.php#L41\nexport var STORAGE_STATUS;\n(function (STORAGE_STATUS) {\n STORAGE_STATUS[STORAGE_STATUS[\"SUCCESS\"] = 0] = \"SUCCESS\";\n STORAGE_STATUS[STORAGE_STATUS[\"ERROR\"] = 1] = \"ERROR\";\n STORAGE_STATUS[STORAGE_STATUS[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n STORAGE_STATUS[STORAGE_STATUS[\"INCOMPLETE_CONF\"] = 3] = \"INCOMPLETE_CONF\";\n STORAGE_STATUS[STORAGE_STATUS[\"UNAUTHORIZED\"] = 4] = \"UNAUTHORIZED\";\n STORAGE_STATUS[STORAGE_STATUS[\"TIMEOUT\"] = 5] = \"TIMEOUT\";\n STORAGE_STATUS[STORAGE_STATUS[\"NETWORK_ERROR\"] = 6] = \"NETWORK_ERROR\";\n})(STORAGE_STATUS || (STORAGE_STATUS = {}));\nexport const isMissingAuthConfig = function (config) {\n // If we don't know the status, assume it is ok\n if (!config.status || config.status === STORAGE_STATUS.SUCCESS) {\n return false;\n }\n return config.userProvided || config.authMechanism === 'password::global::user';\n};\n","import { getCanonicalLocale } from '@nextcloud/l10n';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { join, basename, extname, dirname } from 'path';\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst humanList = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\nconst humanListBinary = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];\n/**\n * Format a file size in a human-like format. e.g. 42GB\n *\n * @param size in bytes\n * @param skipSmallSizes avoid rendering tiny sizes and return '< 1 KB' instead\n */\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false) {\n if (typeof size === 'string') {\n size = Number(size);\n }\n /*\n * @note This block previously used Log base 1024, per IEC 80000-13;\n * however, the wrong prefix was used. Now we use decimal calculation\n * with base 1000 per the SI. Base 1024 calculation with binary\n * prefixes is optional, but has yet to be added to the UI.\n */\n // Calculate Log with base 1024 or 1000: size = base ** order\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(binaryPrefixes ? 1024 : 1000)) : 0;\n // Stay in range of the byte sizes that are defined\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(binaryPrefixes ? 1024 : 1000, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== '0.0' ? '< 1 ' : '0 ') + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n }\n else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + ' ' + readableFormat;\n}\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst getLogger = user => {\n if (user === null) {\n return getLoggerBuilder()\n .setApp('files')\n .build();\n }\n return getLoggerBuilder()\n .setApp('files')\n .setUid(user.uid)\n .build();\n};\nvar logger = getLogger(getCurrentUser());\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === 'string'\n ? this.getEntryIndex(entry)\n : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn('Entry not found, nothing removed', { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\n getEntries(context) {\n if (context) {\n return this._entries\n .filter(entry => typeof entry.if === 'function' ? entry.if(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex(entry => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass)) {\n throw new Error('Invalid entry');\n }\n if (typeof entry.id !== 'string'\n || typeof entry.displayName !== 'string') {\n throw new Error('Invalid id or displayName property');\n }\n if ((entry.iconClass && typeof entry.iconClass !== 'string')\n || (entry.iconSvgInline && typeof entry.iconSvgInline !== 'string')) {\n throw new Error('Invalid icon provided');\n }\n if (entry.if !== undefined && typeof entry.if !== 'function') {\n throw new Error('Invalid if property');\n }\n if (entry.templateName && typeof entry.templateName !== 'string') {\n throw new Error('Invalid templateName property');\n }\n if (entry.handler && typeof entry.handler !== 'function') {\n throw new Error('Invalid handler property');\n }\n if (!entry.templateName && !entry.handler) {\n throw new Error('At least a templateName or a handler must be provided');\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error('Duplicate entry');\n }\n }\n}\nconst getNewFileMenu = function () {\n if (typeof window._nc_newfilemenu === 'undefined') {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug('NewFileMenu initialized');\n }\n return window._nc_newfilemenu;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar FileType;\n(function (FileType) {\n FileType[\"Folder\"] = \"folder\";\n FileType[\"File\"] = \"file\";\n})(FileType || (FileType = {}));\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Permission;\n(function (Permission) {\n Permission[Permission[\"NONE\"] = 0] = \"NONE\";\n Permission[Permission[\"CREATE\"] = 4] = \"CREATE\";\n Permission[Permission[\"READ\"] = 1] = \"READ\";\n Permission[Permission[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission[Permission[\"DELETE\"] = 8] = \"DELETE\";\n Permission[Permission[\"SHARE\"] = 16] = \"SHARE\";\n Permission[Permission[\"ALL\"] = 31] = \"ALL\";\n})(Permission || (Permission = {}));\n/**\n * Parse the webdav permission string to a permission enum\n * @see https://github.com/nextcloud/server/blob/71f698649f578db19a22457cb9d420fb62c10382/lib/public/Files/DavUtil.php#L58-L88\n */\nconst parseWebdavPermissions = function (permString = '') {\n let permissions = Permission.NONE;\n if (!permString)\n return permissions;\n if (permString.includes('C') || permString.includes('K'))\n permissions |= Permission.CREATE;\n if (permString.includes('G'))\n permissions |= Permission.READ;\n if (permString.includes('W') || permString.includes('N') || permString.includes('V'))\n permissions |= Permission.UPDATE;\n if (permString.includes('D'))\n permissions |= Permission.DELETE;\n if (permString.includes('R'))\n permissions |= Permission.SHARE;\n return permissions;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst isDavRessource = function (source, davService) {\n return source.match(davService) !== null;\n};\n/**\n * Validate Node construct data\n */\nconst validateData = (data, davService) => {\n if ('id' in data && (typeof data.id !== 'number' || data.id < 0)) {\n throw new Error('Invalid id type of value');\n }\n if (!data.source) {\n throw new Error('Missing mandatory source');\n }\n try {\n new URL(data.source);\n }\n catch (e) {\n throw new Error('Invalid source format, source must be a valid URL');\n }\n if (!data.source.startsWith('http')) {\n throw new Error('Invalid source format, only http(s) is supported');\n }\n if ('mtime' in data && !(data.mtime instanceof Date)) {\n throw new Error('Invalid mtime type');\n }\n if ('crtime' in data && !(data.crtime instanceof Date)) {\n throw new Error('Invalid crtime type');\n }\n if (!data.mime || typeof data.mime !== 'string'\n || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error('Missing or invalid mandatory mime');\n }\n if ('size' in data && typeof data.size !== 'number') {\n throw new Error('Invalid size type');\n }\n if ('permissions' in data && !(typeof data.permissions === 'number'\n && data.permissions >= Permission.NONE\n && data.permissions <= Permission.ALL)) {\n throw new Error('Invalid permissions');\n }\n if ('owner' in data\n && data.owner !== null\n && typeof data.owner !== 'string') {\n throw new Error('Invalid owner type');\n }\n if ('attributes' in data && typeof data.attributes !== 'object') {\n throw new Error('Invalid attributes format');\n }\n if ('root' in data && typeof data.root !== 'string') {\n throw new Error('Invalid root format');\n }\n if (data.root && !data.root.startsWith('/')) {\n throw new Error('Root must start with a leading slash');\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error('Root must be part of the source');\n }\n if (data.root && isDavRessource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error('The root must be relative to the service. e.g /files/emma');\n }\n }\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(data, davService) {\n // Validate data\n validateData(data, davService || this._knownDavService);\n this._data = data;\n const handler = {\n set: (target, prop, value) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.deleteProperty(target, prop);\n },\n };\n // Proxy the attributes to update the mtime on change\n this._attributes = new Proxy(data.attributes || {}, handler);\n delete this._data.attributes;\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n */\n get source() {\n // strip any ending slash\n return this._data.source.replace(/\\/$/i, '');\n }\n /**\n * Get this object name\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return dirname(this.source.slice(firstMatch + this.root.length) || '/');\n }\n // This should always be a valid URL\n // as this is tested in the constructor\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n // If this is not a dav ressource, we can only read it\n if (this.owner === null && !this.isDavRessource) {\n return Permission.READ;\n }\n // If the permissions are not defined, we have none\n return this._data.permissions !== undefined\n ? this._data.permissions\n : Permission.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n // Remote ressources have no owner\n if (!this.isDavRessource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return isDavRessource(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n // If provided (recommended), use the root and strip away the ending slash\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, '$1');\n }\n // Use the source to get the root from the dav service\n if (this.isDavRessource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return this.source.slice(firstMatch + this.root.length) || '/';\n }\n return (this.dirname + '/' + this.basename).replace(/\\/\\//g, '/');\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n this._data.source = destination;\n this._data.mtime = new Date();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n */\n rename(basename) {\n if (basename.includes('/')) {\n throw new Error('Invalid basename');\n }\n this.move(dirname(this.source) + '/' + basename);\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Folder extends Node {\n constructor(data) {\n // enforcing mimes\n super({\n ...data,\n mime: 'httpd/unix-directory'\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return 'httpd/unix-directory';\n }\n}\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nconst registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function () {\n return window._nc_fileactions || [];\n};\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n/**\n * Add a new menu entry to the upload manager menu\n */\nconst addNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\n/**\n * Remove a previously registered entry from the upload menu\n */\nconst removeNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\n/**\n * Get the list of registered entries from the upload menu\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\nconst getNewFileMenuEntries = function (context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context);\n};\n\nexport { File, FileAction, FileType, Folder, Node, Permission, addNewFileMenuEntry, formatFileSize, getFileActions, getNewFileMenuEntries, parseWebdavPermissions, registerFileAction, removeNewFileMenuEntry };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { FileType, Node } from '@nextcloud/files';\nexport const isNodeExternalStorage = function (node) {\n // Not a folder, not a storage\n if (node.type === FileType.File) {\n return false;\n }\n // No backend or scope, not a storage\n const attributes = node.attributes;\n if (!attributes.scope || !attributes.backend) {\n return false;\n }\n // Specific markers that we're sure are ext storage only\n return attributes.scope === 'personal' || attributes.scope === 'system';\n};\n","import { generateOcsUrl, generateUrl } from '@nextcloud/router';\nimport { showError, showSuccess } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport LoginSvg from '@mdi/svg/svg/login.svg?raw';\nimport Vue from 'vue';\nimport { registerFileAction, FileAction, DefaultType } from '../../../files/src/services/FileAction';\nimport { STORAGE_STATUS, isMissingAuthConfig } from '../utils/credentialsUtils';\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils';\nexport const action = new FileAction({\n id: 'credentials-external-storage',\n displayName: () => t('files', 'Enter missing credentials'),\n iconSvgInline: () => LoginSvg,\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n if (!isNodeExternalStorage(node)) {\n return false;\n }\n const config = (node.attributes?.config || {});\n if (isMissingAuthConfig(config)) {\n return true;\n }\n return false;\n },\n async exec(node) {\n // always resolve auth request, we'll process the data afterwards\n const response = await axios.get(generateOcsUrl('/apps/files_external/api/v1/auth'), {\n validateStatus: () => true,\n });\n const data = (response?.data || {});\n if (data.ocs.data.user && data.ocs.data.password) {\n const configResponse = await axios.put(generateUrl('apps/files_external/userglobalstorages/{id}', node.attributes), {\n backendOptions: data.ocs.data,\n });\n const config = configResponse.data;\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n showError(t('files_external', 'Unable to update this external storage config. {statusMessage}', {\n statusMessage: config?.statusMessage || '',\n }));\n return null;\n }\n // Success update config attribute\n showSuccess(t('files_external', 'New configuration successfully saved'));\n Vue.set(node.attributes, 'config', config);\n }\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.DEFAULT,\n inline: () => true,\n});\nregisterFileAction(action);\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./fileEntryStatus.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./fileEntryStatus.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { Folder, Permission } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { STORAGE_STATUS } from '../utils/credentialsUtils';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst entryToFolder = (ocsEntry) => {\n const path = (ocsEntry.path + '/' + ocsEntry.name).replace(/^\\//gm, '');\n return new Folder({\n id: ocsEntry.id,\n source: generateRemoteUrl('dav' + rootPath + '/' + path),\n root: rootPath,\n owner: getCurrentUser()?.uid || null,\n permissions: ocsEntry.config.status !== STORAGE_STATUS.SUCCESS\n ? Permission.NONE\n : ocsEntry?.permissions || Permission.READ,\n attributes: {\n displayName: path,\n ...ocsEntry,\n },\n });\n};\nexport const getContents = async () => {\n const response = await axios.get(generateOcsUrl('apps/files_external/api/v1/mounts'));\n const contents = response.data.ocs.data.map(entryToFolder);\n return {\n folder: new Folder({\n id: 0,\n source: generateRemoteUrl('dav' + rootPath),\n root: rootPath,\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.READ,\n }),\n contents,\n };\n};\nexport const getStatus = function (id, global = true) {\n const type = global ? 'userglobalstorages' : 'userstorages';\n return axios.get(generateUrl(`apps/files_external/${type}/${id}?testOnly=false`));\n};\n","import { showWarning } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport AlertSvg from '@mdi/svg/svg/alert-circle.svg?raw';\nimport Vue from 'vue';\nimport '../css/fileEntryStatus.scss';\nimport { getStatus } from '../services/externalStorage';\nimport { isMissingAuthConfig, STORAGE_STATUS } from '../utils/credentialsUtils';\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils';\nimport { registerFileAction, FileAction } from '../../../files/src/services/FileAction';\nexport const action = new FileAction({\n id: 'check-external-storage',\n displayName: () => '',\n iconSvgInline: () => '',\n enabled: (nodes) => {\n return nodes.every(node => isNodeExternalStorage(node) === true);\n },\n exec: async () => null,\n /**\n * Use this function to check the storage availability\n * We then update the node attributes directly.\n */\n async renderInline(node) {\n let config = null;\n try {\n const response = await getStatus(node.attributes.id, node.attributes.scope === 'system');\n config = response.data;\n Vue.set(node.attributes, 'config', config);\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n throw new Error(config?.statusMessage || t('files_external', 'There was an error with this external storage.'));\n }\n return null;\n }\n catch (error) {\n // If axios failed or if something else prevented\n // us from getting the config\n if (error.response && !config) {\n showWarning(t('files_external', 'We were unable to check the external storage {basename}', {\n basename: node.basename,\n }));\n return null;\n }\n // Checking if we really have an error\n const isWarning = isMissingAuthConfig(config);\n const overlay = document.createElement('span');\n overlay.classList.add(`files-list__row-status--${isWarning ? 'warning' : 'error'}`);\n const span = document.createElement('span');\n span.className = 'files-list__row-status';\n // Only show an icon for errors, warning like missing credentials\n // have a dedicated inline action button\n if (!isWarning) {\n span.innerHTML = AlertSvg;\n span.title = error.message;\n }\n span.prepend(overlay);\n return span;\n }\n },\n order: 10,\n});\nregisterFileAction(action);\n","import { generateUrl } from '@nextcloud/router';\nimport { translate as t } from '@nextcloud/l10n';\nimport { registerFileAction, FileAction, DefaultType } from '../../../files/src/services/FileAction';\nimport { STORAGE_STATUS } from '../utils/credentialsUtils';\nexport const action = new FileAction({\n id: 'open-in-files-external-storage',\n displayName: (nodes) => {\n const config = nodes?.[0]?.attributes?.config || { status: STORAGE_STATUS.INDETERMINATE };\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n return t('files_external', 'Examine this faulty external storage configuration');\n }\n return t('files', 'Open in files');\n },\n iconSvgInline: () => '',\n enabled: (nodes, view) => view.id === 'extstoragemounts',\n async exec(node) {\n const config = node.attributes.config;\n if (config?.status !== STORAGE_STATUS.SUCCESS) {\n window.OC.dialogs.confirm(t('files_external', 'There was an error with this external storage. Do you want to review this mount point config in the settings page?'), t('files_external', 'External mount error'), (redirect) => {\n if (redirect === true) {\n const scope = node.attributes.scope === 'personal' ? 'user' : 'admin';\n window.location.href = generateUrl(`/settings/${scope}/externalstorages`);\n }\n });\n return null;\n }\n // Do not use fileid as we don't have that information\n // from the external storage api\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files' }, { dir: node.path });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n});\nregisterFileAction(action);\n","import { translate as t } from '@nextcloud/l10n';\nimport { loadState } from '@nextcloud/initial-state';\nimport FolderNetworkSvg from '@mdi/svg/svg/folder-network.svg?raw';\nimport './actions/enterCredentialsAction';\nimport './actions/inlineStorageCheckAction';\nimport './actions/openInFilesAction';\nimport { getContents } from './services/externalStorage';\nconst allowUserMounting = loadState('files_external', 'allowUserMounting', false);\nconst Navigation = window.OCP.Files.Navigation;\nNavigation.register({\n id: 'extstoragemounts',\n name: t('files_external', 'External storage'),\n caption: t('files_external', 'List of external storage.'),\n emptyCaption: allowUserMounting\n ? t('files_external', 'There is no external storage configured. You can configure them in your Personal settings.')\n : t('files_external', 'There is no external storage configured and you don\\'t have the permission to configure them.'),\n emptyTitle: t('files_external', 'No external storage'),\n icon: FolderNetworkSvg,\n order: 30,\n columns: [\n {\n id: 'storage-type',\n title: t('files_external', 'Storage type'),\n render(node) {\n const backend = node.attributes?.backend || t('files_external', 'Unknown');\n const span = document.createElement('span');\n span.textContent = backend;\n return span;\n },\n },\n {\n id: 'scope',\n title: t('files_external', 'Scope'),\n render(node) {\n const span = document.createElement('span');\n let scope = t('files_external', 'Personal');\n if (node.attributes?.scope === 'system') {\n scope = t('files_external', 'System');\n }\n span.textContent = scope;\n return span;\n },\n },\n ],\n getContents,\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-status{display:flex;width:44px;justify-content:center;align-items:center;height:100%}.files-list__row-status svg{width:24px;height:24px}.files-list__row-status svg path{fill:currentColor}.files-list__row-status--error,.files-list__row-status--warning{position:absolute;display:block;top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1}.files-list__row-status--error{background:var(--color-error)}.files-list__row-status--warning{background:var(--color-warning)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_external/src/css/fileEntryStatus.scss\"],\"names\":[],\"mappings\":\"AAAA,wBACC,YAAA,CACG,UAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CAEH,4BACC,UAAA,CACA,WAAA,CAEA,iCACC,iBAAA,CAIF,gEAEC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,+BACC,6BAAA,CAGD,iCACC,+BAAA\",\"sourcesContent\":[\".files-list__row-status {\\n\\tdisplay: flex;\\n width: 44px;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n\\n\\tsvg {\\n\\t\\twidth: 24px;\\n\\t\\theight: 24px;\\n\\n\\t\\tpath {\\n\\t\\t\\tfill: currentColor;\\n\\t\\t}\\n\\t}\\n\\n\\t&--error,\\n\\t&--warning {\\n\\t\\tposition: absolute;\\n\\t\\tdisplay: block;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\topacity: .1;\\n\\t\\tz-index: -1;\\n\\t}\\n\\n\\t&--error {\\n\\t\\tbackground: var(--color-error);\\n\\t}\\n\\n\\t&--warning {\\n\\t\\tbackground: var(--color-warning);\\n\\t}\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4692;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4692: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(37935)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","DefaultType","FileAction","constructor","action","this","validateAction","_action","id","displayName","iconSvgInline","enabled","exec","execBatch","order","default","inline","renderInline","Error","Object","values","includes","registerFileAction","window","_nc_fileactions","logger","debug","find","search","error","concat","push","STORAGE_STATUS","isMissingAuthConfig","config","status","SUCCESS","userProvided","authMechanism","user","FileType","Permission","setUid","uid","isDavRessource","source","davService","match","validateData","data","URL","e","startsWith","mtime","Date","crtime","mime","size","permissions","NONE","ALL","owner","attributes","root","service","join","Node","_data","_attributes","_knownDavService","handler","set","target","prop","value","Reflect","deleteProperty","Proxy","replace","basename","extension","extname","dirname","firstMatch","indexOf","slice","length","url","pathname","undefined","READ","split","pop","path","fileid","move","destination","rename","Folder","super","type","isNodeExternalStorage","node","File","scope","backend","t","nodes","_node$attributes","async","response","axios","get","generateOcsUrl","validateStatus","ocs","password","put","generateUrl","backendOptions","showError","statusMessage","showSuccess","Vue","DEFAULT","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","rootPath","_getCurrentUser","getCurrentUser","entryToFolder","ocsEntry","_getCurrentUser2","name","generateRemoteUrl","every","arguments","getStatus","_config","showWarning","isWarning","overlay","document","createElement","classList","add","span","className","innerHTML","title","message","prepend","_nodes$","_nodes$$attributes","INDETERMINATE","view","OC","dialogs","confirm","redirect","location","href","OCP","Files","Router","goToRoute","dir","HIDDEN","allowUserMounting","loadState","Navigation","register","caption","emptyCaption","emptyTitle","icon","columns","render","textContent","_node$attributes2","getContents","_getCurrentUser3","contents","map","folder","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/files_sharing-files_sharing.js b/dist/files_sharing-files_sharing.js index edb4629ef671e..39651712e89e3 100644 --- a/dist/files_sharing-files_sharing.js +++ b/dist/files_sharing-files_sharing.js @@ -1,3 +1,3 @@ /*! For license information please see files_sharing-files_sharing.js.LICENSE.txt */ -(()=>{"use strict";var e,t={64123:(e,t,i)=>{var r,n,s,o=i(31352),a=i(77958),l=i(17499),d=i(62520);null===(r=(0,a.ts)())?(0,l.IY)().setApp("files").build():(0,l.IY)().setApp("files").setUid(r.uid).build(),function(e){e.Folder="folder",e.File="file"}(n||(n={})),function(e){e[e.NONE=0]="NONE",e[e.CREATE=4]="CREATE",e[e.READ=1]="READ",e[e.UPDATE=2]="UPDATE",e[e.DELETE=8]="DELETE",e[e.SHARE=16]="SHARE",e[e.ALL=31]="ALL"}(s||(s={}));const h=function(e,t){return null!==e.match(t)},u=(e,t)=>{if("id"in e&&("number"!=typeof e.id||e.id<0))throw new Error("Invalid id type of value");if(!e.source)throw new Error("Missing mandatory source");try{new URL(e.source)}catch(e){throw new Error("Invalid source format, source must be a valid URL")}if(!e.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if("mtime"in e&&!(e.mtime instanceof Date))throw new Error("Invalid mtime type");if("crtime"in e&&!(e.crtime instanceof Date))throw new Error("Invalid crtime type");if(!e.mime||"string"!=typeof e.mime||!e.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in e&&"number"!=typeof e.size)throw new Error("Invalid size type");if("permissions"in e&&!("number"==typeof e.permissions&&e.permissions>=s.NONE&&e.permissions<=s.ALL))throw new Error("Invalid permissions");if("owner"in e&&null!==e.owner&&"string"!=typeof e.owner)throw new Error("Invalid owner type");if("attributes"in e&&"object"!=typeof e.attributes)throw new Error("Invalid attributes format");if("root"in e&&"string"!=typeof e.root)throw new Error("Invalid root format");if(e.root&&!e.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(e.root&&!e.source.includes(e.root))throw new Error("Root must be part of the source");if(e.root&&h(e.source,t)){const i=e.source.match(t)[0];if(!e.source.includes((0,d.join)(i,e.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}};class c{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(e,t){u(e,t||this._knownDavService),this._data=e;const i={set:(e,t,i)=>(this._data.mtime=new Date,Reflect.set(e,t,i)),deleteProperty:(e,t)=>(this._data.mtime=new Date,Reflect.deleteProperty(e,t))};this._attributes=new Proxy(e.attributes||{},i),delete this._data.attributes,t&&(this._knownDavService=t)}get source(){return this._data.source.replace(/\/$/i,"")}get basename(){return(0,d.basename)(this.source)}get extension(){return(0,d.extname)(this.source)}get dirname(){if(this.root){const e=this.source.indexOf(this.root);return(0,d.dirname)(this.source.slice(e+this.root.length)||"/")}const e=new URL(this.source);return(0,d.dirname)(e.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:s.NONE:s.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return h(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,d.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){const e=this.source.indexOf(this.root);return this.source.slice(e+this.root.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}move(e){u({...this._data,source:e},this._knownDavService),this._data.source=e,this._data.mtime=new Date}rename(e){if(e.includes("/"))throw new Error("Invalid basename");this.move((0,d.dirname)(this.source)+"/"+e)}}class p extends c{get type(){return n.File}}class f extends c{constructor(e){super({...e,mime:"httpd/unix-directory"})}get type(){return n.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}var g=i(79753),m=i(26937);const w=(0,l.IY)().setApp("files_sharing").detectUser().build();var v;const _="/files/".concat(null===(v=(0,a.ts)())||void 0===v?void 0:v.uid),y={"Content-Type":"application/json"},b=function(e){try{var t;const i="folder"===(null==e?void 0:e.item_type),r=!0===(null==e?void 0:e.has_preview),n=i?f:p,s=e.file_source,o=r?(0,g.generateUrl)("/core/preview?fileId={fileid}&x=32&y=32&forceIcon=0",{fileid:s}):void 0,a=(null==e?void 0:e.path)||e.file_target,l=(0,g.generateRemoteUrl)("dav/".concat(_,"/").concat(a).replaceAll(/\/\//gm,"/"));let d=null!=e&&e.item_mtime?new Date(1e3*e.item_mtime):void 0;return(null==e?void 0:e.stime)>((null==e?void 0:e.item_mtime)||0)&&(d=new Date(1e3*e.stime)),new n({id:s,source:l,owner:null==e?void 0:e.uid_owner,mime:null==e?void 0:e.mimetype,mtime:d,size:null==e?void 0:e.item_size,permissions:(null==e?void 0:e.item_permissions)||(null==e?void 0:e.permissions),root:_,attributes:{...e,previewUrl:o,"has-preview":r,favorite:null!=e&&null!==(t=e.tags)&&void 0!==t&&t.includes(window.OC.TAG_FAVORITE)?1:0}})}catch(e){return w.error("Error while parsing OCS entry",{error:e}),null}},I=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/shares");return m.Z.get(t,{headers:y,params:{shared_with_me:e,include_tags:!0}})},C=async function(){var e;let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];const s=[];(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&s.push(I(!0),function(){const e=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/remote_shares");return m.Z.get(e,{headers:y,params:{include_tags:!0}})}()),t&&s.push(I()),i&&s.push(function(){const e=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/shares/pending");return m.Z.get(e,{headers:y,params:{include_tags:!0}})}(),function(){const e=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/remote_shares/pending");return m.Z.get(e,{headers:y,params:{include_tags:!0}})}()),r&&s.push(function(){const e=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/deletedshares");return m.Z.get(e,{headers:y,params:{include_tags:!0}})}());let o=(await Promise.all(s)).map((e=>e.data.ocs.data)).flat().map(b).filter((e=>null!==e));return n.length>0&&(o=o.filter((e=>{var t;return n.includes(null===(t=e.attributes)||void 0===t?void 0:t.share_type)}))),{folder:new f({id:0,source:(0,g.generateRemoteUrl)("dav"+_),owner:(null===(e=(0,a.ts)())||void 0===e?void 0:e.uid)||null}),contents:o}},E="shareoverview",x="sharingin",A="sharingout",L="sharinglinks",O="deletedshares",S="pendingshares";var H=i(69183);const R=(0,l.IY)().setApp("files").detectUser().build();var D;!function(e){e.DEFAULT="default",e.HIDDEN="hidden"}(D||(D={}));class N{constructor(e){var t,i,r;t=this,r=void 0,(i=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(i="_action"))in t?Object.defineProperty(t,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[i]=r,this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get default(){return this._action.default}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||"string"!=typeof e.id)throw new Error("Invalid id");if(!e.displayName||"function"!=typeof e.displayName)throw new Error("Invalid displayName function");if(!e.iconSvgInline||"function"!=typeof e.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!e.exec||"function"!=typeof e.exec)throw new Error("Invalid exec function");if("enabled"in e&&"function"!=typeof e.enabled)throw new Error("Invalid enabled function");if("execBatch"in e&&"function"!=typeof e.execBatch)throw new Error("Invalid execBatch function");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order");if(e.default&&!Object.values(D).includes(e.default))throw new Error("Invalid default");if("inline"in e&&"function"!=typeof e.inline)throw new Error("Invalid inline function");if("renderInline"in e&&"function"!=typeof e.renderInline)throw new Error("Invalid renderInline function")}}const M=function(e){void 0===window._nc_fileactions&&(window._nc_fileactions=[],R.debug("FileActions initialized")),window._nc_fileactions.find((t=>t.id===e.id))?R.error("FileAction ".concat(e.id," already registered"),{action:e}):window._nc_fileactions.push(e)};M(new N({id:"accept-share",displayName:e=>(0,o.uN)("files_sharing","Accept share","Accept shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>e.length>0&&t.id===S,async exec(e){try{const t=!!e.attributes.remote,i=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await m.Z.post(i),(0,H.j8)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0})),M(new N({id:"open-in-files",displayName:()=>(0,o.Iu)("files","Open in Files"),iconSvgInline:()=>"",enabled:(e,t)=>[E,x,A,L].includes(t.id),exec:async e=>(window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:e.fileid},{dir:e.dirname,fileid:e.fileid}),null),default:D.HIDDEN,order:-1e3})),M(new N({id:"reject-share",displayName:e=>(0,o.uN)("files_sharing","Reject share","Reject shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>t.id===S&&0!==e.length&&!e.some((e=>e.attributes.remote_id&&e.attributes.share_type===window.OC.Share.SHARE_TYPE_REMOTE_GROUP)),async exec(e){try{const t=!!e.attributes.remote,i=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/{shareBase}/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await m.Z.delete(i),(0,H.j8)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:2,inline:()=>!0})),M(new N({id:"restore-share",displayName:e=>(0,o.uN)("files_sharing","Restore share","Restore shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>e.length>0&&t.id===O,async exec(e){try{const t=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/deletedshares/{id}",{id:e.attributes.id});return await m.Z.post(t),(0,H.j8)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0})),(()=>{const e=window.OCP.Files.Navigation;e.register({id:E,name:(0,o.Iu)("files_sharing","Shares"),caption:(0,o.Iu)("files_sharing","Overview of shared files."),emptyTitle:(0,o.Iu)("files_sharing","No shares"),emptyCaption:(0,o.Iu)("files_sharing","Files and folders you shared or have been shared with you will show up here"),icon:'',order:20,columns:[],getContents:()=>C()}),e.register({id:x,name:(0,o.Iu)("files_sharing","Shared with you"),caption:(0,o.Iu)("files_sharing","List of files that are shared with you."),emptyTitle:(0,o.Iu)("files_sharing","Nothing shared with you yet"),emptyCaption:(0,o.Iu)("files_sharing","Files and folders others shared with you will show up here"),icon:'',order:1,parent:E,columns:[],getContents:()=>C(!0,!1,!1,!1)}),e.register({id:A,name:(0,o.Iu)("files_sharing","Shared with others"),caption:(0,o.Iu)("files_sharing","List of files that you shared with others."),emptyTitle:(0,o.Iu)("files_sharing","Nothing shared yet"),emptyCaption:(0,o.Iu)("files_sharing","Files and folders you shared will show up here"),icon:'',order:2,parent:E,columns:[],getContents:()=>C(!1,!0,!1,!1)}),e.register({id:L,name:(0,o.Iu)("files_sharing","Shared by link"),caption:(0,o.Iu)("files_sharing","List of files that are shared by link."),emptyTitle:(0,o.Iu)("files_sharing","No shared links"),emptyCaption:(0,o.Iu)("files_sharing","Files and folders you shared by link will show up here"),icon:'',order:3,parent:E,columns:[],getContents:()=>C(!1,!0,!1,!1,[window.OC.Share.SHARE_TYPE_LINK])}),e.register({id:O,name:(0,o.Iu)("files_sharing","Deleted shares"),caption:(0,o.Iu)("files_sharing","List of shares you left."),emptyTitle:(0,o.Iu)("files_sharing","No deleted shares"),emptyCaption:(0,o.Iu)("files_sharing","Shares you have left will show up here"),icon:'',order:4,parent:E,columns:[],getContents:()=>C(!1,!1,!1,!0)}),e.register({id:S,name:(0,o.Iu)("files_sharing","Pending shares"),caption:(0,o.Iu)("files_sharing","List of unapproved shares."),emptyTitle:(0,o.Iu)("files_sharing","No pending shares"),emptyCaption:(0,o.Iu)("files_sharing","Shares you have received but not approved will show up here"),icon:'',order:5,parent:E,columns:[],getContents:()=>C(!1,!1,!0,!1)})})()}},i={};function r(e){var n=i[e];if(void 0!==n)return n.exports;var s=i[e]={id:e,loaded:!1,exports:{}};return t[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=t,e=[],r.O=(t,i,n,s)=>{if(!i){var o=1/0;for(h=0;h=s)&&Object.keys(r.O).every((e=>r.O[e](i[l])))?i.splice(l--,1):(a=!1,s0&&e[h-1][2]>s;h--)e[h]=e[h-1];e[h]=[i,n,s]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=6691,(()=>{r.b=document.baseURI||self.location.href;var e={6691:0};r.O.j=t=>0===e[t];var t=(t,i)=>{var n,s,o=i[0],a=i[1],l=i[2],d=0;if(o.some((t=>0!==e[t]))){for(n in a)r.o(a,n)&&(r.m[n]=a[n]);if(l)var h=l(r)}for(t&&t(i);dr(64123)));n=r.O(n)})(); -//# sourceMappingURL=files_sharing-files_sharing.js.map?v=cc5f91703b7416c8acf6 \ No newline at end of file +(()=>{"use strict";var e,t={43292:(e,t,i)=>{var r,n,s,o=i(31352),a=i(77958),l=i(17499),d=i(62520);null===(r=(0,a.ts)())?(0,l.IY)().setApp("files").build():(0,l.IY)().setApp("files").setUid(r.uid).build(),function(e){e.Folder="folder",e.File="file"}(n||(n={})),function(e){e[e.NONE=0]="NONE",e[e.CREATE=4]="CREATE",e[e.READ=1]="READ",e[e.UPDATE=2]="UPDATE",e[e.DELETE=8]="DELETE",e[e.SHARE=16]="SHARE",e[e.ALL=31]="ALL"}(s||(s={}));const h=function(e,t){return null!==e.match(t)},u=(e,t)=>{if("id"in e&&("number"!=typeof e.id||e.id<0))throw new Error("Invalid id type of value");if(!e.source)throw new Error("Missing mandatory source");try{new URL(e.source)}catch(e){throw new Error("Invalid source format, source must be a valid URL")}if(!e.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if("mtime"in e&&!(e.mtime instanceof Date))throw new Error("Invalid mtime type");if("crtime"in e&&!(e.crtime instanceof Date))throw new Error("Invalid crtime type");if(!e.mime||"string"!=typeof e.mime||!e.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in e&&"number"!=typeof e.size)throw new Error("Invalid size type");if("permissions"in e&&!("number"==typeof e.permissions&&e.permissions>=s.NONE&&e.permissions<=s.ALL))throw new Error("Invalid permissions");if("owner"in e&&null!==e.owner&&"string"!=typeof e.owner)throw new Error("Invalid owner type");if("attributes"in e&&"object"!=typeof e.attributes)throw new Error("Invalid attributes format");if("root"in e&&"string"!=typeof e.root)throw new Error("Invalid root format");if(e.root&&!e.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(e.root&&!e.source.includes(e.root))throw new Error("Root must be part of the source");if(e.root&&h(e.source,t)){const i=e.source.match(t)[0];if(!e.source.includes((0,d.join)(i,e.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}};class c{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(e,t){u(e,t||this._knownDavService),this._data=e;const i={set:(e,t,i)=>(this._data.mtime=new Date,Reflect.set(e,t,i)),deleteProperty:(e,t)=>(this._data.mtime=new Date,Reflect.deleteProperty(e,t))};this._attributes=new Proxy(e.attributes||{},i),delete this._data.attributes,t&&(this._knownDavService=t)}get source(){return this._data.source.replace(/\/$/i,"")}get basename(){return(0,d.basename)(this.source)}get extension(){return(0,d.extname)(this.source)}get dirname(){if(this.root){const e=this.source.indexOf(this.root);return(0,d.dirname)(this.source.slice(e+this.root.length)||"/")}const e=new URL(this.source);return(0,d.dirname)(e.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:s.NONE:s.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return h(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,d.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){const e=this.source.indexOf(this.root);return this.source.slice(e+this.root.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}move(e){u({...this._data,source:e},this._knownDavService),this._data.source=e,this._data.mtime=new Date}rename(e){if(e.includes("/"))throw new Error("Invalid basename");this.move((0,d.dirname)(this.source)+"/"+e)}}class p extends c{get type(){return n.File}}class f extends c{constructor(e){super({...e,mime:"httpd/unix-directory"})}get type(){return n.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}var g=i(79753),m=i(26937);const w=(0,l.IY)().setApp("files_sharing").detectUser().build();var v;const _="/files/".concat(null===(v=(0,a.ts)())||void 0===v?void 0:v.uid),y={"Content-Type":"application/json"},b=function(e){try{var t;const i="folder"===(null==e?void 0:e.item_type),r=!0===(null==e?void 0:e.has_preview),n=i?f:p,s=e.file_source,o=r?(0,g.generateUrl)("/core/preview?fileId={fileid}&x=32&y=32&forceIcon=0",{fileid:s}):void 0,a=(null==e?void 0:e.path)||e.file_target,l=(0,g.generateRemoteUrl)("dav/".concat(_,"/").concat(a).replaceAll(/\/\//gm,"/"));let d=null!=e&&e.item_mtime?new Date(1e3*e.item_mtime):void 0;return(null==e?void 0:e.stime)>((null==e?void 0:e.item_mtime)||0)&&(d=new Date(1e3*e.stime)),new n({id:s,source:l,owner:null==e?void 0:e.uid_owner,mime:null==e?void 0:e.mimetype,mtime:d,size:null==e?void 0:e.item_size,permissions:(null==e?void 0:e.item_permissions)||(null==e?void 0:e.permissions),root:_,attributes:{...e,previewUrl:o,"has-preview":r,favorite:null!=e&&null!==(t=e.tags)&&void 0!==t&&t.includes(window.OC.TAG_FAVORITE)?1:0}})}catch(e){return w.error("Error while parsing OCS entry",{error:e}),null}},I=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/shares");return m.Z.get(t,{headers:y,params:{shared_with_me:e,include_tags:!0}})},C=async function(){var e;let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];const s=[];(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&s.push(I(!0),function(){const e=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/remote_shares");return m.Z.get(e,{headers:y,params:{include_tags:!0}})}()),t&&s.push(I()),i&&s.push(function(){const e=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/shares/pending");return m.Z.get(e,{headers:y,params:{include_tags:!0}})}(),function(){const e=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/remote_shares/pending");return m.Z.get(e,{headers:y,params:{include_tags:!0}})}()),r&&s.push(function(){const e=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/deletedshares");return m.Z.get(e,{headers:y,params:{include_tags:!0}})}());let o=(await Promise.all(s)).map((e=>e.data.ocs.data)).flat().map(b).filter((e=>null!==e));return n.length>0&&(o=o.filter((e=>{var t;return n.includes(null===(t=e.attributes)||void 0===t?void 0:t.share_type)}))),{folder:new f({id:0,source:(0,g.generateRemoteUrl)("dav"+_),owner:(null===(e=(0,a.ts)())||void 0===e?void 0:e.uid)||null}),contents:o}},E="shareoverview",x="sharingin",A="sharingout",L="sharinglinks",O="deletedshares",H="pendingshares";var S=i(69183);const R=(0,l.IY)().setApp("files").detectUser().build();var V;!function(e){e.DEFAULT="default",e.HIDDEN="hidden"}(V||(V={}));class D{constructor(e){var t,i,r;t=this,r=void 0,(i=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(i="_action"))in t?Object.defineProperty(t,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[i]=r,this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get default(){return this._action.default}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||"string"!=typeof e.id)throw new Error("Invalid id");if(!e.displayName||"function"!=typeof e.displayName)throw new Error("Invalid displayName function");if(!e.iconSvgInline||"function"!=typeof e.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!e.exec||"function"!=typeof e.exec)throw new Error("Invalid exec function");if("enabled"in e&&"function"!=typeof e.enabled)throw new Error("Invalid enabled function");if("execBatch"in e&&"function"!=typeof e.execBatch)throw new Error("Invalid execBatch function");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order");if(e.default&&!Object.values(V).includes(e.default))throw new Error("Invalid default");if("inline"in e&&"function"!=typeof e.inline)throw new Error("Invalid inline function");if("renderInline"in e&&"function"!=typeof e.renderInline)throw new Error("Invalid renderInline function")}}const N=function(e){void 0===window._nc_fileactions&&(window._nc_fileactions=[],R.debug("FileActions initialized")),window._nc_fileactions.find((t=>t.id===e.id))?R.error("FileAction ".concat(e.id," already registered"),{action:e}):window._nc_fileactions.push(e)};N(new D({id:"accept-share",displayName:e=>(0,o.uN)("files_sharing","Accept share","Accept shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>e.length>0&&t.id===H,async exec(e){try{const t=!!e.attributes.remote,i=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await m.Z.post(i),(0,S.j8)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0})),N(new D({id:"open-in-files",displayName:()=>(0,o.Iu)("files","Open in Files"),iconSvgInline:()=>"",enabled:(e,t)=>[E,x,A,L].includes(t.id),exec:async e=>(window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:e.fileid},{dir:e.dirname,fileid:e.fileid}),null),order:-1e3,default:V.HIDDEN})),N(new D({id:"reject-share",displayName:e=>(0,o.uN)("files_sharing","Reject share","Reject shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>t.id===H&&0!==e.length&&!e.some((e=>e.attributes.remote_id&&e.attributes.share_type===window.OC.Share.SHARE_TYPE_REMOTE_GROUP)),async exec(e){try{const t=!!e.attributes.remote,i=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/{shareBase}/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await m.Z.delete(i),(0,S.j8)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:2,inline:()=>!0})),N(new D({id:"restore-share",displayName:e=>(0,o.uN)("files_sharing","Restore share","Restore shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>e.length>0&&t.id===O,async exec(e){try{const t=(0,g.generateOcsUrl)("apps/files_sharing/api/v1/deletedshares/{id}",{id:e.attributes.id});return await m.Z.post(t),(0,S.j8)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0})),(()=>{const e=window.OCP.Files.Navigation;e.register({id:E,name:(0,o.Iu)("files_sharing","Shares"),caption:(0,o.Iu)("files_sharing","Overview of shared files."),emptyTitle:(0,o.Iu)("files_sharing","No shares"),emptyCaption:(0,o.Iu)("files_sharing","Files and folders you shared or have been shared with you will show up here"),icon:'',order:20,columns:[],getContents:()=>C()}),e.register({id:x,name:(0,o.Iu)("files_sharing","Shared with you"),caption:(0,o.Iu)("files_sharing","List of files that are shared with you."),emptyTitle:(0,o.Iu)("files_sharing","Nothing shared with you yet"),emptyCaption:(0,o.Iu)("files_sharing","Files and folders others shared with you will show up here"),icon:'',order:1,parent:E,columns:[],getContents:()=>C(!0,!1,!1,!1)}),e.register({id:A,name:(0,o.Iu)("files_sharing","Shared with others"),caption:(0,o.Iu)("files_sharing","List of files that you shared with others."),emptyTitle:(0,o.Iu)("files_sharing","Nothing shared yet"),emptyCaption:(0,o.Iu)("files_sharing","Files and folders you shared will show up here"),icon:'',order:2,parent:E,columns:[],getContents:()=>C(!1,!0,!1,!1)}),e.register({id:L,name:(0,o.Iu)("files_sharing","Shared by link"),caption:(0,o.Iu)("files_sharing","List of files that are shared by link."),emptyTitle:(0,o.Iu)("files_sharing","No shared links"),emptyCaption:(0,o.Iu)("files_sharing","Files and folders you shared by link will show up here"),icon:'',order:3,parent:E,columns:[],getContents:()=>C(!1,!0,!1,!1,[window.OC.Share.SHARE_TYPE_LINK])}),e.register({id:O,name:(0,o.Iu)("files_sharing","Deleted shares"),caption:(0,o.Iu)("files_sharing","List of shares you left."),emptyTitle:(0,o.Iu)("files_sharing","No deleted shares"),emptyCaption:(0,o.Iu)("files_sharing","Shares you have left will show up here"),icon:'',order:4,parent:E,columns:[],getContents:()=>C(!1,!1,!1,!0)}),e.register({id:H,name:(0,o.Iu)("files_sharing","Pending shares"),caption:(0,o.Iu)("files_sharing","List of unapproved shares."),emptyTitle:(0,o.Iu)("files_sharing","No pending shares"),emptyCaption:(0,o.Iu)("files_sharing","Shares you have received but not approved will show up here"),icon:'',order:5,parent:E,columns:[],getContents:()=>C(!1,!1,!0,!1)})})()}},i={};function r(e){var n=i[e];if(void 0!==n)return n.exports;var s=i[e]={id:e,loaded:!1,exports:{}};return t[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=t,e=[],r.O=(t,i,n,s)=>{if(!i){var o=1/0;for(h=0;h=s)&&Object.keys(r.O).every((e=>r.O[e](i[l])))?i.splice(l--,1):(a=!1,s0&&e[h-1][2]>s;h--)e[h]=e[h-1];e[h]=[i,n,s]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=6691,(()=>{r.b=document.baseURI||self.location.href;var e={6691:0};r.O.j=t=>0===e[t];var t=(t,i)=>{var n,s,o=i[0],a=i[1],l=i[2],d=0;if(o.some((t=>0!==e[t]))){for(n in a)r.o(a,n)&&(r.m[n]=a[n]);if(l)var h=l(r)}for(t&&t(i);dr(43292)));n=r.O(n)})(); +//# sourceMappingURL=files_sharing-files_sharing.js.map?v=9acbac19e574228be612 \ No newline at end of file diff --git a/dist/files_sharing-files_sharing.js.map b/dist/files_sharing-files_sharing.js.map index 41c48dff6783a..0300b2c80b870 100644 --- a/dist/files_sharing-files_sharing.js.map +++ b/dist/files_sharing-files_sharing.js.map @@ -1 +1 @@ -{"version":3,"file":"files_sharing-files_sharing.js?v=cc5f91703b7416c8acf6","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.esm.js","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack:///nextcloud/apps/files_sharing/src/views/shares.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/acceptShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/rejectShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/restoreShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/files_sharing.ts","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { getCanonicalLocale } from '@nextcloud/l10n';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { join, basename, extname, dirname } from 'path';\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst humanList = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\nconst humanListBinary = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];\n/**\n * Format a file size in a human-like format. e.g. 42GB\n *\n * @param size in bytes\n * @param skipSmallSizes avoid rendering tiny sizes and return '< 1 KB' instead\n */\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false) {\n if (typeof size === 'string') {\n size = Number(size);\n }\n /*\n * @note This block previously used Log base 1024, per IEC 80000-13;\n * however, the wrong prefix was used. Now we use decimal calculation\n * with base 1000 per the SI. Base 1024 calculation with binary\n * prefixes is optional, but has yet to be added to the UI.\n */\n // Calculate Log with base 1024 or 1000: size = base ** order\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(binaryPrefixes ? 1024 : 1000)) : 0;\n // Stay in range of the byte sizes that are defined\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(binaryPrefixes ? 1024 : 1000, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== '0.0' ? '< 1 ' : '0 ') + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n }\n else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + ' ' + readableFormat;\n}\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst getLogger = user => {\n if (user === null) {\n return getLoggerBuilder()\n .setApp('files')\n .build();\n }\n return getLoggerBuilder()\n .setApp('files')\n .setUid(user.uid)\n .build();\n};\nvar logger = getLogger(getCurrentUser());\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === 'string'\n ? this.getEntryIndex(entry)\n : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn('Entry not found, nothing removed', { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\n getEntries(context) {\n if (context) {\n return this._entries\n .filter(entry => typeof entry.if === 'function' ? entry.if(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex(entry => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass)) {\n throw new Error('Invalid entry');\n }\n if (typeof entry.id !== 'string'\n || typeof entry.displayName !== 'string') {\n throw new Error('Invalid id or displayName property');\n }\n if ((entry.iconClass && typeof entry.iconClass !== 'string')\n || (entry.iconSvgInline && typeof entry.iconSvgInline !== 'string')) {\n throw new Error('Invalid icon provided');\n }\n if (entry.if !== undefined && typeof entry.if !== 'function') {\n throw new Error('Invalid if property');\n }\n if (entry.templateName && typeof entry.templateName !== 'string') {\n throw new Error('Invalid templateName property');\n }\n if (entry.handler && typeof entry.handler !== 'function') {\n throw new Error('Invalid handler property');\n }\n if (!entry.templateName && !entry.handler) {\n throw new Error('At least a templateName or a handler must be provided');\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error('Duplicate entry');\n }\n }\n}\nconst getNewFileMenu = function () {\n if (typeof window._nc_newfilemenu === 'undefined') {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug('NewFileMenu initialized');\n }\n return window._nc_newfilemenu;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar FileType;\n(function (FileType) {\n FileType[\"Folder\"] = \"folder\";\n FileType[\"File\"] = \"file\";\n})(FileType || (FileType = {}));\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Permission;\n(function (Permission) {\n Permission[Permission[\"NONE\"] = 0] = \"NONE\";\n Permission[Permission[\"CREATE\"] = 4] = \"CREATE\";\n Permission[Permission[\"READ\"] = 1] = \"READ\";\n Permission[Permission[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission[Permission[\"DELETE\"] = 8] = \"DELETE\";\n Permission[Permission[\"SHARE\"] = 16] = \"SHARE\";\n Permission[Permission[\"ALL\"] = 31] = \"ALL\";\n})(Permission || (Permission = {}));\n/**\n * Parse the webdav permission string to a permission enum\n * @see https://github.com/nextcloud/server/blob/71f698649f578db19a22457cb9d420fb62c10382/lib/public/Files/DavUtil.php#L58-L88\n */\nconst parseWebdavPermissions = function (permString = '') {\n let permissions = Permission.NONE;\n if (!permString)\n return permissions;\n if (permString.includes('C') || permString.includes('K'))\n permissions |= Permission.CREATE;\n if (permString.includes('G'))\n permissions |= Permission.READ;\n if (permString.includes('W') || permString.includes('N') || permString.includes('V'))\n permissions |= Permission.UPDATE;\n if (permString.includes('D'))\n permissions |= Permission.DELETE;\n if (permString.includes('R'))\n permissions |= Permission.SHARE;\n return permissions;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst isDavRessource = function (source, davService) {\n return source.match(davService) !== null;\n};\n/**\n * Validate Node construct data\n */\nconst validateData = (data, davService) => {\n if ('id' in data && (typeof data.id !== 'number' || data.id < 0)) {\n throw new Error('Invalid id type of value');\n }\n if (!data.source) {\n throw new Error('Missing mandatory source');\n }\n try {\n new URL(data.source);\n }\n catch (e) {\n throw new Error('Invalid source format, source must be a valid URL');\n }\n if (!data.source.startsWith('http')) {\n throw new Error('Invalid source format, only http(s) is supported');\n }\n if ('mtime' in data && !(data.mtime instanceof Date)) {\n throw new Error('Invalid mtime type');\n }\n if ('crtime' in data && !(data.crtime instanceof Date)) {\n throw new Error('Invalid crtime type');\n }\n if (!data.mime || typeof data.mime !== 'string'\n || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error('Missing or invalid mandatory mime');\n }\n if ('size' in data && typeof data.size !== 'number') {\n throw new Error('Invalid size type');\n }\n if ('permissions' in data && !(typeof data.permissions === 'number'\n && data.permissions >= Permission.NONE\n && data.permissions <= Permission.ALL)) {\n throw new Error('Invalid permissions');\n }\n if ('owner' in data\n && data.owner !== null\n && typeof data.owner !== 'string') {\n throw new Error('Invalid owner type');\n }\n if ('attributes' in data && typeof data.attributes !== 'object') {\n throw new Error('Invalid attributes format');\n }\n if ('root' in data && typeof data.root !== 'string') {\n throw new Error('Invalid root format');\n }\n if (data.root && !data.root.startsWith('/')) {\n throw new Error('Root must start with a leading slash');\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error('Root must be part of the source');\n }\n if (data.root && isDavRessource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error('The root must be relative to the service. e.g /files/emma');\n }\n }\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(data, davService) {\n // Validate data\n validateData(data, davService || this._knownDavService);\n this._data = data;\n const handler = {\n set: (target, prop, value) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.deleteProperty(target, prop);\n },\n };\n // Proxy the attributes to update the mtime on change\n this._attributes = new Proxy(data.attributes || {}, handler);\n delete this._data.attributes;\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n */\n get source() {\n // strip any ending slash\n return this._data.source.replace(/\\/$/i, '');\n }\n /**\n * Get this object name\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return dirname(this.source.slice(firstMatch + this.root.length) || '/');\n }\n // This should always be a valid URL\n // as this is tested in the constructor\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n // If this is not a dav ressource, we can only read it\n if (this.owner === null && !this.isDavRessource) {\n return Permission.READ;\n }\n // If the permissions are not defined, we have none\n return this._data.permissions !== undefined\n ? this._data.permissions\n : Permission.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n // Remote ressources have no owner\n if (!this.isDavRessource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return isDavRessource(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n // If provided (recommended), use the root and strip away the ending slash\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, '$1');\n }\n // Use the source to get the root from the dav service\n if (this.isDavRessource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return this.source.slice(firstMatch + this.root.length) || '/';\n }\n return (this.dirname + '/' + this.basename).replace(/\\/\\//g, '/');\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n this._data.source = destination;\n this._data.mtime = new Date();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n */\n rename(basename) {\n if (basename.includes('/')) {\n throw new Error('Invalid basename');\n }\n this.move(dirname(this.source) + '/' + basename);\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Folder extends Node {\n constructor(data) {\n // enforcing mimes\n super({\n ...data,\n mime: 'httpd/unix-directory'\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return 'httpd/unix-directory';\n }\n}\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nconst registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function () {\n return window._nc_fileactions || [];\n};\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n/**\n * Add a new menu entry to the upload manager menu\n */\nconst addNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\n/**\n * Remove a previously registered entry from the upload menu\n */\nconst removeNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\n/**\n * Get the list of registered entries from the upload menu\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\nconst getNewFileMenuEntries = function (context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context);\n};\n\nexport { File, FileAction, FileType, Folder, Node, Permission, addNewFileMenuEntry, formatFileSize, getFileActions, getNewFileMenuEntries, parseWebdavPermissions, registerFileAction, removeNewFileMenuEntry };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","import { Folder, File } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport logger from './logger';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst headers = {\n 'Content-Type': 'application/json',\n};\nconst ocsEntryToNode = function (ocsEntry) {\n try {\n const isFolder = ocsEntry?.item_type === 'folder';\n const hasPreview = ocsEntry?.has_preview === true;\n const Node = isFolder ? Folder : File;\n const fileid = ocsEntry.file_source;\n const previewUrl = hasPreview ? generateUrl('/core/preview?fileId={fileid}&x=32&y=32&forceIcon=0', { fileid }) : undefined;\n // Generate path and strip double slashes\n const path = ocsEntry?.path || ocsEntry.file_target;\n const source = generateRemoteUrl(`dav/${rootPath}/${path}`.replaceAll(/\\/\\//gm, '/'));\n // Prefer share time if more recent than item mtime\n let mtime = ocsEntry?.item_mtime ? new Date((ocsEntry.item_mtime) * 1000) : undefined;\n if (ocsEntry?.stime > (ocsEntry?.item_mtime || 0)) {\n mtime = new Date((ocsEntry.stime) * 1000);\n }\n return new Node({\n id: fileid,\n source,\n owner: ocsEntry?.uid_owner,\n mime: ocsEntry?.mimetype,\n mtime,\n size: ocsEntry?.item_size,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: rootPath,\n attributes: {\n ...ocsEntry,\n previewUrl,\n 'has-preview': hasPreview,\n favorite: ocsEntry?.tags?.includes(window.OC.TAG_FAVORITE) ? 1 : 0,\n },\n });\n }\n catch (error) {\n logger.error('Error while parsing OCS entry', { error });\n return null;\n }\n};\nconst getShares = function (shared_with_me = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me,\n include_tags: true,\n },\n });\n};\nconst getSharedWithYou = function () {\n return getShares(true);\n};\nconst getSharedWithOthers = function () {\n return getShares();\n};\nconst getRemoteShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getPendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getRemotePendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getDeletedShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nexport const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) => {\n const promises = [];\n if (sharedWithYou) {\n promises.push(getSharedWithYou(), getRemoteShares());\n }\n if (sharedWithOthers) {\n promises.push(getSharedWithOthers());\n }\n if (pendingShares) {\n promises.push(getPendingShares(), getRemotePendingShares());\n }\n if (deletedshares) {\n promises.push(getDeletedShares());\n }\n const responses = await Promise.all(promises);\n const data = responses.map((response) => response.data.ocs.data).flat();\n let contents = data.map(ocsEntryToNode).filter((node) => node !== null);\n if (filterTypes.length > 0) {\n contents = contents.filter((node) => filterTypes.includes(node.attributes?.share_type));\n }\n return {\n folder: new Folder({\n id: 0,\n source: generateRemoteUrl('dav' + rootPath),\n owner: getCurrentUser()?.uid || null,\n }),\n contents,\n };\n};\n","import { translate as t } from '@nextcloud/l10n';\nimport AccountClockSvg from '@mdi/svg/svg/account-clock.svg?raw';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountSvg from '@mdi/svg/svg/account.svg?raw';\nimport DeleteSvg from '@mdi/svg/svg/delete.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport ShareVariantSvg from '@mdi/svg/svg/share-variant.svg?raw';\nimport { getContents } from '../services/SharingService';\nexport const sharesViewId = 'shareoverview';\nexport const sharedWithYouViewId = 'sharingin';\nexport const sharedWithOthersViewId = 'sharingout';\nexport const sharingByLinksViewId = 'sharinglinks';\nexport const deletedSharesViewId = 'deletedshares';\nexport const pendingSharesViewId = 'pendingshares';\nexport default () => {\n const Navigation = window.OCP.Files.Navigation;\n Navigation.register({\n id: sharesViewId,\n name: t('files_sharing', 'Shares'),\n caption: t('files_sharing', 'Overview of shared files.'),\n emptyTitle: t('files_sharing', 'No shares'),\n emptyCaption: t('files_sharing', 'Files and folders you shared or have been shared with you will show up here'),\n icon: ShareVariantSvg,\n order: 20,\n columns: [],\n getContents: () => getContents(),\n });\n Navigation.register({\n id: sharedWithYouViewId,\n name: t('files_sharing', 'Shared with you'),\n caption: t('files_sharing', 'List of files that are shared with you.'),\n emptyTitle: t('files_sharing', 'Nothing shared with you yet'),\n emptyCaption: t('files_sharing', 'Files and folders others shared with you will show up here'),\n icon: AccountSvg,\n order: 1,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(true, false, false, false),\n });\n Navigation.register({\n id: sharedWithOthersViewId,\n name: t('files_sharing', 'Shared with others'),\n caption: t('files_sharing', 'List of files that you shared with others.'),\n emptyTitle: t('files_sharing', 'Nothing shared yet'),\n emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'),\n icon: AccountGroupSvg,\n order: 2,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false),\n });\n Navigation.register({\n id: sharingByLinksViewId,\n name: t('files_sharing', 'Shared by link'),\n caption: t('files_sharing', 'List of files that are shared by link.'),\n emptyTitle: t('files_sharing', 'No shared links'),\n emptyCaption: t('files_sharing', 'Files and folders you shared by link will show up here'),\n icon: LinkSvg,\n order: 3,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false, [window.OC.Share.SHARE_TYPE_LINK]),\n });\n Navigation.register({\n id: deletedSharesViewId,\n name: t('files_sharing', 'Deleted shares'),\n caption: t('files_sharing', 'List of shares you left.'),\n emptyTitle: t('files_sharing', 'No deleted shares'),\n emptyCaption: t('files_sharing', 'Shares you have left will show up here'),\n icon: DeleteSvg,\n order: 4,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, false, true),\n });\n Navigation.register({\n id: pendingSharesViewId,\n name: t('files_sharing', 'Pending shares'),\n caption: t('files_sharing', 'List of unapproved shares.'),\n emptyTitle: t('files_sharing', 'No pending shares'),\n emptyCaption: t('files_sharing', 'Shares you have received but not approved will show up here'),\n icon: AccountClockSvg,\n order: 5,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, true, false),\n });\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport logger from '../logger';\nexport var DefaultType;\n(function (DefaultType) {\n DefaultType[\"DEFAULT\"] = \"default\";\n DefaultType[\"HIDDEN\"] = \"hidden\";\n})(DefaultType || (DefaultType = {}));\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CheckSvg from '@mdi/svg/svg/check.svg?raw';\nimport { FileAction, registerFileAction } from '../../../files/src/services/FileAction';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'accept-share',\n displayName: (nodes) => n('files_sharing', 'Accept share', 'Accept shares', nodes.length),\n iconSvgInline: () => CheckSvg,\n enabled: (nodes, view) => nodes.length > 0 && view.id === pendingSharesViewId,\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/pending/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { registerFileAction, FileAction, DefaultType } from '../../../files/src/services/FileAction';\nimport { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'open-in-files',\n displayName: () => t('files', 'Open in Files'),\n iconSvgInline: () => '',\n enabled: (nodes, view) => [\n sharesViewId,\n sharedWithYouViewId,\n sharedWithOthersViewId,\n sharingByLinksViewId,\n // Deleted and pending shares are not\n // accessible in the files app.\n ].includes(view.id),\n async exec(node) {\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files', fileid: node.fileid }, { dir: node.dirname, fileid: node.fileid });\n return null;\n },\n default: DefaultType.HIDDEN,\n // Before openFolderAction\n order: -1000,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CloseSvg from '@mdi/svg/svg/close.svg?raw';\nimport { FileAction, registerFileAction } from '../../../files/src/services/FileAction';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'reject-share',\n displayName: (nodes) => n('files_sharing', 'Reject share', 'Reject shares', nodes.length),\n iconSvgInline: () => CloseSvg,\n enabled: (nodes, view) => {\n if (view.id !== pendingSharesViewId) {\n return false;\n }\n if (nodes.length === 0) {\n return false;\n }\n // disable rejecting group shares from the pending list because they anyway\n // land back into that same list after rejecting them\n if (nodes.some(node => node.attributes.remote_id\n && node.attributes.share_type === window.OC.Share.SHARE_TYPE_REMOTE_GROUP)) {\n return false;\n }\n return true;\n },\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.delete(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 2,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport ArrowULeftTopSvg from '@mdi/svg/svg/arrow-u-left-top.svg?raw';\nimport { FileAction, registerFileAction } from '../../../files/src/services/FileAction';\nimport { deletedSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'restore-share',\n displayName: (nodes) => n('files_sharing', 'Restore share', 'Restore shares', nodes.length),\n iconSvgInline: () => ArrowULeftTopSvg,\n enabled: (nodes, view) => nodes.length > 0 && view.id === deletedSharesViewId,\n async exec(node) {\n try {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares/{id}', {\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport registerSharingViews from './views/shares';\nimport './actions/acceptShareAction';\nimport './actions/openInFilesAction';\nimport './actions/rejectShareAction';\nimport './actions/restoreShareAction';\nregisterSharingViews();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6691;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6691: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(64123)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","FileType","Permission","setApp","build","setUid","uid","isDavRessource","source","davService","match","validateData","data","id","Error","URL","e","startsWith","mtime","Date","crtime","mime","size","permissions","NONE","ALL","owner","attributes","root","includes","service","join","Node","_data","_attributes","_knownDavService","constructor","this","handler","set","target","prop","value","Reflect","deleteProperty","Proxy","replace","basename","extension","extname","dirname","firstMatch","indexOf","slice","length","url","pathname","undefined","READ","split","pop","path","fileid","move","destination","rename","File","type","Folder","super","getLoggerBuilder","detectUser","rootPath","concat","_getCurrentUser","getCurrentUser","headers","ocsEntryToNode","ocsEntry","_ocsEntry$tags","isFolder","item_type","hasPreview","has_preview","file_source","previewUrl","generateUrl","file_target","generateRemoteUrl","replaceAll","item_mtime","stime","uid_owner","mimetype","item_size","item_permissions","favorite","tags","window","OC","TAG_FAVORITE","error","logger","getShares","shared_with_me","arguments","generateOcsUrl","axios","get","params","include_tags","getContents","async","_getCurrentUser2","sharedWithOthers","pendingShares","deletedshares","filterTypes","promises","push","getRemoteShares","getPendingShares","getRemotePendingShares","getDeletedShares","contents","Promise","all","map","response","ocs","flat","filter","node","_node$attributes","share_type","folder","sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","DefaultType","FileAction","action","validateAction","_action","displayName","iconSvgInline","enabled","exec","execBatch","order","default","inline","renderInline","Object","values","registerFileAction","_nc_fileactions","debug","find","search","nodes","n","view","isRemote","remote","shareBase","post","emit","dir","t","OCP","Files","Router","goToRoute","HIDDEN","some","remote_id","Share","SHARE_TYPE_REMOTE_GROUP","delete","Navigation","register","name","caption","emptyTitle","emptyCaption","icon","columns","parent","SHARE_TYPE_LINK","registerSharingViews","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","key","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files_sharing-files_sharing.js?v=9acbac19e574228be612","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.esm.js","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack:///nextcloud/apps/files_sharing/src/views/shares.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/acceptShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/rejectShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/restoreShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/files_sharing.ts","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { getCanonicalLocale } from '@nextcloud/l10n';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { join, basename, extname, dirname } from 'path';\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst humanList = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\nconst humanListBinary = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];\n/**\n * Format a file size in a human-like format. e.g. 42GB\n *\n * @param size in bytes\n * @param skipSmallSizes avoid rendering tiny sizes and return '< 1 KB' instead\n */\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false) {\n if (typeof size === 'string') {\n size = Number(size);\n }\n /*\n * @note This block previously used Log base 1024, per IEC 80000-13;\n * however, the wrong prefix was used. Now we use decimal calculation\n * with base 1000 per the SI. Base 1024 calculation with binary\n * prefixes is optional, but has yet to be added to the UI.\n */\n // Calculate Log with base 1024 or 1000: size = base ** order\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(binaryPrefixes ? 1024 : 1000)) : 0;\n // Stay in range of the byte sizes that are defined\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(binaryPrefixes ? 1024 : 1000, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== '0.0' ? '< 1 ' : '0 ') + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n }\n else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + ' ' + readableFormat;\n}\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst getLogger = user => {\n if (user === null) {\n return getLoggerBuilder()\n .setApp('files')\n .build();\n }\n return getLoggerBuilder()\n .setApp('files')\n .setUid(user.uid)\n .build();\n};\nvar logger = getLogger(getCurrentUser());\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === 'string'\n ? this.getEntryIndex(entry)\n : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn('Entry not found, nothing removed', { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\n getEntries(context) {\n if (context) {\n return this._entries\n .filter(entry => typeof entry.if === 'function' ? entry.if(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex(entry => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass)) {\n throw new Error('Invalid entry');\n }\n if (typeof entry.id !== 'string'\n || typeof entry.displayName !== 'string') {\n throw new Error('Invalid id or displayName property');\n }\n if ((entry.iconClass && typeof entry.iconClass !== 'string')\n || (entry.iconSvgInline && typeof entry.iconSvgInline !== 'string')) {\n throw new Error('Invalid icon provided');\n }\n if (entry.if !== undefined && typeof entry.if !== 'function') {\n throw new Error('Invalid if property');\n }\n if (entry.templateName && typeof entry.templateName !== 'string') {\n throw new Error('Invalid templateName property');\n }\n if (entry.handler && typeof entry.handler !== 'function') {\n throw new Error('Invalid handler property');\n }\n if (!entry.templateName && !entry.handler) {\n throw new Error('At least a templateName or a handler must be provided');\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error('Duplicate entry');\n }\n }\n}\nconst getNewFileMenu = function () {\n if (typeof window._nc_newfilemenu === 'undefined') {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug('NewFileMenu initialized');\n }\n return window._nc_newfilemenu;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar FileType;\n(function (FileType) {\n FileType[\"Folder\"] = \"folder\";\n FileType[\"File\"] = \"file\";\n})(FileType || (FileType = {}));\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Permission;\n(function (Permission) {\n Permission[Permission[\"NONE\"] = 0] = \"NONE\";\n Permission[Permission[\"CREATE\"] = 4] = \"CREATE\";\n Permission[Permission[\"READ\"] = 1] = \"READ\";\n Permission[Permission[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission[Permission[\"DELETE\"] = 8] = \"DELETE\";\n Permission[Permission[\"SHARE\"] = 16] = \"SHARE\";\n Permission[Permission[\"ALL\"] = 31] = \"ALL\";\n})(Permission || (Permission = {}));\n/**\n * Parse the webdav permission string to a permission enum\n * @see https://github.com/nextcloud/server/blob/71f698649f578db19a22457cb9d420fb62c10382/lib/public/Files/DavUtil.php#L58-L88\n */\nconst parseWebdavPermissions = function (permString = '') {\n let permissions = Permission.NONE;\n if (!permString)\n return permissions;\n if (permString.includes('C') || permString.includes('K'))\n permissions |= Permission.CREATE;\n if (permString.includes('G'))\n permissions |= Permission.READ;\n if (permString.includes('W') || permString.includes('N') || permString.includes('V'))\n permissions |= Permission.UPDATE;\n if (permString.includes('D'))\n permissions |= Permission.DELETE;\n if (permString.includes('R'))\n permissions |= Permission.SHARE;\n return permissions;\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst isDavRessource = function (source, davService) {\n return source.match(davService) !== null;\n};\n/**\n * Validate Node construct data\n */\nconst validateData = (data, davService) => {\n if ('id' in data && (typeof data.id !== 'number' || data.id < 0)) {\n throw new Error('Invalid id type of value');\n }\n if (!data.source) {\n throw new Error('Missing mandatory source');\n }\n try {\n new URL(data.source);\n }\n catch (e) {\n throw new Error('Invalid source format, source must be a valid URL');\n }\n if (!data.source.startsWith('http')) {\n throw new Error('Invalid source format, only http(s) is supported');\n }\n if ('mtime' in data && !(data.mtime instanceof Date)) {\n throw new Error('Invalid mtime type');\n }\n if ('crtime' in data && !(data.crtime instanceof Date)) {\n throw new Error('Invalid crtime type');\n }\n if (!data.mime || typeof data.mime !== 'string'\n || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error('Missing or invalid mandatory mime');\n }\n if ('size' in data && typeof data.size !== 'number') {\n throw new Error('Invalid size type');\n }\n if ('permissions' in data && !(typeof data.permissions === 'number'\n && data.permissions >= Permission.NONE\n && data.permissions <= Permission.ALL)) {\n throw new Error('Invalid permissions');\n }\n if ('owner' in data\n && data.owner !== null\n && typeof data.owner !== 'string') {\n throw new Error('Invalid owner type');\n }\n if ('attributes' in data && typeof data.attributes !== 'object') {\n throw new Error('Invalid attributes format');\n }\n if ('root' in data && typeof data.root !== 'string') {\n throw new Error('Invalid root format');\n }\n if (data.root && !data.root.startsWith('/')) {\n throw new Error('Root must start with a leading slash');\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error('Root must be part of the source');\n }\n if (data.root && isDavRessource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error('The root must be relative to the service. e.g /files/emma');\n }\n }\n};\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(data, davService) {\n // Validate data\n validateData(data, davService || this._knownDavService);\n this._data = data;\n const handler = {\n set: (target, prop, value) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n // Edit modification time\n this._data['mtime'] = new Date();\n // Apply original changes\n return Reflect.deleteProperty(target, prop);\n },\n };\n // Proxy the attributes to update the mtime on change\n this._attributes = new Proxy(data.attributes || {}, handler);\n delete this._data.attributes;\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n */\n get source() {\n // strip any ending slash\n return this._data.source.replace(/\\/$/i, '');\n }\n /**\n * Get this object name\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return dirname(this.source.slice(firstMatch + this.root.length) || '/');\n }\n // This should always be a valid URL\n // as this is tested in the constructor\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n // If this is not a dav ressource, we can only read it\n if (this.owner === null && !this.isDavRessource) {\n return Permission.READ;\n }\n // If the permissions are not defined, we have none\n return this._data.permissions !== undefined\n ? this._data.permissions\n : Permission.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n // Remote ressources have no owner\n if (!this.isDavRessource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return isDavRessource(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n // If provided (recommended), use the root and strip away the ending slash\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, '$1');\n }\n // Use the source to get the root from the dav service\n if (this.isDavRessource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n // Using replace would remove all part matching root\n const firstMatch = this.source.indexOf(this.root);\n return this.source.slice(firstMatch + this.root.length) || '/';\n }\n return (this.dirname + '/' + this.basename).replace(/\\/\\//g, '/');\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n this._data.source = destination;\n this._data.mtime = new Date();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n */\n rename(basename) {\n if (basename.includes('/')) {\n throw new Error('Invalid basename');\n }\n this.move(dirname(this.source) + '/' + basename);\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n}\n\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Folder extends Node {\n constructor(data) {\n // enforcing mimes\n super({\n ...data,\n mime: 'httpd/unix-directory'\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return 'httpd/unix-directory';\n }\n}\n\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nconst registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function () {\n return window._nc_fileactions || [];\n};\n\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n/**\n * Add a new menu entry to the upload manager menu\n */\nconst addNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\n/**\n * Remove a previously registered entry from the upload menu\n */\nconst removeNewFileMenuEntry = function (entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\n/**\n * Get the list of registered entries from the upload menu\n *\n * @param {FileInfo} context the creation context. Usually the current folder FileInfo\n */\nconst getNewFileMenuEntries = function (context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context);\n};\n\nexport { File, FileAction, FileType, Folder, Node, Permission, addNewFileMenuEntry, formatFileSize, getFileActions, getNewFileMenuEntries, parseWebdavPermissions, registerFileAction, removeNewFileMenuEntry };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","import { Folder, File } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport logger from './logger';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst headers = {\n 'Content-Type': 'application/json',\n};\nconst ocsEntryToNode = function (ocsEntry) {\n try {\n const isFolder = ocsEntry?.item_type === 'folder';\n const hasPreview = ocsEntry?.has_preview === true;\n const Node = isFolder ? Folder : File;\n const fileid = ocsEntry.file_source;\n const previewUrl = hasPreview ? generateUrl('/core/preview?fileId={fileid}&x=32&y=32&forceIcon=0', { fileid }) : undefined;\n // Generate path and strip double slashes\n const path = ocsEntry?.path || ocsEntry.file_target;\n const source = generateRemoteUrl(`dav/${rootPath}/${path}`.replaceAll(/\\/\\//gm, '/'));\n // Prefer share time if more recent than item mtime\n let mtime = ocsEntry?.item_mtime ? new Date((ocsEntry.item_mtime) * 1000) : undefined;\n if (ocsEntry?.stime > (ocsEntry?.item_mtime || 0)) {\n mtime = new Date((ocsEntry.stime) * 1000);\n }\n return new Node({\n id: fileid,\n source,\n owner: ocsEntry?.uid_owner,\n mime: ocsEntry?.mimetype,\n mtime,\n size: ocsEntry?.item_size,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: rootPath,\n attributes: {\n ...ocsEntry,\n previewUrl,\n 'has-preview': hasPreview,\n favorite: ocsEntry?.tags?.includes(window.OC.TAG_FAVORITE) ? 1 : 0,\n },\n });\n }\n catch (error) {\n logger.error('Error while parsing OCS entry', { error });\n return null;\n }\n};\nconst getShares = function (shared_with_me = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me,\n include_tags: true,\n },\n });\n};\nconst getSharedWithYou = function () {\n return getShares(true);\n};\nconst getSharedWithOthers = function () {\n return getShares();\n};\nconst getRemoteShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getPendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getRemotePendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getDeletedShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nexport const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) => {\n const promises = [];\n if (sharedWithYou) {\n promises.push(getSharedWithYou(), getRemoteShares());\n }\n if (sharedWithOthers) {\n promises.push(getSharedWithOthers());\n }\n if (pendingShares) {\n promises.push(getPendingShares(), getRemotePendingShares());\n }\n if (deletedshares) {\n promises.push(getDeletedShares());\n }\n const responses = await Promise.all(promises);\n const data = responses.map((response) => response.data.ocs.data).flat();\n let contents = data.map(ocsEntryToNode).filter((node) => node !== null);\n if (filterTypes.length > 0) {\n contents = contents.filter((node) => filterTypes.includes(node.attributes?.share_type));\n }\n return {\n folder: new Folder({\n id: 0,\n source: generateRemoteUrl('dav' + rootPath),\n owner: getCurrentUser()?.uid || null,\n }),\n contents,\n };\n};\n","import { translate as t } from '@nextcloud/l10n';\nimport AccountClockSvg from '@mdi/svg/svg/account-clock.svg?raw';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountSvg from '@mdi/svg/svg/account.svg?raw';\nimport DeleteSvg from '@mdi/svg/svg/delete.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport AccouontPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport { getContents } from '../services/SharingService';\nexport const sharesViewId = 'shareoverview';\nexport const sharedWithYouViewId = 'sharingin';\nexport const sharedWithOthersViewId = 'sharingout';\nexport const sharingByLinksViewId = 'sharinglinks';\nexport const deletedSharesViewId = 'deletedshares';\nexport const pendingSharesViewId = 'pendingshares';\nexport default () => {\n const Navigation = window.OCP.Files.Navigation;\n Navigation.register({\n id: sharesViewId,\n name: t('files_sharing', 'Shares'),\n caption: t('files_sharing', 'Overview of shared files.'),\n emptyTitle: t('files_sharing', 'No shares'),\n emptyCaption: t('files_sharing', 'Files and folders you shared or have been shared with you will show up here'),\n icon: AccouontPlusSvg,\n order: 20,\n columns: [],\n getContents: () => getContents(),\n });\n Navigation.register({\n id: sharedWithYouViewId,\n name: t('files_sharing', 'Shared with you'),\n caption: t('files_sharing', 'List of files that are shared with you.'),\n emptyTitle: t('files_sharing', 'Nothing shared with you yet'),\n emptyCaption: t('files_sharing', 'Files and folders others shared with you will show up here'),\n icon: AccountSvg,\n order: 1,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(true, false, false, false),\n });\n Navigation.register({\n id: sharedWithOthersViewId,\n name: t('files_sharing', 'Shared with others'),\n caption: t('files_sharing', 'List of files that you shared with others.'),\n emptyTitle: t('files_sharing', 'Nothing shared yet'),\n emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'),\n icon: AccountGroupSvg,\n order: 2,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false),\n });\n Navigation.register({\n id: sharingByLinksViewId,\n name: t('files_sharing', 'Shared by link'),\n caption: t('files_sharing', 'List of files that are shared by link.'),\n emptyTitle: t('files_sharing', 'No shared links'),\n emptyCaption: t('files_sharing', 'Files and folders you shared by link will show up here'),\n icon: LinkSvg,\n order: 3,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false, [window.OC.Share.SHARE_TYPE_LINK]),\n });\n Navigation.register({\n id: deletedSharesViewId,\n name: t('files_sharing', 'Deleted shares'),\n caption: t('files_sharing', 'List of shares you left.'),\n emptyTitle: t('files_sharing', 'No deleted shares'),\n emptyCaption: t('files_sharing', 'Shares you have left will show up here'),\n icon: DeleteSvg,\n order: 4,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, false, true),\n });\n Navigation.register({\n id: pendingSharesViewId,\n name: t('files_sharing', 'Pending shares'),\n caption: t('files_sharing', 'List of unapproved shares.'),\n emptyTitle: t('files_sharing', 'No pending shares'),\n emptyCaption: t('files_sharing', 'Shares you have received but not approved will show up here'),\n icon: AccountClockSvg,\n order: 5,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, true, false),\n });\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport logger from '../logger';\nexport var DefaultType;\n(function (DefaultType) {\n DefaultType[\"DEFAULT\"] = \"default\";\n DefaultType[\"HIDDEN\"] = \"hidden\";\n})(DefaultType || (DefaultType = {}));\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CheckSvg from '@mdi/svg/svg/check.svg?raw';\nimport { FileAction, registerFileAction } from '../../../files/src/services/FileAction';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'accept-share',\n displayName: (nodes) => n('files_sharing', 'Accept share', 'Accept shares', nodes.length),\n iconSvgInline: () => CheckSvg,\n enabled: (nodes, view) => nodes.length > 0 && view.id === pendingSharesViewId,\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/pending/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { registerFileAction, FileAction, DefaultType } from '../../../files/src/services/FileAction';\nimport { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'open-in-files',\n displayName: () => t('files', 'Open in Files'),\n iconSvgInline: () => '',\n enabled: (nodes, view) => [\n sharesViewId,\n sharedWithYouViewId,\n sharedWithOthersViewId,\n sharingByLinksViewId,\n // Deleted and pending shares are not\n // accessible in the files app.\n ].includes(view.id),\n async exec(node) {\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files', fileid: node.fileid }, { dir: node.dirname, fileid: node.fileid });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CloseSvg from '@mdi/svg/svg/close.svg?raw';\nimport { FileAction, registerFileAction } from '../../../files/src/services/FileAction';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'reject-share',\n displayName: (nodes) => n('files_sharing', 'Reject share', 'Reject shares', nodes.length),\n iconSvgInline: () => CloseSvg,\n enabled: (nodes, view) => {\n if (view.id !== pendingSharesViewId) {\n return false;\n }\n if (nodes.length === 0) {\n return false;\n }\n // disable rejecting group shares from the pending list because they anyway\n // land back into that same list after rejecting them\n if (nodes.some(node => node.attributes.remote_id\n && node.attributes.share_type === window.OC.Share.SHARE_TYPE_REMOTE_GROUP)) {\n return false;\n }\n return true;\n },\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.delete(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 2,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport ArrowULeftTopSvg from '@mdi/svg/svg/arrow-u-left-top.svg?raw';\nimport { FileAction, registerFileAction } from '../../../files/src/services/FileAction';\nimport { deletedSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'restore-share',\n displayName: (nodes) => n('files_sharing', 'Restore share', 'Restore shares', nodes.length),\n iconSvgInline: () => ArrowULeftTopSvg,\n enabled: (nodes, view) => nodes.length > 0 && view.id === deletedSharesViewId,\n async exec(node) {\n try {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares/{id}', {\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport registerSharingViews from './views/shares';\nimport './actions/acceptShareAction';\nimport './actions/openInFilesAction';\nimport './actions/rejectShareAction';\nimport './actions/restoreShareAction';\nregisterSharingViews();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6691;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6691: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(43292)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","FileType","Permission","setApp","build","setUid","uid","isDavRessource","source","davService","match","validateData","data","id","Error","URL","e","startsWith","mtime","Date","crtime","mime","size","permissions","NONE","ALL","owner","attributes","root","includes","service","join","Node","_data","_attributes","_knownDavService","constructor","this","handler","set","target","prop","value","Reflect","deleteProperty","Proxy","replace","basename","extension","extname","dirname","firstMatch","indexOf","slice","length","url","pathname","undefined","READ","split","pop","path","fileid","move","destination","rename","File","type","Folder","super","getLoggerBuilder","detectUser","rootPath","concat","_getCurrentUser","getCurrentUser","headers","ocsEntryToNode","ocsEntry","_ocsEntry$tags","isFolder","item_type","hasPreview","has_preview","file_source","previewUrl","generateUrl","file_target","generateRemoteUrl","replaceAll","item_mtime","stime","uid_owner","mimetype","item_size","item_permissions","favorite","tags","window","OC","TAG_FAVORITE","error","logger","getShares","shared_with_me","arguments","generateOcsUrl","axios","get","params","include_tags","getContents","async","_getCurrentUser2","sharedWithOthers","pendingShares","deletedshares","filterTypes","promises","push","getRemoteShares","getPendingShares","getRemotePendingShares","getDeletedShares","contents","Promise","all","map","response","ocs","flat","filter","node","_node$attributes","share_type","folder","sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","DefaultType","FileAction","action","validateAction","_action","displayName","iconSvgInline","enabled","exec","execBatch","order","default","inline","renderInline","Object","values","registerFileAction","_nc_fileactions","debug","find","search","nodes","n","view","isRemote","remote","shareBase","post","emit","dir","t","OCP","Files","Router","goToRoute","HIDDEN","some","remote_id","Share","SHARE_TYPE_REMOTE_GROUP","delete","Navigation","register","name","caption","emptyTitle","emptyCaption","icon","columns","parent","SHARE_TYPE_LINK","registerSharingViews","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","key","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1e8af05451219..db758334def27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26166,9 +26166,9 @@ } }, "node_modules/webdav": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.2.2.tgz", - "integrity": "sha512-CTnhTTKug7pKbMqcvrnGNr4rV9qhWXV1sLk1PpN4BOskqDT+cEfFx4Y4VlcFXUX6lSUFsQBm9Ka8+6dIe0doQQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.2.3.tgz", + "integrity": "sha512-u5wqJULZhB7IwO3qVD9r0ikt6SMHZ4P4YYtLJ6JrCmSoZuW6KvanXWJAA4LZDm548lK7aCNUsy0VxbBKBXAGrg==", "dependencies": { "@buttercup/fetch": "^0.1.1", "base-64": "^1.0.0", @@ -46694,9 +46694,9 @@ "optional": true }, "webdav": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.2.2.tgz", - "integrity": "sha512-CTnhTTKug7pKbMqcvrnGNr4rV9qhWXV1sLk1PpN4BOskqDT+cEfFx4Y4VlcFXUX6lSUFsQBm9Ka8+6dIe0doQQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.2.3.tgz", + "integrity": "sha512-u5wqJULZhB7IwO3qVD9r0ikt6SMHZ4P4YYtLJ6JrCmSoZuW6KvanXWJAA4LZDm548lK7aCNUsy0VxbBKBXAGrg==", "requires": { "@buttercup/fetch": "^0.1.1", "base-64": "^1.0.0", diff --git a/tests/karma.config.js b/tests/karma.config.js index 1b36dbfed5cdf..064ac196b3ed2 100644 --- a/tests/karma.config.js +++ b/tests/karma.config.js @@ -72,19 +72,6 @@ module.exports = function(config) { ], testFiles: ['apps/files_sharing/tests/js/*.js'] }, - { - name: 'files_external', - srcFiles: [ - // only test these files, others are not ready and mess - // up with the global namespace/classes/state - 'apps/files_external/js/app.js', - 'apps/files_external/js/templates.js', - 'apps/files_external/js/mountsfilelist.js', - 'apps/files_external/js/settings.js', - 'apps/files_external/js/statusmanager.js' - ], - testFiles: ['apps/files_external/tests/js/*.js'] - }, 'systemtags', 'files_trashbin', ]; diff --git a/webpack.modules.js b/webpack.modules.js index 0baced7680d28..bbdbb720245c9 100644 --- a/webpack.modules.js +++ b/webpack.modules.js @@ -54,6 +54,9 @@ module.exports = { 'personal-settings': path.join(__dirname, 'apps/files/src', 'main-personal-settings.js'), 'reference-files': path.join(__dirname, 'apps/files/src', 'reference-files.js'), }, + files_external: { + main: path.join(__dirname, 'apps/files_external/src', 'main.ts'), + }, files_sharing: { additionalScripts: path.join(__dirname, 'apps/files_sharing/src', 'additionalScripts.js'), collaboration: path.join(__dirname, 'apps/files_sharing/src', 'collaborationresourceshandler.js'),